相場で長く勝つ人は「当てにいく」のではなく「期待値(EV)を積む」ことに集中します。本稿は、リスクリワード比・勝率・損切り・ポジションサイジングを一本の方程式でつなぎ、日次の実務運用まで落とし込むための完全ガイドです。統計に基づく意思決定により、ぶれないトレードを実装します。
- 1. 期待値(EV)の基本式
- 2. リスクリワード比と必要勝率
- 3. 損切りは「設計」する——ATRで距離を定義
- 4. ポジションサイジング——固定%リスクとケリー基準
- 5. ドローダウン耐性と破産確率
- 6. ボラティリティ調整(ATR/標準偏差ターゲティング)
- 7. ルールを一枚に——実務コンパクト版
- 8. 検証プロトコル(最短ルート)
- 9. 実例A:USD/JPYのデイ・スイング
- 10. 実例B:BTCパーペチュアルのブレイクアウト
- 11. トレーリングの設計(利を伸ばす)
- 12. ログの取り方(勝者の習慣)
- 13. よくある落とし穴と処方箋
- 14. 実装例:MQL4(ATR損切り+固定R利確+トレーリング)
- 15. まとめ——勝率ではなく期待値で習慣を作る
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−p
、b
はRR(利益/損失)。半ケリー(0.5×Kelly)を現実的な上限とし、ドローダウンと相場体感に応じてさらに抑えるのが実務です。
5. ドローダウン耐性と破産確率
どれほどEVが正でも、過剰サイズは口座を壊します。可視化が鍵です。次の3点を最低限モニターしましょう。
- 最大ドローダウン(MDD)とその期間
- リスクリワード/勝率の変動に対する感度(ストレステスト)
- 連敗シナリオに耐えるポジションサイズ(許容リスク%)
連敗確率は二項分布で概算可能です。例えば勝率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. 検証プロトコル(最短ルート)
- R定義と利確/損切りの固定化(検証容易性を優先)
- 過去2〜5年のデータでウォークフォワード(年代別の構造変化を測る)
- スリッページ/手数料を実測に近づける(特にFX/暗号資産)
- 勝率×RRの変動レンジでストレス(−10%勝率、RR−0.3など)
- 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. よくある落とし穴と処方箋
- 勝率依存:RRが低いのに微益で利確、損切りは粘る。→ R起点で自動化。
- サイズ過大:連敗でメンタル崩壊。→ 0.5〜1.0%固定、Half-Kelly上限。
- 検証の不一致:ライブでのスリッページ未考慮。→ 実測値で再検証。
- 相関無視:同テーマの銘柄を同時に持つ。→ リスク合算。
- ルール変更:ポジション保有中に条件を動かす。→ 禁止、記録して次回へ。
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を上限とした固定%リスクで粛々と回す——この地味な繰り返しが、長期の資産曲線を右肩上がりにします。
コメント