0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【AI投資システム構築】固定ロットを卒業!ケリー基準でロット数を動的に決める

Posted at

先日、「ケリー基準」という非常に参考になる記事を読ませて頂きました。

@tikeda123 さん、ありがとうございます!

この記事を読んで、
「この考え方を自分のFX自動売買システムにも組み込めそうだ」と感じたので、
実際に導入してみました。

運用ルールの前提

私のシステムでは、もともと以下のようなルールを定めています。

  • SL(損切り幅):ATRの3倍
  • TP(利確幅):SLの1.1倍(リスクリワード比 ≒ 1.1:1.0)
  • 対象通貨ペア:複数(複数通貨でポートフォリオ化)
  • ポジション管理:1通貨ペアあたり同時ポジションは最大3つ程度(動的変更)
  • トレード間隔:同一通貨ペアは4時間ごとに予測・エントリー(時間分散)

このルールをそのまま維持しつつ、ロット数の決定ロジックだけをケリー基準に置き換えました。

ケリー基準の導入方針

  • 勝率(WinRate)と損益率(RewardRisk)をもとに、理論上の最適リスク比率を計算
  • 同時オーダー数(3つ)および同時稼働通貨ペア数でケリー比率を分割
  • 証拠金維持率200%を下回らないように(強制ロスカット防止)、最終ロットをクリップ
  • ATR×3 を StopLossPips、TP:SL=1.1:1.0 を RewardRisk として動的にロットを算出

これにより、「リスクを取りすぎず、資金効率を最大化するロット調整」が自動化できます。

MQL4 実装サンプル

以下は、実際に導入したロット計算メソッドの一部です。

MQL4
double WinRate = 0.55;     // 通貨毎の勝率の例(実績値より算出)
double RewardRisk = 1.1;   // TP:SL = 1.1:1.0より
double KellyFraction = WinRate - (1 - WinRate) / RewardRisk; // ≒ 0.14
KellyFraction /= 3;     // 1通貨ペアあたり同時ポジション例(3オーダー)
KellyFraction /= 3;     // 同時稼働通貨ペア数例(3通貨ペア)
KellyFraction *= 0.5;   // ハーフケリーで安全側へ

double Account = AccountBalance();  // 残高
double RiskPerOrder = Account * KellyFraction;

// ATR×3をSLに
double ATR = iATR(Symbol(), PERIOD_H4, 14, 0) * 3;
double StopLossPips = ATR / MarketInfo(Symbol(), MODE_POINT);
double PipValue = MarketInfo(Symbol(), MODE_TICKVALUE); // 1pipsの価値
double LotSize = RiskPerOrder / (StopLossPips * PipValue); // ロットサイズ

※ 実際の運用では、証拠金維持率200%以上を維持できるように
AccountFreeMarginCheck() を用いてロット数を調整しています。

結果と感想

導入してみたところ、計算で得られたロット数は、
これまで固定で設定していた値(残高30万の場合、0.04〜0.06ロット)とほぼ同程度になりました。
偶然ではありますが、過去の経験的なロット設計が、理論的にも妥当だったようです。

今後はこの動的ロット調整を使いながら、勝率と損益率を定期的に更新してケリー比率を再計算し、長期運用での安定性を検証していく予定です。

まとめ

ケリー基準は「期待値最大化の理論」をシンプルにトレードへ応用できる。
ATRやTP/SL比と組み合わせれば、ボラティリティに追従したロット制御が可能。
結果的に、リスクを取りすぎず合理的な運用判断ができるようになる。
と感じました。

最後まで読んでいただきありがとうございました。
今後も新しい理論や考えを導入したら、随時アップデートしていきます。
よろしくお願いいたします。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?