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