Type/to search
2
Follow
484
Followers
Quantitativer MA-Filter-Ansatz: Eine quantitative Umsetzung der Idee des Harness Engineer
Discussions
Created 2026-04-17 11:55:34  Updated 2026-04-21 09:00:18
 0
 374

img

Einleitung: Die Denkweise des Harness Engineer

In der AI/ML-Engineering-Community wird zunehmend eine Denkweise diskutiert – der Harness Engineer.

Sein Kernprinzip ist einfach:

Anstatt selbst aus dem Stegreif Antworten zu geben, baue einen Rahmen, in dem Daten und Experimente selbst die Antworten finden.

Der traditionelle Ingenieur geht so vor: Ich denke, Parameter A ist gut, also schreibe ich Code, um A zu implementieren. Der Harness Engineer hingegen: Ich weiß nicht, ob A, B oder C besser ist. Ich baue einen Rahmen, in dem A, B und C gleichzeitig laufen, und die Daten sagen mir die Antwort.

Der Ingenieur definiert den Suchraum und die Bewertungskriterien, das System optimiert automatisch innerhalb dieses Raums. Diese Denkweise entspricht in ML der Walk-Forward-Optimierung und AutoML; im quantitativen Bereich gibt es ebenfalls natürliche Anwendungsmöglichkeiten.

img

"Teufelscoins": Das Schlachtfeld mit den stärksten Trends

Im Kryptowährungs-Terminmarkt gibt es eine besondere Kategorie von Coins, die besondere Aufmerksamkeit verdient – die sogenannten "Teufelscoins" (Coins mit extrem hohem Handelsvolumen und ausgeprägten Trends).

Diese Coins haben gemeinsame Merkmale:

  • Hohe Kapitalkonzentration, deutliche dominante Handelsaktivität
  • Relativ starke Trendfortsetzung, einmal gestartet, halten die Trends oft länger an
  • Hohe Volatilität, einige Coins mit hohem Handelsvolumen zeigen in bestimmten Zeiträumen starke Trendeigenschaften, bei denen gleitende-Durchschnitts-Strategien in historischen Backtests relativ gut abschneiden

Aus diesem Grund ist die Verwendung der klassischen Zwei-Gleitender-Durchschnitts-Crossover-Strategie bei diesen Coins ein naheliegender und vernünftiger Ansatz. Der schnelle MA kreuzt den langsamen MA von unten – Trendstart, Einstieg; der schnelle MA kreuzt den langsamen MA von oben – Trendumkehr, Ausstieg. Die Logik ist einfach, aber bei Coins mit starken Trends schneidet sie historisch oft nicht schlecht ab.

Es gibt nur ein Problem: Welche Coins sind "Teufelscoins"? Welche MA-Parameter sollen verwendet werden?

Diese beiden Fragen sind bei manueller Beurteilung zu subjektiv. Eine andere Person könnte zu völlig anderen Ergebnissen kommen. Zudem ist der Markt dynamisch: Die heutigen Teufelscoins sind nicht unbedingt die Teufelscoins von morgen, und heute effektive Parameterkombinationen können morgen unwirksam sein.

Genau hier kommt die Denkweise des Harness Engineer ins Spiel.

Anstatt manuell Coins auszuwählen und Parameter zu optimieren, überlässt man beide Fragen dem Rahmen: Definiere die Bewertungskriterien, lass die historischen Daten im Kandidatenraum selbst die Antworten finden. Der Mensch entscheidet nur, welche Metrik zur Beurteilung von Gut/Schlecht verwendet wird, der Rest wird dem System überlassen.

Basierend auf diesem Ansatz wurde die gesamte Strategie als rollierender Screening-Rahmen konzipiert, der in drei Ebenen funktioniert.

img

Strategiearchitektur: Zweistufiges Turniermechanismus

Erste Stufe: Aufbau des Basiswerts-Pools

Aus dem gesamten Markt der Kontrakt-Coins werden die Top 150 Coins nach USD-Handelsvolumen absteigend als Kandidatenpool ausgewählt.

Warum Handelsvolumen? Wo das Volumen hoch ist, konzentriert sich das Kapital am stärksten, Trends bilden sich am leichtesten und die "Teufelscoins" sind am dichtesten. Dieser Schritt erfolgt ohne subjektive Beurteilung, sondern lässt das Marktkapital selbst abstimmen: Je höher das Handelsvolumen, desto eher in den Pool.

javascript
const filtered = tickers .filter(t => t.Symbol.endsWith('USDT.swap')) .map(t => ({ symbol: t.Symbol, quoteVolume: t.Last * t.Volume })) .sort((a, b) => b.quoteVolume - a.quoteVolume) .slice(0, topN) .map(t => t.symbol);

Die Logik ist sehr direkt: USDT-Kontrakte filtern, USD-Handelsvolumen berechnen, absteigend sortieren, die ersten N nehmen. Keine subjektiven Entscheidungen, das Marktkapital stimmt selbst ab.

Zweite Stufe: Zweistufiges Turnier zur Selektion der Besten

Dies ist der Kern der gesamten Strategie und der Ort, an dem das Harness-Prinzip am deutlichsten sichtbar wird.

Die korrekte Ausführungsreihenfolge ist:

img

⚠️ Hinweis: Die Verwendung der Punktzahl des optimalen Parameters als repräsentativen Score für den Coin birgt ein gewisses Overfitting-Risiko – die historisch beste Parameterkombination ist nicht unbedingt auch zukünftig effektiv. Diese Einschränkung wird im späteren Teil des Artikels weiter diskutiert.

Backtest-Prozess

Für jeden Coin im Kandidatenpool werden gleichzeitig mehrere MA-Parameterkombinationen getestet. Jede Kombination läuft unabhängig auf historischen Kerzen, simuliert die reale Crossover-Open/Close-Logik:

javascript
// Durchlaufe jeden Coin × jede Parameterkombination for (const params of maParamsList) { const bt = backtest_MA(records, params.fast, params.slow); // Jeder Backtest liefert unabhängig: Gewinnrate, Gewinn/Verlust-Verhältnis, maximaler Drawdown, Anzahl der Signale }

Die Kernlogik jedes Backtests ist der Standard-Zwei-MA-Crossover:

javascript
const crossUp = fastMA[i-1] <= slowMA[i-1] && fastMA[i] > slowMA[i]; const crossDown = fastMA[i-1] >= slowMA[i-1] && fastMA[i] < slowMA[i]; if (crossUp) position = { side: 'long', entryPrice: records[i].Close }; if (crossDown) position = { side: 'short', entryPrice: records[i].Close };

Gesamtbewertung

Nach dem Backtest wird ein Gesamtscore für jede Parameterkombination berechnet, bestehend aus zwei Teilen:

Gewichteter Standard-Score (Gesamtfaktor 0,80):

javascript
const score = Math.min(bt.winRate * 100, 100) * 0.30 // Gewinnrate, gedeckelt bei 100 + Math.min(bt.profitFactor * 20, 60) * 0.30 // Gewinn/Verlust-Verhältnis, gedeckelt bei 60 + Math.max(0, 1 - bt.maxDrawdown / maxMDD) * 100 * 0.20 // Maximaler Drawdown + volPct * volPctBonus // Bonus für hohe Volatilitäts-Perzentile

Bonus für hohe Volatilitäts-Perzentile: Der letzte Term volPct × volPctBonus (Standardfaktor 10) ist ein unabhängiger Bonus außerhalb der Gewichtungen, der bei gleichem Score Coine bevorzugt, deren aktuelle Volatilität sich in einem hohen historischen Perzentil befindet – da solche Coine tendenziell aktivere Trends aufweisen.

Anzumerken ist, dass diese Gewichtungen und Bonusfaktoren auf Erfahrungswerten basieren und nicht durch Optimierung ermittelt wurden. In der Praxis können sie je nach Marktumfeld weiter angepasst werden.

Erste Wettbewerbsebene: Parameter-Wettbewerb

Die mehreren Parameterkombinationen desselben Coins erzielen jeweils eigene Scores. Der höchste Score wird als repräsentativer Score und als optimaler Parameter für diesen Coin übernommen:

javascript
if (score > bestScore) { bestScore = score; bestResult = bt; bestParams = params; // Speichere die historisch beste Parameterkombination }

Zweite Wettbewerbsebene: Coin-Wettbewerb

Alle Coins zeigen ihre jeweiligen Bestwerte vor. Sortiert nach Score werden die Top N Coins in die Whitelist aufgenommen:

javascript
results.sort((a, b) => b.score - a.score); const whitelist = results.slice(0, topCoins).map(r => r.coin);

Das Endergebnis ist für jeden Whitelist-Coin ein individuell optimiertes MA-Parameterpaar, nicht eine universelle Parametereinstellung für alle Coins.

Dritte Stufe: Live-Handel und Risikomanagement

Mit dem ermittelten Setup wird live gehandelt, ergänzt durch mehrschichtige Risikokontrollen:

Signalauslösung: Echtzeit-Überwachung der MA-Crossover-Zustände der Whitelist-Coins. Golden Cross = Long, Death Cross = Short:

javascript
const crossUp = fastPrev <= slowPrev && fastCur > slowCur; const crossDown = fastPrev >= slowPrev && fastCur < slowCur; if (crossUp) longList.push(sym); if (crossDown && allowShort) shortList.push(sym);

Dynamischer Trailing Stop: Der Trailing Drawdown wird bei Erreichen eines Schwellenwerts aktiviert und mit steigendem Gewinn dynamisch verschärft. Die drei Stufen sind erfahrungsbasiert; Kernlogik: Je höher der Gewinn, desto geringer die Toleranz für einen Drawdown, um bestehende Gewinne zu sichern:

javascript
function getDynamicTrailDrawdown(maxPnl) { if (maxPnl >= 7) return 3; // Hoher Gewinn, geringe Drawdown-Toleranz if (maxPnl >= 4) return 2; return 1.5; // Niedriger Gewinn, etwas mehr Spielraum }

Marktzustandserkennung: Erkennung der BTC-Volatilitäts-Perzentile. In hochvolatilen Umgebungen wird der Positionsfaktor automatisch reduziert, bei extremen Bedingungen wird Short-Selling komplett deaktiviert:

javascript
if (marketState === 'volatile') positionScaleDown = 0.5; else if (marketState === 'high_vol') positionScaleDown = 0.8; else if (marketState === 'low_vol') positionScaleDown = 0.7;

Der gesamte Screening-Prozess wird zyklisch neu gestartet, keine starre Konfiguration; Whitelist und Parameter werden dynamisch an den Markt angepasst.


Grundannahme: Trendfortsetzung

Dieser Rahmen baut auf einer Kernannahme auf:

Coins und Parameter, die in der jüngeren Vergangenheit gut abgeschnitten haben, behalten diese Performance kurzfristig bei.

Dies ist keine Esoterik, dahinter steckt eine gewisse Marktlogik – Kapitalträgheit, Fortsetzung der Marktstimmung, Kohärenz des Verhaltens der großen Akteure – all das kann Trends innerhalb eines bestimmten Zeitfensters gültig halten.

Aber fairerweise muss man sagen: Diese Annahme wurde keiner strengen statistischen Überprüfung unterzogen, sie ist eher eine erfahrungsbasierte Einschätzung. Ob das Framework im Live-Handel nachhaltig funktioniert, muss letztlich an echten Handelsdaten gemessen werden.


Was ist der Unterschied zu einem echten Harness Engineer?

Das muss klargestellt werden.

Diese Strategie hat die Form eines Harness, aber im Vergleich zu einem echten Harness-Engineer-System bestehen noch deutliche Unterschiede:

DimensionEchter HarnessDiese Strategie
Sample-AufteilungTrainings-/Validierungs-/Holdout-TestsetBacktest mit vollständigen historischen Daten, keine Out-of-Sample-Validierung
Overfitting-SchutzExplizite GeneralisierungsprüfungTeilweise abgesichert durch Parameterdiversität, unvollständig
Experiment-IsolationJede Variante läuft unabhängig voneinanderTeilt sich dieselben Kerzen, implizite Kopplung
Go-Live-HürdeMuss Validation bestehen, um deployed zu werdenHöchste Bewertung geht direkt live, keine zweite Validierungsschicht
FehlerakkumulationBewertung der einzelnen Schichten unabhängigBeide Wettbewerbsebenen basieren auf historischen Optima, Fehlerakkumulation

Der Kernunterschied: Ein echter Harness fragt: „Gilt dieses Ergebnis out of sample noch?“ – während die beiden Wettbewerbsebenen dieser Strategie im Grunde nur historische Optima auswählen – Overfitting auf Parameterebene, überlagert von Overfitting auf Münzebene. Ob sich das in die Zukunft fortsetzen lässt, bleibt eine immer offene Frage.


Fazit: Einen toten Punkt am Bootsrand markieren? Oder einen Versuch wert?

In der Welt des Quant-Tradings ist Prognose schon immer extrem schwierig.

Viele würden sagen, dass die Auswahl von Parametern mit historischen Daten für den Live-Handel im Grunde das ist, was man im Chinesischen 刻舟求剑 (das Schwert am Bootsrand markieren) nennt – das Schwert ist schon ins Wasser gefallen, der Strich, den du auf dem Boot geritzt hast, hilft dir nicht, es zu finden. Die Märkte ändern sich, gültige Parameter werden ungültig, die heiße Münze von heute kann morgen wieder verblassen, der optimale gleitende Durchschnitt von gestern ist heute vielleicht nur Rauschen.

Diese Kritik ist nicht unbegründet.

Aber andererseits: Man sollte trotzdem die Versuche machen, die gemacht werden müssen.

Der Kern des Quant-Tradings bestand nie darin, eine für immer richtige Antwort zu finden, sondern darin, systematisch die Gewinnwahrscheinlichkeit inmitten von Unsicherheit zu erhöhen. Selbst wenn du das Schwert am Bootsrand markierst – du brauchst zuerst ein Boot und musst erst den Strich ritzen. Die Positionierung der Strategie (das Boot) ist an sich schon der Beginn des Quant-Tradings.

Natürlich garantiert das Framework selbst keine Gewinne. Ein Framework zu haben, ist nur der Ausgangspunkt. Der wahre Wert liegt in der kontinuierlichen Ausführung und Iteration: Die Whitelist kann angepasst werden, die Scoring-Gewichtung kann geändert werden, der Parameterraum kann erweitert werden, Stop-Loss und Take-Profit können optimiert werden. Jede Anpassung ist ein neues Experiment, das dieses Framework Stück für Stück näher an einen echten Harness bringt.

Der Weg entsteht durch Gehen, nicht durch Denken.

Strategie-Quellcode: Harness Engineer均线筛选量化策略

Comment
All comments (0)
No data
No data
  • 1
iPhone Download
Forums
PINE Language
© 2015 - ∞ INVENTOR PTE LTD (SG)