Scarab Diagnostic Field Test #031
QuantConnect Leanには、継続先物のロール(乗り換え)をより適切に制御する機能が必要でした。
ユーザーは主に2つの問題に直面していました:
- 満期前にロールのタイミングを設定できなかった。
- 特定の限月サイクルを選択できなかった。
これは単純なバグではありません。マッピング・ポリシーの問題です。
新しいロール・カレンダーを作成してこれを修正しようとすると、エンジンが壊れてしまいます。マッピング・データを複製すると、エラーが発生します。不適切なパッチは、戦略が意図するものとエンジンが実行するものとの間に乖離(ドリフト)を生じさせる可能性があります。
目標は、ピンポイントで修正できる手法(surgical repair lane)を見つけることでした。
解決策は、既存のマッピング境界内に留めることです。先物エンジンを書き換えるのではなく、Leanが継続先物マッピングを処理する方法を拡張しました。
PRでの変更点:
TradingDaysBeforeExpiryマッピングモードを追加。- これにより、ユーザーはロールのタイミングを取引可能日のオフセットとして設定できるようになります。
- ロール・オフセットが、subscription、history、universe、および mapping-event の各パスを通じて適用されるようになりました。
- オプションの限月サイクル・ウォーキング(contract-month-cycle walking)を追加。
- これにより、汎用的なシーケンスではなく、特定の保有サイクルをサポートします。
- データソースを単一かつ正確に保つため、既存の
LastTradingDayマップの行を再利用しました。
修正をマッピング・ポリシー内に留めることで、エンジンのすべてのコンポーネントがどの契約がアクティブであるかについて一致することを保証します。
結果: 新しいシステムを考案することなく、新しい機能を追加する、範囲を限定した修正を実現しました。ローカルでのビルド検証はエラーなしで通過しました。このPRは、アップストリームでのレビュー準備が整っています。
オプションの学習コミュニティ: https://t.me/GyaanSetuAi