勝ち方は『期待値の式』で決める——リスクリワードと勝率の設計図

リスク管理

相場で長く勝つ人は「当てにいく」のではなく「期待値(EV)を積む」ことに集中します。本稿は、リスクリワード比・勝率・損切り・ポジションサイジングを一本の方程式でつなぎ、日次の実務運用まで落とし込むための完全ガイドです。統計に基づく意思決定により、ぶれないトレードを実装します。

スポンサーリンク
【DMM FX】入金

1. 期待値(EV)の基本式

期待値(EV)は、1回あたりの平均損益を意味します。式は次のとおりです。

EV = 勝率 × 平均利益 − 敗率 × 平均損失

ここで平均利益・平均損失は金額ベースでもよいですが、R(リスク1単位)で統一すると運用判断が容易になります。例えば、エントリーから損切りまでの距離を1Rと定義し、利益が2Rで利確されれば+2R、損切りは−1Rです。

具体例:勝率45%、平均利益2.2R、平均損失1.0Rなら、EV = 0.45×2.2 − 0.55×1.0 = 0.44R。長期的に1トレードあたり+0.44Rを積み上げられる戦略は十分に魅力的です。

2. リスクリワード比と必要勝率

損益比(RR、Risk/RewardではなくReward/Riskの比率を想定)を用いると、損益分岐に必要な勝率は次式で求まります。

損益分岐勝率 = 1 / (1 + RR)

RR=1.0なら50%、RR=2.0なら33.3%、RR=0.5なら66.7%が目安です。多くの初心者が勝率に執着しますが、RRが高ければ勝率は低くてもEVは正にできます。逆にスキャルピング志向でRRが低い戦略は、執行精度・スリッページ・手数料まで設計に織り込まないとEVが崩れます。

RR 損益分岐勝率 コメント
0.5 66.7% 高勝率必須。執行コストに脆弱。
1.0 50.0% バランス型。裁量の影響大。
1.5 40.0% 押し目/戻り売りと好相性。
2.0 33.3% トレンドフォローの基本形。
3.0 25.0% 厳選エントリー。機会損失に注意。

3. 損切りは「設計」する——ATRで距離を定義

損切りは感情ではなくATRなどのボラティリティ指標で距離を設計します。例えば日足ATRが0.80円のUSD/JPYで、エントリー後に1.5×ATR下回りを損切りと定義すれば、1R = 1.5×ATRです。利確は2Rや3Rなど戦略に応じて固定、またはトレーリングで追随します。

固定損切りは検証が容易、トレーリングはトレンド持続時の取りこぼしを減らせます。重要なのは「事前に決めておくこと」です。

4. ポジションサイジング——固定%リスクとケリー基準

資金管理の要は「1回のトレードで口座残高の何%をリスクに晒すか」です。代表的なのは固定%(例:1%)方式です。損切り距離をpipsまたは価格幅で求め、ロット =(口座残高 × 許容リスク%)/(1Rの金額)で算出します。

ケリー基準は理論上の最適化(成長最大化)を与えます。

Kelly = Edge / Variance ≒ (p×b − q)/b
ここでpは勝率、q=1−pbはRR(利益/損失)。半ケリー(0.5×Kelly)を現実的な上限とし、ドローダウンと相場体感に応じてさらに抑えるのが実務です。

5. ドローダウン耐性と破産確率

どれほどEVが正でも、過剰サイズは口座を壊します。可視化が鍵です。次の3点を最低限モニターしましょう。

  1. 最大ドローダウン(MDD)とその期間
  2. リスクリワード/勝率の変動に対する感度(ストレステスト)
  3. 連敗シナリオに耐えるポジションサイズ(許容リスク%)

連敗確率は二項分布で概算可能です。例えば勝率40%の戦略で10連敗が起こる確率は(0.6)^{10} ≈ 0.006(0.6%)ですが、母集団が大きくなれば稀事象は必ず起きます。「絶対に来ない連敗」は存在しない前提でサイズを調整します。

6. ボラティリティ調整(ATR/標準偏差ターゲティング)

同じ1%リスクでも、ボラの高い銘柄では損切り距離が広がりロットが小さくなります。逆にボラ低下局面ではロットが増えます。日次のリスク・パリティの考え方を個別トレードに落とした運用です。これによりリスクの均質化と複利性が高まります。

7. ルールを一枚に——実務コンパクト版

  • 銘柄選定:流動性・スプレッド・執行品質を最優先
  • ボラ測定:ATR(14)を基準。1R=1.5×ATR など事前定義
  • セットアップ:移動平均の傾き+押し目/戻り売り、出来高の確認
  • エントリー:限定指値または成行。スリッページ許容を明確化
  • 損切り・利確:固定Rまたはトレーリング。変更は原則禁止
  • サイズ:口座×1%(上限0.5〜1.0%を推奨)、Half-Kelly超えは不可
  • 同時ポジ:相関管理(同方向のUSD系でリスク合算)
  • 記録:Rベース損益、規律遵守率、エラー種別、ヒートマップ

8. 検証プロトコル(最短ルート)

  1. R定義と利確/損切りの固定化(検証容易性を優先)
  2. 過去2〜5年のデータでウォークフォワード(年代別の構造変化を測る)
  3. スリッページ/手数料を実測に近づける(特にFX/暗号資産)
  4. 勝率×RRの変動レンジでストレス(−10%勝率、RR−0.3など)
  5. MDD<資金許容閾値、破産確率が実用域かをチェック

9. 実例A:USD/JPYのデイ・スイング

条件:日足アップトレンド(5EMA>20EMA)、押し目でエントリー。ATR(14)=0.80円。

  • 1R=1.5×ATR=1.20円
  • 損切り:エントリー−1.20円、利確:+2R(+2.40円)
  • 勝率仮定:42%、RR=2.0 → 損益分岐勝率33.3%を上回る
  • EV:0.42×2 − 0.58×1 = 0.26R
  • サイズ:口座300万円、許容1%=3万円。1R金額=3万円 → ロット算出

10連敗に備え、許容リスク0.7%にセーフティを落とすと、心理的な耐性が上がり実行精度が向上します。

10. 実例B:BTCパーペチュアルのブレイクアウト

条件:4時間足で直近レンジの上抜け。ATR(14)=820ドル。

  • 1R=1.25×ATR=1,025ドル
  • 損切り:レンジ内回帰−1R、利確:+2.5R固定、または高値更新でトレーリング
  • 想定勝率:38%、RR=2.5 → 損益分岐勝率28.6%
  • EV:0.38×2.5 − 0.62×1 = 0.33R
  • 資金1,000,000円、許容0.8%=8,000円/回 → ドル建て換算後に数量決定

資金効率を上げたい場合も、レバレッジ自体でEVは改善しません。サイズは常にR起点で制御します。

11. トレーリングの設計(利を伸ばす)

固定利確は分かりやすい一方、相場が走ると取りこぼします。ATRベースのトレーリング(例:終値が20EMAを終値ベースで明確割れ、または直近安値−1×ATRブレイク)を採用すると、トレンド相場でRRが自然に拡大します。バックテストでは固定2R+トレーリングのハイブリッドがバランス良好なことが多いです。

12. ログの取り方(勝者の習慣)

以下の指標だけで十分に改善ループが回ります。

  • 1トレードあたりR損益、月次合計R、規律遵守率
  • 期待値EV、RR、勝率の移動平均(例:直近30トレード)
  • エラー分類(早すぎる利確、ルール外エントリー、サイズ過大など)
  • セクター/時間帯/銘柄のヒートマップ

13. よくある落とし穴と処方箋

  1. 勝率依存:RRが低いのに微益で利確、損切りは粘る。→ R起点で自動化。
  2. サイズ過大:連敗でメンタル崩壊。→ 0.5〜1.0%固定、Half-Kelly上限。
  3. 検証の不一致:ライブでのスリッページ未考慮。→ 実測値で再検証。
  4. 相関無視:同テーマの銘柄を同時に持つ。→ リスク合算。
  5. ルール変更:ポジション保有中に条件を動かす。→ 禁止、記録して次回へ。

14. 実装例:MQL4(ATR損切り+固定R利確+トレーリング)

以下は学習目的の簡易EAです。口座残高×リスク%からロットを計算し、ATRで損切り距離を定義、2Rで利確、EMA割れでトレーリングを行います。実運用前にデモ検証を必ず行ってください。


//+------------------------------------------------------------------+
//| EV_RR_ATR_Trader.mq4 (educational sample)                        |
//+------------------------------------------------------------------+
#property strict
input double  RiskPercent = 0.8;      // 0.8% per trade
input double  ATRMult     = 1.5;      // 1R = 1.5 * ATR
input int     ATRPeriod   = 14;
input double  TakeR       = 2.0;      // TP at +2R
input int     FastEMA     = 5;
input int     SlowEMA     = 20;
input int     Slippage    = 10;

double PipValuePerLot() { return MarketInfo(Symbol(), MODE_TICKVALUE); }
double PointValue()     { return Point; }

double ATR(int p){ return iATR(Symbol(), PERIOD_H1, p, 1); } // H1例

double LotsByRisk(double riskJPY, double stopJPY){
   if(stopJPY <= 0) return 0;
   double lot = riskJPY / stopJPY;
   // ブローカー最小・ステップへ調整
   double minLot = MarketInfo(Symbol(), MODE_MINLOT);
   double lotStep = MarketInfo(Symbol(), MODE_LOTSTEP);
   lot = MathFloor(lot/lotStep)*lotStep;
   if(lot < minLot) lot = minLot;
   return lot;
}

int start(){
   // EMAの向きでフィルタ(例:上昇時のみ買い)
   double emaF = iMA(Symbol(), PERIOD_H1, FastEMA, 0, MODE_EMA, PRICE_CLOSE, 1);
   double emaS = iMA(Symbol(), PERIOD_H1, SlowEMA, 0, MODE_EMA, PRICE_CLOSE, 1);
   if(emaF <= emaS) return 0;

   double atr = ATR(ATRPeriod);
   double oneR = ATRMult * atr;

   // 価格単位→通貨換算の1R金額を推定
   double stopJPY = oneR / PointValue() * PipValuePerLot();
   double riskJPY = AccountBalance() * (RiskPercent/100.0);
   double lots    = LotsByRisk(riskJPY, stopJPY);

   // 既存ポジ有無チェック(単純化のため1つのみ)
   for(int i=0;i<OrdersTotal();i++){
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) && OrderSymbol()==Symbol()) return 0;
   }

   // 成行買い
   double ask = NormalizeDouble(Ask, Digits);
   double sl  = NormalizeDouble(ask - oneR, Digits);
   double tp  = NormalizeDouble(ask + oneR*TakeR, Digits);
   int ticket = OrderSend(Symbol(), OP_BUY, lots, ask, Slippage, sl, tp, "EV_RR_ATR", 0, 0, clrNONE);
   if(ticket<0){ Print("OrderSend error: ", GetLastError()); }

   // トレーリング(EMA割れで撤退)
   // 実稼働ではOnTick内で都度更新する実装が望ましい
   return 0;
}
    

上記は「R起点のサイズ決定」「ATR損切り」「固定R利確」「トレンド方向フィルタ」の骨格を示しています。実市場ではスプレッド拡大・約定拒否・ロット制約などブローカー仕様を加味して改良してください。

15. まとめ——勝率ではなく期待値で習慣を作る

「勝率=上手さ」ではありません。RR×勝率×サイズの設計こそが累積リターンの源泉です。Rを共通言語にし、ボラに合わせて損切り距離とロットを調整、Half-Kellyを上限とした固定%リスクで粛々と回す——この地味な繰り返しが、長期の資産曲線を右肩上がりにします。

コメント

タイトルとURLをコピーしました