さつま芋の勉強日記

投機の勉強記録を中心に発信しています。

MENU

連敗の分布を図示する:コイン投げの確率

 

まえがき

こんにちは、さつま芋です。

 

ここ何回かのブログ投稿はランダムのシミュレーションを続けています。

 

私としては、需給が一切関係しないランダムをFXの基礎とすることは意味があると考えています。

 

色々と試行して感じることですが、確率を感覚で認識することは常人には至難だと思います。

 

今回もコイン投げで確率を勉強してみます。

 

 

連敗の分布

コインのように50%の事象でも裏が続くことは珍しくありませんが、100万回も投げたら20連敗も起こり得ることは以前に紹介した通りです。

 

コイン投げのシミュレーション結果による確率の雑談 - さつま芋の勉強日記 (hatenablog.com)

 

毎日100回のトレードを1年250日で40年間続けたら100万回ですから、仕方ないくらいの不運かもしれません。

 

そこで、1年250日間 毎日100回のトレードを続けた場合を想定し、25000回のコイン投げの結果を棒グラフにしてみました。

 

ちなみに、裏を負けとしています。

 

 

連敗数 回数 割合
1 3100 12.40%
2 1569 6.28%
3 798 3.19%
4 439 1.76%
5 188 0.75%
6 83 0.33%
7 60 0.24%
8 21 0.08%
9 13 0.05%
10 7 0.03%
11 4 0.02%
12 1 0.00%

 

補足ですが、表の見方には注意してください。

 

1連敗が12.40%となっているのは、勝っていた状態から1回負けて次は勝った状態ということ0.5×0.5×0.5=0.125ということだと考えられます。

 

 

コード

 
# ランダム種を指定
set.seed(123)

# シミュレーション回数
n <- 25000

# コインの表が出る確率
p <- 0.5

# コインを投げる関数
coin_toss <- function(n) {
  # 連続する裏の数
  count <- 0
  # 裏が出た回数
  tails <- 0
  # 表が出た回数
  heads <- 0
  # 連敗数を記録するリスト
  losing_streaks <- integer(n)
  # 累積和
  cumsum <- numeric(n)

  for (i in 1:n) {
    # コインを投げる
    toss <- sample(c("heads", "tails"), 1, prob = c(p, 1-p))
    # 裏が出た場合
    if (toss == "tails") {
      count <- count + 1
      tails <- tails + 1
    } else {
      # 表が出た場合
      if (count > 0) {
        # 連敗数を記録
        losing_streaks[count] <- losing_streaks[count] + 1
      }
      count <- 0
      heads <- heads + 1
    }

    # 累積和を更新
    if(i == 1) {
      cumsum[i] <- ifelse(toss == "heads", 1, -1)
    } else {
      cumsum[i] <- cumsum[i-1] + ifelse(toss == "heads", 1, -1)
    }
  }

  # 表の割合
  heads_rate <- heads / (n / 100)

  # 折れ線グラフで表示
  plot(cumsum, type = "l", xlab = "Number of Tosses", ylab = "Cumulative Sum",
main = "Cumulative Sum with Heads as +1 and Tails as -1")

  # 結果を返す
  return(list(heads_rate = heads_rate, losing_streaks = losing_streaks, cumsum = cumsum))
}

# 実行
result <- coin_toss(n)

# 結果を表示
cat(sprintf("コインを%d回投げたとき、表が出る割合は%.2f%%です。\n", n, result$heads_rate))
cat("連敗数とその回数:\n")
for (i in 1:length(result$losing_streaks)) {
  if (result$losing_streaks[i] > 0) {
    cat(sprintf("%d連敗: %d回\n", i, result$losing_streaks[i]))
  }
}

# 連敗の割合を計算
losing_streaks_rate <- result$losing_streaks / n * 100

# 結果を表示
cat("連敗数とその割合:\n")
for (i in 1:length(losing_streaks_rate)) {
  if (losing_streaks_rate[i] > 0) {
    cat(sprintf("%d連敗: %.2f%%\n", i, losing_streaks_rate[i]))
  }
}

barplot(result$losing_streaks[result$losing_streaks > 0],
names.arg = which(result$losing_streaks > 0), xlab = "Number of Consecutive Losses",
ylab = "Number of Occurrences", main = "Consecutive Losses in 250000 Coin Tosses")
 

 

 

あとがき

勝率50%でも意外と連敗することが分かります。

 

図表からは25000投で10連敗以上が複数回起こることも読み取れます。

 

値幅次第で勝率は変わる上に、一般的には連敗報告なんてしないので、連敗に対する心構えは盲点になりやすいと思います。

 

とにかく、背水の陣で臨むようなトレードは避けたいと思います。

 

以上、さつま芋でした。

 

このエントリーをはてなブックマークに追加

ブログランキング・にほんブログ村へ

 

 

ブログランキング・にほんブログ村へ
にほんブログ村