スイング定義はどのようにテストできますか?
スイング定義をテスト可能なルールとして定義する
「スイング定義」をテストするには、まず曖昧さがなく測定可能な定義が必要です。実務上、「スイング」はしばしば数分ではなく数日かけて展開する値動きを指しますが、その考えを運用上のルールに落とし込む必要があります。
実用的な方法は、仮説を立て、その仮説が真であるために何を観測する必要があるかを指定することです。たとえば、仮説は次のようになります。
- あなたのルールセットで「スイング」と判定される市場の値動きであれば、その値動きの方向と大きさは、測定手順のもとで一貫して振る舞うはずである。
ポイントは、同じ価格パスに対して同じルールセットを再度適用したときに、同じラベルが出力される必要があることです(決定性)。次の要素を明示的に定義してください。
- 時間軸ルール:何をスイングとするかを決める最大・最小の保有期間は? 例:「次のX〜Yの時間単位」。
- イベントルール:スイングはどのように始まり、どのように終わるか? たとえば、ピーク/ボトムの変化、しきい値のブレイク、あるいは特定された転換点を用いる。
- 方向ルール:「上方向のスイング」と「下方向のスイング」を何とみなすか?
- 測定ルール:値動きの「重要な部分」を定義する指標は何か(ホライゾンにわたるリターン、捕捉されたレンジ、経験したドローダウンなど)?
- フィルタリングルール:低ボラティリティの期間や流動性の低い時間を除外しますか? 除外するなら、その基準を書きます。
これにより、スイング定義は概念からテスト可能な手順へと変換されます。
仮説、ベースライン、データ分割を指定する
テストは、「特別なスイング構造がない」ことを表す何かと比較して初めて意味を持ちます。ベースラインは、結果を見る前にシンプルで固定されているべきです。
仮説の形式
測定可能なアウトカムを持つように仮説を書きます。測定可能なアウトカムの例:
- アウトカムA(安定性):あなたの定義がスイングとラベル付けしたとき、指定したホライゾンにおける平均的な将来の値動きは、方向に従って一貫して正/負になる。
- アウトカムB(選択性):あなたのルールで特定されたスイングは、スイングでない期間と比べて平均的な特徴が異なる。
「よりうまくいく」といった曖昧な表現は避けて、具体的な指標を使います。
ベースラインの選択
ベースラインは例えば次のようにできます。
- 同じ時間帯に対してイベントをランダムにラベル付けするルール。
- 別の定義を使う素朴なラベリングルール(たとえば、はるかに短い、またははるかに長いホライゾン)。
- 「ノーシグナル」アプローチ:同じホライゾンをランダムなタイムスタンプから測定したときに何が起きるかを評価する。
ベースラインは、あなたの手順の測定方法と一致している必要があります。そうでないと、測定の変更による差なのか、定義そのものによる差なのかを切り分けられません。
データ分割(train vs test)
スイング定義のテストでは、少なくとも2つの重ならないデータ区間を使うべきです。
- 開発(任意):1つの区間を使ってルールを定義し、洗練する。
- 評価(必須):確定したルールを、別の区間に対して1回だけ適用する。
スイング・ラベリングのような概念でよくある失敗モードは、過学習です。ある期間の挙動に偶然一致してしまうルールです。時間ベースの分割は、そのリスクを下げます。
コストと変動要因を考慮する
多くの「スイング定義」テストが失敗するのは、コストと実行上の摩擦を無視しているからです。たとえ売買を行うのではなく定義をテストしているとしても、ラベル付けされた値動きを測定可能なアウトカムへ変換する際には、コストモデルが必要です。
含めるべきコストの種類
計算に含めるコストとして、次のうちどれを含めるかを指定してください。
- スプレッドまたは取引コストの代理指標:取引摩擦によって、各値動きのどれだけが減少するか。
- スリッページ:観測された価格と約定価格の期待される差。
- リバランス頻度:あなたの定義が特定のポイントでエントリー/エグジットを示唆するなら、どれだけ素早く行動できるかに関する仮定が結果に影響します。
数値を正当化できない場合でも、感度テストはできます(たとえば、「低/中/高」のコスト仮定のもとでアウトカムがどう変わるかを評価する)。これにより、楽観的な単一のコスト数値ではなく、ロバスト性に焦点を当てたテストになります。
変動する市場条件
安定したメカニクスと変動する条件を分けて考えます。たとえば、ボラティリティのレジーム、トレンドの強さ、イベント密度は、スイングの見え方を変え得ます。テスト手順では、レジーム記述子(たとえ単純なものであっても)を記録し、その定義がそれらの間で同様に機能するかを確認してください。
また、仮定も明確に述べるべきです。
- どのデータ頻度を使うのか?
- 欠損データ点はどう扱うのか?
- タイムゾーンや取引セッションは、あなたのデータセットにとって関連があるのか?
アウトカムが変わるとしても、定義が期待どおりに振る舞わなくなる「いつ」や「なぜ」を特定できることがよくあります。
失敗モードを狙ったロバストネスチェックを実行する
強力な「スイング定義」テストは、単に1つの結果を報告するだけではありません。その結果が、妥当な変更に対して脆いのか、それとも安定しているのかを確認します。
ロバストネスチェックの種類
少なくとも次のカテゴリを考慮してください。
- パラメータ感度:あなたの定義がしきい値(たとえば最小の値動きサイズ)を使うなら、近傍のしきい値でテストします。結論がわずかな変更で反転するなら、その定義は不安定である可能性が高いです。
- サンプル/期間のロバスト性:複数の時間セグメント(異なる月/年)にわたって評価します。過去の関係は将来の結果を保証しないため、一貫性を探します。
- 実行感度:現実的な遅延を表すために、エントリーとエグジットのタイミングを小さなウィンドウ内で摂動させます。
- コスト感度:複数のコスト仮定のもとで評価を繰り返します。
- レジームのロバスト性:ボラティリティ/トレンドの条件間でアウトカムを比較します。
重要な制限と失敗モード
少なくとも1つの失敗モードは明示的にすべきです。よくあるものには次が含まれます。
- 転換点の曖昧さ:多くの市場ではスイングが重なります。ルールが局所的な極値で開始/終了を定義している場合、小さなノイズによって同じ価格の値動きに対してラベルが変わってしまうかもしれません。
- ホライゾンの不一致:スイングの時間ホライゾンが、あるレジームにおける値動きの実際の持続性と一致しない可能性があります。その結果、測定される「将来のアウトカム」が劣化します。
- 選択バイアス:意思決定の時点では利用できなかった情報を使ってスイングを定義している場合、テストは無効になります。
定義を正しくテストするには、イベントのラベリングは、スイングが宣言された瞬間に利用可能だった情報のみに基づく必要があります。
明確なレポーティングで、他者が独立に検証できるようにする
正確で自己完結的な説明と独立検証の目標を満たすために、レポートには次を含めるべきです。
- スイング・ラベリングの正確なルール(決定的な手順)。
- 正確な仮説とアウトカム指標。
- ベースラインの定義。
- データ分割の方法と境界。
- 使用したコストと実行の仮定。
- 実施したロバストネスチェック(何が変わり、何が一定だったか)。
これらがなければ、別の研究者はテストを再現できません。
検証チェックリストと次の質問
スイング定義がテスト可能な状態かどうかを確認する実践的な方法は、次のように尋ねることです: