明示的な前提で説明する、過去データのワークド例
過去データが意味するもの
過去データとは、記録してから後で計算・比較・テストに使う「過去の観測の集合」です。実務では通常、タイムスタンプ、観測された値(たとえば価格)、そして場合によっては追加フィールド(たとえばスプレッドや執行に関する詳細)などが含まれます。重要な考え方は、過去データは「次に何が起きるかについての約束」ではなく、「過去からの入力データ」であるという点です。
ワークド例が役立つのは、すべての前提を言語化することを強制するからです。つまり、どの日時を使ったのか、リターンをどう計算したのか、どのコストを適用した(または適用しなかった)のか、そしてデータが不完全なときに何が起きるのかを明確にします。
ワークド例はどう機能するか(明示的な前提つき)
以下は、ライブの市場データに依存せずに、過去データの仕組みを示すシナリオです。
シナリオ設定(すべての前提)
連続する10日間の観測を使って、単純なルールを分析しているとします。
- 日付:Day 1 から Day 10 は固定で、変更しません。
- 観測値:各日の「ミッド価格」の履歴データがあります。(これらのミッド価格はデータセットから既に分かっており、リアルタイムで取得していません。)
- リターン定義:その日のデイリーリターンを (Close − Open) / Open と定義します。
- 固定コストの前提:取引コストを 0.10%/1取引と仮定し、ルールが「trade(取引)」と言うときはいつでも適用します。データセットにコストが含まれていない場合は、(a) コストをモデル化するか、(b) コストなし版をテストしたことを明示する必要があります。
- ルールロジック(例):前日のリターンがプラスの日に取引します。そうした取引日では、翌日の Open で買い、同日の Close で決済すると仮定します。
- 執行の前提:履歴データセットに記録されている Open と Close をそのまま使って執行できると仮定します(スリッページなし)。
ミニデータセット
Day 1〜Day 10 のこれらの過去リターンを使います。(これらは記録された値であり、与えられたものとして扱ってください。)
- Day 1: Open 100, Close 102 → return = 0.02 (2%)
- Day 2: Open 102, Close 101 → return = -0.009803…
- Day 3: Open 101, Close 103 → return = 0.019802…
- Day 4: Open 103, Close 103 → return = 0
- Day 5: Open 103, Close 105 → return = 0.019417…
- Day 6: Open 105, Close 104 → return = -0.009523…
- Day 7: Open 104, Close 106 → return = 0.019231…
- Day 8: Open 106, Close 107 → return = 0.009434…
- Day 9: Open 107, Close 106 → return = -0.009345…
- Day 10: Open 106, Close 108 → return = 0.018868…
過去データのルールを適用する
ルールは 前日のリターンの符号 に依存します。
- Day 1 では「前日」のリターンがないため取引できません。したがって Day 2 から開始します。
取引日とは、Day (t−1) のリターンがプラスのときと仮定します。
- Day 2: 前日(Day 1)のリターンがプラス → Day 2 を取引。ネットリターン = (Day 2 return) − 0.10% = -0.009803… − 0.001
- Day 3: 前日(Day 2)のリターンがマイナス → Day 3 は取引なし。ネットリターン = 0
- Day 4: 前日(Day 3)のリターンがプラス → Day 4 を取引。ネットリターン = 0 − 0.001
- Day 5: 前日(Day 4)のリターンがゼロ → プラスではないため取引なし(このルールによる)。ネットリターン = 0
- Day 6: 前日(Day 5)のリターンがプラス → Day 6 を取引。ネットリターン = -0.009523… − 0.001
- Day 7: 前日(Day 6)のリターンがマイナス → Day 7 は取引なし。ネットリターン = 0
- Day 8: 前日(Day 7)のリターンがプラス → Day 8 を取引。ネットリターン = 0.009434… − 0.001
- Day 9: 前日(Day 8)のリターンがプラス → Day 9 を取引。ネットリターン = -0.009345… − 0.001
- Day 10: 前日(Day 9)のリターンがマイナス → Day 10 は取引なし。ネットリターン = 0
この例が示すこと
このシナリオは、過去データの利用が通常要求するものを示しています。
- 計算されるフィールドの明確な定義(リターンがどう計算されるか)。
- ルールのタイミングの明示(次の日に行動するために前日情報を使うかどうか)。
- コストモデルの前提(ここでは、取引ごとに一定の 0.10%)。
- 執行の前提(スリッページなし。記録された Open/Close を使う)。
前提が異なれば、同じ過去データセットを使っていても結果は変わります。
重要な制限と失敗パターン
過去データは有用ですが、「ワークド例」が実際の結果とずれてしまう原因となる限界があります。
DOCUMENT END