7. Cross-Product-Arbitrage-Handelsstrategien (pädagogische Entsprechung)

Referenzquelle: docs/_joinquant_migration_source/Example_07_跨商品套利.ipynb Erste Markdown-Zelle. Hinweis: Das ursprüngliche Notebook war als „Informationsprobleme müssen korrigiert werden“ gekennzeichnet. Dieses Beispiel basiert auf der reproduzierbaren Implementierung in qteasy.

7.1. Strategie und Ideen

  • Wählen Sie zwei stark korrelierte Handelsinstrumente und konstruieren Sie einen Preisspread spread = p1 - p2;

  • Der Mittelwert und die Standardabweichung der Preisdifferenz werden innerhalb eines Scrollfensters berechnet, um den z-Score zu erhalten.

  • Wenn der Z-Score über dem oberen Schwellenwert liegt, werden Short-Spreads eröffnet (Verkauf des ersten Spreads und Kauf des zweiten Spreads); wenn der Z-Score unter dem unteren Schwellenwert liegt, werden Long-Spreads eröffnet.

  • Die Position sollte geschlossen werden, sobald der Kurs sich wieder dem Ausstiegsschwellenwert annähert.

7.2. QtEasy-Implementierungsanleitung

  • Dieser Artikel verwendet das PT-Signal und die Strategieklasse ist Example07CrossSymbolSpread;

  • Um die Datenabhängigkeit zu reduzieren, verwendet das Beispielskript standardmäßig tägliche Indexpaare (näherungsweise zu Lehrzwecken) anstelle der ursprünglichen Minuten-Futures-Kontraktpaare;

  • Wenn Sie lokale Futures-Minutendaten haben, können Sie asset_type/asset_pool/freq im Skript durch die Futures-Version ersetzen.

from examples.strategies.example_strategies import Example07CrossSymbolSpread
import qteasy as qt

stg = Example07CrossSymbolSpread()
op = qt.Operator(stg, signal_type='PT')
op.op_type = 'stepwise'
op.set_blender('1.0*s0')
res = qt.run(
    op,
    mode=1,
    asset_type='IDX',
    asset_pool=['000300.SH', '000905.SH'],
    benchmark_asset='000300.SH',
    invest_start='20190101',
    invest_end='20211231',
    invest_cash_amounts=[1000000],
    trade_batch_size=0.01,
    sell_batch_size=0.01,
    allow_sell_short=True,
    trade_log=True,
)

7.3. Ausführbares Skript

  • examples/strategy_example_07.py