まえがき
こんにちは、さつま芋です。
言うまでもないことですが、為替相場は理不尽です。
見方を変えると、FXは ほぼ平等に理不尽なんです。
先行者利益もないし、情報格差もないし、基本的に優遇のない環境だと思います。
今回は確率論的な思考として、システムベッティングを考えてみます。
モンテカルロ法
モンテカルロ法とは、決まったルールで掛け金を調節するシステムベッティングです。
詳しい掛け方は省きますが、「モンテカルロ法 カジノ」で調べたら詳しく出てくると思います。
モンテカルロ法の正しい賭け方と計算方法|カジノ攻略法 (casino-winnersclub.com)
そのモンテカルロ法を使った場合、どれくらいの掛け金が必要か、どれくらいの収支になるのかをシミュレーションしてみました。
損益比1倍(2倍配当)で勝率50%を想定し、初期の掛け金は4円から開始しています。
勝ち越すまでを1セットとして1000セット繰り返した結果です。
*************************************
- セット数: 1000
- 合計ゲーム数: 4879
- 最大の掛け金: 700
- 最終収支: 2,368
- 最低収支: -985
この結果を見て何を思うでしょうか。
ドローダウンに耐えられるか
モンテカルロ法の勝敗は、資金力で決まります。
資金力さえクリアすれば、テクニカル分析などの経験則は不要です。
もちろんテクニカル分析をして勝率を上げれば更に有利です。
例えば、勝率が50.1%に(プラス0.1%)上げれば、次のような結果になりました。
*************************************
- セット数: 1000
- 合計ゲーム数: 4058
- 最大の掛け金: 318
- 最終収支: 3,482
- 最低収支: -58
もしも実際に利用するならば、ロットコントロールだけでなく、スプレッドやスワップやスリッページも考えなければなりません。
しかし、手法がルール化されているので再現性は高いはずです。
プログラム
今回 使ったRのコードを載せておきます。
次のサイトを参考にさせてもらいました。
【python】カジノを崩壊させたらしいモンテカルロ法をシミュレーションしてみた - Qiita
set.seed(1)
options(scipen = 100)main <- function() {
# parameter
SET_NUM <- 1000
MAGNIFICATION <- 2 # ゲームの配当倍率
# const
INITIAL_BET_ARRAY <- c(1, 2, 3)
# balance
BALANCE <- 0
# result
gameNum <- 0
maxBet <- 0
minBalance <- 0
balanceRecordArray <- c()
for (game in seq_len(SET_NUM)) {
cat("● ", game, "セット スタート\n")
betArray <-INITIAL_BET_ARRAY
while (TRUE) {
gameNum <- gameNum + 1
bet <- betArray[1] + betArray[length(betArray)]
if (bet > maxBet) {
maxBet <- bet
}
BALANCE <- BALANCE - bet
# 勝負開始
gameResult <- sample(seq_len(MAGNIFICATION), size = 1, prob=c(0.5,0.5))
if (gameResult == 1) { # win
BALANCE <- BALANCE + bet * MAGNIFICATION
betArray <- betArray[-c(1, length(betArray))]
cat(" ◯ 勝ち +", bet * (MAGNIFICATION-1), " | 収支: ", BALANCE, "\n")
} else { # lose
if (BALANCE < minBalance) {
minBalance <- BALANCE
}
betArray[length(betArray) + 1] <- bet
cat(" x 負け -", bet, " | 収支: ", BALANCE, "\n")
}
# 記録
balanceRecordArray[length(balanceRecordArray) + 1] <- BALANCE
# セット終了判定
if (length(betArray) <= 1) {
cat("----- セット終了 -----\n")
break
}
}
}
cat("*************************************\n")
cat("- セット数: ", SET_NUM, "\n")
cat("- 合計ゲーム数: ", gameNum, "\n")
cat("- 最大の掛け金: ", format(maxBet, big.mark = ","), "\n")
cat("- 最終収支: ", format(BALANCE, big.mark = ","), "\n")
cat("- 最低収支: ", format(minBalance, big.mark = ","), "\n")
balanceRecordArray<-c(-1*balanceRecordArray[1], diff(balanceRecordArray))
cumulativeBalance<-cumsum(balanceRecordArray)
plot(cumulativeBalance,type="l",col="blue",xlab="ゲーム数",ylab="収支",main="累積収支グラフ")
abline(h=0,col="red")
}main()
あとがき
FXでは、チャートパターン(経験論)を語る人は多いのに、システムベッティング(確率論)に触れる人は少ないようです。
確率論を支持する私から見れば、初心者に経験論を説くFX解説は危険です。
経験が無駄とは考えていませんが、学習順序がアベコベです。
掛け方を工夫するだけでも、パーレー法でトレンドを狙ったり、ダランベール法でレンジを狙ったりできると思います。
軽く調べただけでも他に色々な賭け方がありました。
ギャンブルの賭け方14種|マーチンゲール法やココモ法などの資金管理・賭け方解説 | ブクサカ (buku-saka.com)
ロットコントロールは面倒ですが、判断に迷う部分は少ないので、総じて扱いやすい手法だと思います。
ただし、ロットコントロールしても運が悪いと破綻するのは、相場の非常に理不尽なところです。
以上、さつま芋でした。