7. クロスプロダクト裁定取引戦略 (教育版と同等)

参照元:docs/_joinquant_migration_source/Example_07_跨商品套利.ipynb 最初のMarkdownセル。注: 元のノートブックには「情報の問題は修正が必要」とマークされていました。この例は、qteasy での再現可能な実装に基づいています。

7.1. 戦略とアイデア

  • 相関性の高い 2 つの取引商品を選択し、価格スプレッド spread = p1 - p2 を構築します。

  • 価格差の平均と標準偏差がスクロール ウィンドウ内で計算され、zscore が取得されます。

  • zscore が上限しきい値を超えると、ショート スプレッドがオープンされます (最初のスプレッドを売り、2 番目のスプレッドを買います)。 zscore が下限しきい値を下回る場合、ロング スプレッドがオープンされます。

  • 価格が決済閾値近くに戻ったらポジションを閉じます。

7.2. QtEasy 実装手順

  • この記事では PT シグナルを使用し、戦略クラスは Example07CrossSymbolSpread です。

  • データの依存性を軽減するために、サンプル スクリプトでは、元の分先物ペアではなく、デフォルトで日次インデックス ペア (教育目的の近似値) を使用します。

  • 現地の先物分データがある場合は、スクリプト内の asset_type/asset_pool/freq を先物バージョンに置き換えることができます。

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. 実行可能スクリプト

  • examples/strategy_example_07.py