ゴールドの5分足で「次の足が上がるか下がるか」を当てるEAは、ほぼ確実にノイズを学習します。5分足の次足は情報量が少なく、予測対象として選ぶには薄すぎるからです。学習データで精度が良く出たときは、むしろ危険信号だと考えています。
そこで質問を変えました。値動きを予測するのではなく、いまの状況が自分の執行ルールの成立する条件集合に入っているかを判定します。条件は「いま観測できるもの」、結果は「まだ観測できないもの」です。前者は分類問題として扱えますが、後者は予測問題になり、扱いにくくなります。
構成
12個の小さなモデルが、同じ1本の足を別の角度から見ます。どれも賢くありません。1つずつ、小さな問いにだけ答えます。
- 直近レンジに対して、この足はどれくらい速く引けたか
- 動きは伸びたのか、戻ったのか
- ボラティリティは拡大か収縮か
- この時間帯は流動性があるか、薄いか
- 価格は境界にいるのか、レンジ中央か
12個の小さな数値を1つの信頼度スコアに統合します。そのスコアがしきい値を超えたときだけ、執行が許可されます。大半の足では超えません。何も建てないのが正常な状態で、不調ではありません。
decision(candle, ctx):
parts = [m(candle, ctx) for m in models] # 12個の小さな答え
conf = fuse(parts) # 1つのスカラー
return None if conf < THRESHOLD else order(candle, ctx, stop=required)
守りたい3つの設計原則
-
パイプラインのどこにも予測を入れない。中間特徴量としても入れません。予測が1回入ると、下流の全レイヤーがその誤差を継承し、モデルが悪いのか条件が悪いのかが判別できなくなります。
-
ストップはリスク管理ではなく、仮説の境界線。建てた瞬間に境界を置きます。そこに触れたら、条件集合の設定が誤っていたという意味です。枚数は別レイヤーが決めます。自分が正しかったかと、いくら失ってよいかを混ぜると、どちらも測れなくなります。
-
沈黙も出力のひとつ。常に建玉を持つ必要がある設計は、条件フィルタが存在しないのと同じです。しきい値そのものがプロダクトです。
代償
正直に書きます。物語を失います。条件を満たさなかった、には語りがありません。だから世に出ている戦略の多くは予測の形を装います。予測は物語になり、しきい値はならないからです。代わりに得るのはデバッグ可能性です。調子が悪いとき、12個のうちどれがどちらへ動いたかを名指しし、その足と突き合わせられます。予測モデルでは当たったかを後から問うことしかできません。
自分の設計に当てる一言テスト
このシステムが動いてよい条件を、一文で言えるか。言えないなら、それはブラックボックスです。ブラックボックスはデバッグできません。