キャピタル・ロングゲーム 実験設計
2026-02-02
AIが記述したコードの詳細はまだ改善の余地があるため、基礎となる実験設計の概念を再整理します。
時間目盛り t
時間目盛り t は離散的であり、市場の各瞬間を表します。分、時間、日などが考えられます。通常は各ローソク足を指します。以下では多くの時系列について議論しますが、それらの独立変数はすべて t です。
ベンチマーク口座
ベンチマーク口座は、いかなる資金管理戦略も使用しない口座です。常に初期ポジションサイズ 1 単位で取引を行います。ベンチマーク口座のパフォーマンスは、ベッティング口座の資金管理を導くために使用されます。
- ベンチマーク口座の累計損益 BasePnL(t) は時系列であり、初期値は 0 です。常に初期ポジションサイズ 1 単位で取引を行い、これによって得られる累計損益曲線です。
ベッティング口座
ベッティング口座は、アンチ・マーチンゲール資金管理戦略を使用し、ベンチマーク口座のパフォーマンスに基づいて動的にポジションサイズを調整します。
重要なパラメータ:
- 目標利益確定金額 M_T:ベッティング戦略のパラメータによって決定されます。
考察対象:
未実現損益 UnrealizedPnL(t):時系列であり、ベンチマーク口座の現在保有ポジションの未実現損益を表します。初期値は 0 です。
実現済み損益 RealizedPnL(t):時系列であり、ベンチマーク口座が既に実現した損益を表します。初期値は 0 です。
累計損益 PnL(t):時系列であり、システムが生み出した損益を表します。常に PnL(t) = UnrealizedPnL(t) + RealizedPnL(t) が成り立ちます。この PnL が正味価値曲線です。任意の初期資金規模に線形スケーリングできます。ベッティングモデルのパフォーマンスは PnL(t) を通じて観察できます。
リスク管理
入力キャッシュフローの決定
入力キャッシュフロー C(t) は時系列であり、入力キャッシュフローの速度(総量ではないことに注意)を表します。
ベンチマーク口座の過去のパフォーマンスに基づいて算出され、動的に更新されます。
推奨される計算方法は、ベンチマーク口座の各取引において、最大の(損失 / 時間長)を C(t) の値として計算することです。
ハードリスク管理ラインの構築
リスク管理ライン RiskLine の初期値は 0 です。
自然に RiskLine(t+1) = RiskLine(t) - C(t) で反復され、利益確定時には RiskLine は 0 にリセットされます。
リスク管理ラインは時間の経過とともに下方に移動します。いかなる時点でも、UnrealizedPnL(t) >= RiskLine(t) が保証されます。
リスク資金 (Venture Capital, VC)
常に VC(t) = UnrealizedPnL(t) - RiskLine(t) が成り立ち、現在ベッティングに利用可能で、完全な損失リスクを負担する資金を表します。リスク資金は常に非負です。
ポジションサイズの決定
原則として、リスク管理条件下で、リスク資金の利用効率を最大化するために、可能な限り積極的に賭けを行います。リスク資金を浪費する行為は無意味です。各ポジションサイズは、最大損失で VC(t) をすべて失う覚悟で設定され、いかなるリスク資金も無駄にしません。
ベンチマーク損切り額 StopLoss(t)
現在の単位ポジションあたりに設定される最大の評価損額、すなわち保有中の損切り額を表します。保有中にこの損切りラインに触れると、その時点でポジションが解消されます。ベンチマーク損切り額は、ベンチマーク口座の過去のパフォーマンスに基づいて算出され、動的に更新されます。
推奨される計算方法は、ベンチマーク口座の各取引において、最大の保有中評価損(最終的な損益ではなく)を StopLoss(t) の値として計算することです。ロングポジションでは最安値を、ショートポジションでは最高値を使用して計算します。
ポジションサイズ は非負の整数であり、ベンチマーク口座のポジションに対するベッティング口座のポジションの倍数を表します。
if StopLoss(t) > 0 then
Position(t) = max(1, floor(VC(t) / StopLoss(t)))
else
Position(t) = 0
end if
注意:StopLoss(t) = 0.01、VC(t) = 1 の場合、ベンチマークポジションの 100 倍のポジションを建てることになります。これは非常に積極的なポジションに見えます。例えば、BTC 契約の最低取引額が 0.0001 BTC であれば、100 倍のポジションでも 0.01 BTC のポジションに過ぎず、それほど恐ろしいものには見えません。ただし、この倍数が大きすぎて実際の操作で実現不可能にならないか、引き続き観察する必要があります。
観察期間
C(t) が 0 または StopLoss(t) が 0 の場合、観察期間を表し、取引は行わず、C(t) と StopLoss(t) のみを更新します。Position(t) は常に 0 です。
利益確定イベント
UnrealizedPnL(t) >= M_T の場合、利益確定イベントがトリガーされ、利益確定処理が行われます。利益確定は保有中にトリガーされるため、UnrealizedPnL(t) は M_T に達することはできても、それを超えることはできません。利益確定イベントをチェックする際には、保有中の最大評価益(ロングでは最高値、ショートでは最安値を使用して計算)を使用する必要があります。
利益確定イベントを記録し、RiskLine(t) = UnrealizedPnL(t) = 0 にリセットして、VC(t) = 0 とします。
RealizedPnL(t) += M_T
UnrealizedPnL(t) = 0
RiskLine(t) = 0
既に観測された情報 C(t) と StopLoss(t) は変更されません。
損切りイベント
保有中の最大評価損が StopLoss(t) 以上の場合、損切りイベントがトリガーされ、損切り処理が行われます。
損切りイベントを記録します。UnrealizedPnL(t) は最大で RiskLine(t) までしか戻すことができません。つまり、VC(t) = 0 です。
損切りも保有中に行われ、損切りが発生すると、その取引は終了します。その後相場が反転したとしても、損失は確定しています。リスク管理資金はゼロになりますが、実際には状態をリセットする必要はなく、損切り後もシステムは継続して実行されます。
ベンチマーク口座、および既に観測された情報 C(t) と StopLoss(t) は変更されません。