相場用数理モデルの考察
はじめに
相場では、良いエントリーを作ることと、そのエントリーをどこで終えるかは別の問題です。
外部botが優れた条件でエントリーできても、すべての取引へ同じTP、同じSL、同じ保有時間を付ければ、その優位性を途中で失うことがあります。一方で、決済へ過剰に介入すると、本来伸びるはずだった利益まで小さくしてしまいます。
そこで本稿では、エントリーを予測し直すのではなく、外部botの動きを尊重しながら、決済へ介入する価値だけを逐次学習する数理モデルを考えます。
相場を予測するのではなく、停止問題として捉える
このモデルは、価格が上がるか下がるかを予測しません。勝率や将来価格も推定しません。
役割は明確に分かれています。
外部botがエントリーします。
外部botは自身のSL、TP、シグナル、手動操作などで自由に決済します。
数理モデルは、指定された一定間隔で `EXIT` または `HOLD` だけを返します。
botが先に決済した場合は、それを正常な終了として受け入れます。
監視間隔を正整数分
です。数理上の選択肢は、
と表せます。
つまり、外部botを別の売買戦略へ作り変えるものではありません。外部botの上に重ねる、決済専用の追加層です。
相場予測を追加する代わりに、問いを次の一つへ絞ります。
このポジションをbotへ最後まで任せるより、途中でEXITした方がよかったのか。
この問いを、完了したポジションの履歴から繰り返し学びます。
botの決済を基準点にする
ポジション
途中決済のbot相対価値は、
です。
bot自身は比較の基準なので、相対価値は常に0です。
ここで0というのは、botの口座損益が0という意味ではありません。あくまで「botを基準に、途中EXITがどれだけ上回ったか、または下回ったか」を測る座標です。
この基準を置くことで、相場、銘柄、価格単位が違っても、決済介入の価値を同じ考え方で扱えます。
ただし、金額ベースのgainをそのまま混ぜると、一件の大きな値動きだけが学習を支配します。そこで、bot決済までに観測できた最後の監視番号を
とします。観測候補がない場合や全て同値の場合は
と正規化すれば、
となります。学習するのは、この正規化された「決済形状」です。金額ベースの損益は消さず、別の評価台帳として残します。
実際に全てのEXITを試す必要はない
通常の学習では、ある行動を試さなければ、その結果は分かりません。しかし決済問題では、モデルが途中でEXITした後もshadow(仮想継続)側で観測を続ければ、外部botが本来どこで決済したかを保存できます。
さらに、各監視時点の清算価値を記録しておけば、ポジション完了後に、
1回目の監視でEXITした場合
2回目の監視でEXITした場合
3回目以降でEXITした場合
最後までbotへ任せた場合
をまとめて比較できます。
実口座で全ての決済時点を試さなくても、一つの完了ポジションから、bot決済までに観測できた全監視時点の相対結果を学べます。結果の到着は遅れますが、完了後には全候補の情報が揃うため、delayed full-informationと呼べる構造です。
一つの完了ポジションから得られるfeedbackは、概念上、
という一本のベクトルです。bot決済より後のEXIT候補は、既にポジションが終了しているためbotと同じ0です。無限に見える候補も、実際には有限部分と厳密な0の末尾として扱えます。
ただし、shadow観測には重要な条件があります。モデルのEXITによってbotの内部状態や次のエントリーが変わり、「介入しなかった世界」を再現できない場合、その記録を正しい反実仮想として使うことはできません。その場合は、無理に0点として学習せず、更新対象から外します。
外部エントリーの性質を、停止価値として抽出する
このモデルは、外部botがどの指標を使い、なぜその価格でエントリーしたかを知る必要がありません。botの内部シグナル、予測値、勝率推定を入力として受け取らないからです。
モデルが観測するのは、外部botが実際に選び、bot本来の決済までshadow観測を完了できた
という停止価値ベクトルの列です。一つの
空でない任意の期間
と読めます。
なら、その期間では第\overline{x}_{\mathcal I}(k)>0 回のEXITがbot決済を上回る傾向にあります。k なら、その時点ではEXITせず、botへ任せた方が優位です。\overline{x}_{\mathcal I}(k)<0値の符号が期間によって反転するなら、外部botのエントリー後の性質も変化しています。
実際の学習では、期間
ここで抽出しているのは、外部botの内部規則やエントリーシグナルを逆算した予測式ではありません。外部botが選んだポジション群に、どの保有時間で優位性が残り、どの時点から失われやすいかという停止価値の形です。
例えば、早いEXITの相対価値が一貫して負なら、外部botの優位性は時間をかけて現れており、HOLDに価値があります。反対に、途中までは利益が残るもののbot決済までに失われやすければ、その監視時点のEXITに正の相対価値が蓄積します。
botと異なるEXIT/HOLDを出す仕組み
ポジション
その分布から、今回の停止方針
botがまだポジションを保有していれば、第
botがそれ以前、または同時刻に決済した場合は、botの決済を優先します。bot本来の決済時刻を
です。
例えば、外部botが本来8回目の監視まで保有するポジションでも、モデルが
このように、外部botはエントリーと本来の決済を決め、数理モデルは過去の停止価値だけから別の決済方針を決めます。botの判断を複製するのではないため、botがHOLDする場面でモデルがEXITすることも、モデルが介入せずbotへ任せることもできます。
最初はbotへ任せ、1ポジション目から学ぶ
学習前のモデルには、介入が有利だと判断できる根拠がありません。そのため、各学習系列の最初のポジションはHOLDし、botへ任せます。
これは、一定数の標本が集まるまで何もしないという意味ではありません。
最初のポジションが完了した直後に、そのポジションで観測できた全てのEXIT候補を学習します。同じ学習系列の次のポジションからは、更新後の状態が使われます。
したがって、恣意的な「最低20件」「100件集まるまで待つ」といった条件は必要ありません。情報量が少ない段階では不確実性を残しながらも、得られた情報は1ポジション目から伝搬します。
固定TP・固定SL・固定決済時刻を置かない
特定のエントリー特性へ固定TPや固定SLを付けると、その値を決めた条件へ最適化されやすくなります。固定された2分、4分、8分だけを候補にする場合も同じです。
本稿のモデルでは、指定監視間隔に現れる全ての有限な監視時点を停止候補とします。監視間隔が1分なら1分、2分、3分と続き、5分なら5分、10分、15分と続きます。
遠い停止時点ほど説明が複雑になるため、複雑さに応じた小さな重みから始めます。しかし、どの有限時点も最初から候補から除外しません。
具体的には、botと全停止時点へ置く初期weightを、
とします。このとき、
です。遠い時点ほど小さなcomplexity costを負いますが、任意の有限
第
と厳密に残ります。したがって、有限horizonで候補を切り捨てなくても、現在必要な部分だけを計算できます。
これにより、固定されたTP、SL、horizon、候補時刻をモデル本体へ埋め込まずに済みます。ユーザーが指定するのは観測の間隔であり、どこで決済するかは過去のbot相対結果から学びます。
なお、parameter-freeとは「設定が一切ない」という意味ではありません。学習率、固定window、最小標本数、忘却係数、switch回数を事前調整しないという意味です。監視間隔、取引費用の計算方法、学習対象の定義は、比較を成立させる契約として必要です。
また、時刻と監視間隔を同じ正整数倍
なら監視番号
現在の値動きを見て、後から都合よく選ばない
このモデルは各監視時点でEXITまたはHOLDを返しますが、現在のポジションの未来を見ながら、停止位置を後から選び直すものではありません。
ポジションを受け取った時点で、それまでに完了している過去の情報だけを使い、botへ任せるか、有限の監視時点でEXITするかを確率的にcommitします。その後は、選ばれた時点までHOLDし、到達すればEXITします。
完了済み履歴を
という形です。現在positionの
この仕組みには二つの意味があります。
現在ポジションの将来情報をdecisionへ混入させません。
まだ確証の弱いEXIT候補も完全には捨てず、学習可能性を残します。
結果を見てから最良時点を選ぶ方法は、過去データ上では強く見えます。しかし実際には、その時点で未来は分かりません。本稿のモデルは、このlook-aheadを構造として禁止しています。
変化するエントリーの優位性へ追従する
外部botのエントリーが持つ優位性は、一定とは限りません。
相場環境によって強くなる場合
徐々に弱くなる場合
EXITが有利だった状態から、HOLDが有利な状態へ反転する場合
複数の状態を行き来する場合
があります。
固定windowだけで学ぶと、短すぎれば振れに反応しすぎ、長すぎれば変化への追従が遅れます。固定の忘却係数にも同じ問題があります。
そこで、異なる開始時点を持つ学習系列を重ね、短い変化も長い継続もcomplexity cost付きで比較します。変化回数を事前に入力するのではなく、実際に変化があった場合だけ、その複雑さを比較上のコストとして支払う考え方です。
成熟round
というstart weightを置き、停止候補
とします。これにより、古い履歴を使う系列だけでなく、新しいregimeの開始を説明する系列も毎round残ります。
各候補へ割り当てた確率を
です。内部のpotential更新式そのものは本稿では省略しますが、設計上は有限回変化する比較規則
の形で制御します。
価値のあるEXIT規則が蓄積すれば、EXITへ割り当てる確率が上がります。価値がなければ、相対価値0のHOLDが自然に残ります。永久にHOLDへ固定することも、根拠なく介入を増やすことも避ける構造です。
プラス域を保有する価値も、同じ枠組みで扱える
含み益があるから即時に利確する、という規則だけでは、外部botが持つ大きな伸びを切ってしまうことがあります。一方で、利益がbot決済までに失われやすいなら、早いEXITには価値があります。
本稿のモデルは、含み益そのものへ固定ルールを付けません。
途中EXITがbot決済より継続的に優れていれば介入を学び、途中EXITが利益を削っているならHOLDを学びます。そのため、「利益が出たら切る」「一定幅まで伸ばす」といった一律の価値観を、外部botのエントリーへ押し付けません。
上段はEXIT側に相対価値があり、下段はHOLD、つまりbotへ任せる側に相対価値があることを表します。
ここで抽出しているのは価格方向の予測ではなく、外部botのエントリーとnative決済の間に存在する、決済時点ごとの相対価値です。
複数ポジションにも、学習を混線させず対応する
ポジションが同時に複数存在すると、先に入ったポジションの結果が返る前に、次の判断が必要になります。未完了の結果を使うと未来情報が混ざり、全てを一つの系列へ押し込むと更新順も曖昧になります。
そこで、未完了ポジションが重なる場合は、独立したlearner laneへ割り当てます。各laneでは、完了した情報だけを順番に学びます。
時点
で表せます。並行数が増えても一つの学習器へ未確定feedbackを混ぜず、必要なlaneだけを追加します。
この構成により、複数ポジションを一つの巨大な多次元最適化へ変えず、単一ポジションの停止問題を保ったまま合成できます。
証拠金、hedge、CloseBy、可変lotなどは、この学習へ混ぜません。それらは取引環境やユーザーの許容リスクに関する別の問題であり、エントリー後の停止価値とは分離すべきだからです。
このモデルが扱う範囲
このモデルの対象は、外部botが作ったポジションの決済判断です。他の資金配分理論と比べるのではなく、モデル本体で扱う問題と、外部へ分離する問題を整理します。
固定TP・SLとの違い
固定TP・SLは、決済する価格幅を先に決めます。単純で扱いやすい一方、性質の異なるエントリーにも同じ幅を課すことになります。
本稿のモデルは、外部botが元から持つTP・SLを正常なbot決済として受け入れます。そのうえで、モデル側から新しい共通幅を押し付けず、途中EXITに相対価値があったかを学びます。
固定保有時間との違い
固定保有時間は、「必ず5分後に決済する」といった一つの時刻を先に選びます。
本稿のモデルでは、指定間隔に現れる全ての有限な監視時点が候補です。特定の時刻だけを正解と決めず、過去のbot相対結果に応じて候補の重みを変えます。
価格予測との違い
価格予測は、将来の方向や変化量を推定します。本稿のモデルは、その予測を行いません。
学ぶのは「価格が上がるか」ではなく、「この監視時点で終える規則が、botへ任せるより有効だったか」です。
リスク管理との分離
証拠金、許容損失、取引量、強制停止などは、利用者の資金条件を守るための仕組みです。これらをエントリー優位性の証拠として学習へ混ぜると、決済価値と資金制約の区別が曖昧になります。
そのため、本稿ではリスク管理を外部層として分離します。数理モデル本体が扱うのは、外部botを比較基準としたEXITとHOLDの選択だけです。
設計上の要点
このモデルの性質は、扱う変数の多さではなく、役割の分け方にあります。
外部botのエントリー規則を変更しません。 モデルは価格方向や勝率を予測せず、外部botが実際に作ったポジションの停止価値だけを学びます。
一つの完了ポジションから、全監視時点を学びます。 実際に選んだEXITだけでなく、shadow観測から作ったfeedback vector全体を更新へ使います。そのため、最初のポジションが完了した時点から情報を伝搬できます。
固定した正解時刻を置きません。 全ての有限な監視時点を候補に残し、遠い時点や頻繁なregime変更にはcomplexity costを与えます。固定window、最小標本数、固定忘却係数は使いません。
判断と検証を同じbot相対座標で行います。 過去の完了情報だけで停止方針をcommitし、その後に得たbot相対gainで更新します。現在ポジションの未来を使って、過去のdecisionを選び直すことはありません。
モデルが介入するのは、完了済みポジションにおいて、あるEXIT候補のbot相対価値が蓄積した場合です。相対価値がなければ、0基準のHOLDが候補として残ります。
正当性のために閉じた論点
停止規則を提案するだけでは、数理モデルは完結しません。何を比較し、どの情報で判断し、遅れて届く結果をどう学習し、理想的な数式を有限精度の実装へどう移すかまで、一つの論理として接続する必要があります。
本稿のモデルでは、正規化されたbot相対停止問題の範囲で、次の論点を定理・補題・実行条件として閉じています。
比較基準が途中で変わらない
全てのポジションで、bot自身の相対gainは、定義上、
です。学習途中で基準を別のTPや都合のよい事後最良値へ置き換えません。
現在ポジションの未来を使わない
停止方針は、完了済み履歴
したがって、現在ポジションの将来価格やbot決済を後から変更しても、既に確定した
任意の正整数監視間隔で同じ定義を使える
時刻と監視間隔を同じ倍率で伸ばしても監視番号が保存されるため、モデルの定義は変わりません。
これはtimestamp-dilation invarianceです。1分、5分、15分で同じ結果になるという主張ではなく、どの正整数分でも同じ数理定義を使えることを意味します。
1ポジション目の情報を捨てない
最初の実行判断はbotへ任せますが、最初の完了feedbackは全停止候補へ反映します。
そのため、恣意的な最小標本数を置かず、同じ学習系列の2ポジション目から更新後の分布を使えます。
有効なEXIT候補を永久に消さない
全ての有限停止時点と、各regime開始候補には正の初期重みがあります。
したがって、一度HOLDが優勢になっても、有限のEXIT候補を永久に確率0へ固定しません。環境が変化し、そのEXITに相対価値が蓄積すれば、再び介入候補として重みを増やせます。
遅延と複数ポジションを定理の外へ追い出さない
未完了ポジションは独立した学習レーンへ分け、各レーンを完了フィードバックだけが並ぶ非遅延系列として扱います。そのうえでレーンごとの結果を合成し、有限回変化する比較規則
という追従regret上限を与えます。遅延や同時ポジションを無視した単一系列の定理を、そのまま実運用へ流用しているわけではありません。
理想数理と有限精度実装を接続する
理想分布を
で測ります。モデルの選択から独立したフィードバック・遅延・打ち切り列を
と結び付けられます。
は実行された正規化gainです。S_{\mathrm{exec}} は比較規則S_c(D) の正規化gainです。c は各成熟レーンの初回HOLDに必要な補正です。M_T^+ は理想分布から有限精度実装への誤差です。\epsilon_i
この式により、regret定理、初回HOLD、複数レーン、有限精度誤差が同じ境界の中で接続されます。再現用の決定的な乱数列を、情報理論上の真の独立乱数と同一視はしません。
観測できない反実仮想を学習へ混ぜない
shadow観測の独立性を確認できない、途中の価格が欠測している、bot本来の決済を識別できない、といった場合は更新を行いません。欠測値を0として補うと、HOLDに有利な架空の証拠が入るためです。
以上は「必ず利益が出る」という定理ではありません。比較基準、因果性、学習伝搬、変化追従、遅延処理、有限精度実装、適用不能条件を、一つの停止問題として矛盾なく完結させるための定理体系です。
負の期待値を、決済だけで自動的に正にはできない
このモデルは、負の期待値を決済だけで自動的に正へ変えるものではありません。利用できる決済上の優位性が存在するときに、それを学習して活用するモデルです。存在しない優位性を新しく作ることはできません。
外部botの1ポジションあたりの期待収益を
モデル介入後の期待収益は、
です。外部botの期待値が負、つまり
です。途中EXITがbotより少し良いだけでは、元の負の期待値を打ち消せない場合があります。正へ変わるには、学習可能な決済上の改善が、元の負の期待値を上回らなければなりません。この条件が成立する保証はありません。
このモデルが制御するのは、定義したbot相対・正規化された停止問題です。すべての取引でbot以上になることや、金額ベースの損益でbotを必ず上回ることは保証しません。
正規化gainと金額ベースのgainの関係は、
です。ポジションごとに尺度
さらに、同じ過去を持ちながら、その先だけが異なる二つの相場経路を考えられます。
過去が同じなら、因果的なモデルは同じ判断を出します。そのため、EXITが正しい未来とHOLDが正しい未来の両方を、事前に必ず当てることはできません。これが、この停止問題におけるNo-Free-Lunch境界です。
実運用で必要な観測条件
実際に使うには、次の条件も必要です。
spread、手数料、slippageを含む同一の決済価値を記録すること
モデルEXIT後も独立したshadow botを継続できること
欠測や識別不能な記録を、都合よく0として学習しないこと
外部botとモデルの同時刻eventを完全な順序で扱うこと
実注文を担当するadapterを別途用意すること
数理モデルと実運用基盤は同じではありません。理論的に正しい比較を、live環境で壊さず観測できるかは、接続実装側の責任です。
想定する使い方
このモデルが想定している流れは、次のとおりです。
外部botが自由にエントリーします。
モデルは過去の完了情報だけから、今回の停止方針をcommitします。
指定間隔ごとに、外部へEXITまたはHOLDを返します。
bot自身が先に決済した場合は、その決済を優先して受理します。
モデルがEXITしても、shadow側ではbotのnative決済まで観測を続けます。
bot決済後、全監視時点のbot相対価値を計算します。
完了した情報を次のポジションへ伝搬します。
外部botは自由に動き続け、数理モデルは横から決済だけへ介入します。主従を逆転させず、外部botのエントリー優位性を活かすための役割分担です。
まとめ
本稿の数理モデルは、相場を当てるためのモデルではありません。
外部botが作ったポジションに対して、
botへ任せるHOLD
botより前に終えるEXIT
のどちらに相対価値があるかを、完了後の全時点から逐次学習するモデルです。
botの内部シグナルを再現するのではなく、botが実際に選んだポジション群から、保有時間ごとの停止価値を抽出します。その結果に基づいて独自の停止方針を作るため、botが保有を続ける場面でモデルがEXITすることもできます。
固定TPや固定SLで外部エントリーの性質を決めつけず、価格予測を追加せず、価値のある介入だけを増やします。価値がなければ、botへ任せること自体が正しい選択として残ります。
ただし、元の期待値が負なら、決済上の改善がその負値を上回らない限り、期待値は正になりません。
相場の複雑さを、さらに多くの予測変数で覆うのではなく、
という最小構成へ整理した点が、このモデルの中心的な考え方です。


コメント