
2026/10/14 3:11
モンテカルロシミュレーション
RSS: https://news.ycombinator.com/rss
要約▶
日本語訳:
サマリー:
モンテカルロシミュレーションは、不確定性を用いて複雑な問題解決に適用される強力な計算技術であり、特に従来の計算手法が困難を極める高次元のシナリオにおいて効果を発揮します。これらの手法は、大数の法則を適用することで、膨大な試行回数における特定の結果の比率を分析し、未知の値を推定します。例えば、数学定数「円周率」の精度を得るためには数十億回のサンプリングが必要となりますが、同様の論理はゲーム「SET」において、ハンドにセットが含まれていない低確率も成功裏に計算しました。
この手法は第二次世界大戦後にスタニスワフ・ウラムとジョン・フォン・ノイマンによって開発され、当初は核研究のために用いられていましたが、現在はインフレ率や株式収益などの履歴データを基にした金融モデリングの基礎となっています。しかし、平均値のみに基づく推定(例えば、退職を想定して年平均 4% のリターンを仮定すること)は危険であり、ボラティリティや収益が現れる順序という重要な要素を無視しているためです。実際には、市場の変動を適切にシミュレーションした場合、55 年間にわたって維持されることと予測されたポートフォリオは、22 年目に破綻する可能性があります。したがって、ユーザーは単一時点の平均値を超えて検討する必要があり、モンテカルロシミュレーションは隠れた失敗モードを明らかにし、市場の不確実性とサンプリング誤差に対するより良好な情報に基づいた意思決定を可能にする強固なリスク視点を提供します。
本文
モンテ・カルロシミュレーションの基礎と応用例
モンテ・カルロ(Monte Carlo)シミュレーションとは、ランダム性と大数の法則を応用し、さまざまな科学および工学の問題を解決する技術です。この手法の最初の実用的な応用として知られているのは、第二次世界大戦後にスタニスワフ・ウラムとジョン・フォン・ノイマンが、核兵器開発のシミュレーションにこれを適用したことです [1]。
本稿では、モンテカルロシミュレーションの具体的な応用例をいくつか紹介します。まずは古典的な「ダーツで円周率 π を計算する」例から始めます。
1. 円周率 $\pi$ の推定
正方形のボード上に半径 1 の四分之一円を描きます。その中にダーツを多数投げ込み、以下の手順で計算を行います。
- 手順:
- 各ダーツが四分之一円の内部に命中したか、外部に命中したかを記録します。
- ダーツの総数に対する、「四分之一円内に命中したダーツの数」の比を計算します。
- 原理:
- ダーツが正方形上に一様に分布しているという仮定の下、大数の法則によりこの比は面積比に収束します。
- 正方形の辺の長さを $1$ とすると、以下の関係式が成り立ちます: $$ \frac{\text{命中数}}{\text{総数}} \approx \frac{\text{四分之一円の面積}}{\text{正方形的面積}} = \frac{\pi/4}{1} $$
- したがって、円周率の推定値は以下の式で計算できます: $$ \pi \approx 4 \times \frac{\text{命中数}}{\text{総数}} $$
JavaScriptによる実装例
サンプル数(ダーツの投擲回数)を変更して「実行」ボタンをクリックすることで、シミュレーションを再計算可能です。以下は簡潔にしたコードバージョンです:
const total = Number(samples.value); let inside = 0; for (let i = 0; i < total; i++) { const x = Math.random(); const y = Math.random(); const inCircle = x * x + y * y <= 1; if (inCircle) inside++; } estimateValue = 4 * inside / total;
精度と限界について
この手法では推定値の精度が比較的悪いことに気づくでしょう。
- サンプル数を $1,000$ にしても、再計算(実行)を何度か行えば数値が大きく変動し、外れ値が見られることがあります。
- 著者の経験上、小数点以下 4 桁まで信頼性を持って $\pi$ を推定するには、約 100 億回 のサンプルが必要だと言われています。
- 一般的な法則: 独立した試行においては、典型のサンプリング誤差は試行数 $N$ の平方根に反比例して減少します($\frac{1}{\sqrt{N}}$)。つまり、誤差を半分にしたい場合はサンプル数を 4 倍にする必要があります。
数値積分への応用
$\pi$ の推定が思弁的に見えるかもしれませんが、これはモンテ・カルロ法が適用される重要なクラスである**「数値積分」**の例です。
- シミュレーションは本質的に、四分之一円の曲線下の面積(確定積分)を推定しています。
- 多くの積分は解析的に解くことが困難であり、モンテ・カルロ法は特に高次元の積分において有効です。
- 他の数値手法が高コストになる場合でも、この手法は有効性を発揮します。
2. 組み合わせシミュレーション:カードゲーム「SET」
モンテ・カルロ法の一般的な用途の一つに、複雑な組み合わせ計算の推定があります。これらは解析的な解を持たず、全ての選択肢を列挙すること(完全探索)が非現実的(intractable)な場合に使われます。
背景:カードゲーム「SET」
各 SET カードには以下の 4 つのアトリビュートがあります。
- 形の数: 1, 2, または 3
- 色: 赤、緑、または紫
- シェイプタイプ: 楕円、菱形、またはジグザグ線
- 塗りつぶし: 無地、ストライプ、または実塗
目標: 「セット」を見つけることです。 「セット」とは、3 つのカードにおいて、各アトリビュートについてすべて異なるか、あるいはすべて同じであるものです。
問題提起
シャッフルされたデッキから最初に引き出された 12 カードの中に、「セット」が一つもない確率はいくでしょうか?
- 81 カードから 12 カードを選べる組み合わせの数は容易に計算できますが、その中から「セットなしの手」を特定するのは困難です。
- 70 兆個もの手(SET のデッキ全組み合わせ)をチェックするには時間がかかりすぎます。
- 数学的性質を活用して探索空間を削減する高度なアルゴリズム(例:Don't Kurt のプログラム)を使わない場合、確率は 3.23% です [2]。
シミュレーションによるアプローチ
深い数学的知識や複雑な削減手法を使わず、以下の疑似コードで答えを出すことができます。
C = 0 N 回繰り返す: 新しいデッキからランダムに 12 カードの手を引く その手におけるセットの数をカウントする セットがない場合: C += 1 推定確率 = C / N
- 結果: $1,000,000$ 回のシミュレーションを実行すると、0.0323 という結果が得られ、実数値と非常に一致しました。
- 拡張: この手法はパラメータを調整するだけでスケーリング可能です。例えば、手を選ぶカード数を 15 に変えると探索空間は約 100 倍になります(確率は約 0.00037)が、シミュレーションによるアプローチでは簡単に計算できます。
補足 [2]: 答えは「赤色の無地ダイヤンド 3 つ、紫色の実塗楕円 3 つ、緑色のストライプジグザグ線 3 つ」です。各属性について「すべて同じか、すべて異なる」条件を満たします。 補足 [3]: 同じ試行回数でも、セットなしの手は極めて稀なため、推定値の相対的不確実性は 12 カードの場合よりも大きくなります。
3. 退職後の資産見通し
モンテ・カルロシミュレーションが不可欠な領域の一つは、退職後のポートフォリオ予測です。 例:退職時の資産 100 万ドル を元に、年間生活費として 30,000 ドル を引き出したいと仮定した場合、資金は持ちますか?
平均値推定の限界(単純なアプローチ)
単純化のために、以下の一定の仮定に基づく推定を行います [4]。
- 年平均ポートフォリオ収益率:4%
- 年平均インフレ率:2%
この場合の計算:
- 実質収益率 = 収益率 ($r$) - インフレ率 ($i$)
- 初期資産 100 万ドルから始め、初年末には約 101.96 万ドルとなり、3 万ドルを引くことで 98.96 万ドルが残ります。
- このペースで続ければ資金は約 55 年 で枯渇します(65 歳退職の場合、比較的安心)。
しかし、この単純化は危険です。
- 順序効果: 「悪い年(-10%)」の後に「素晴らしい年(+18%)」があった場合でも、平均値(4%)ではカウントされますが、実際には資産減少のダメージが大きく回復に時間がかかります。
- 相関関係: インフレ率とポートフォリオ収益は予測不可能で、高インフレかつ低収益の悪条件が重なるリスクがあります。
- 多様な要因: 支出の変動、多様な資産クラス、寿命、予期せぬ出来事、税制変更などを考慮すると、単一の平均推定は不十分です。
モンテ・カルロによるシミュレーション(分布ベースのアプローチ)
歴史的データに基づいた合理的な分布からサンプリングすることで、数百万通りの異なるシナリオを実行できます。これにより、「死亡する前に資金が枯渇する確率」などを推定できます。
シミュレーション結果の解釈
以下に示すチャート(100 万回シミュレーション)からの洞察:
- 点線(平均仮定): 収益率常に 4%、インフレ率常に 2% とした場合の予測。
- 濃青色の塗りつぶし(シミュレーション結果): 歴史的データを正規分布としてサンプリングした結果。
- すべてのケースの約 25% で、資金は約 22 年 で枯渇しています(平均仮定の 55 年とは大きく異なる)。
確率的な計画立案
チャートから読み取れる重要な指標:
- 30 年間の充足率: この計画が 30 年間資金を提供する確率は約 60% です(逆に、40% で途中破綻)。
- リスク評価: 平均仮定では安心に見える計画も、実際には死亡まで 25 年の生活を送ろうとする場合、約 30% の確率で十分な資金がないことが判明します。これは憂慮すべきリスクです。
結論:金融・経済分野での活用
退職後の資産予測は、モンテ・カルロシミュレーションの応用の一例に過ぎません。市場の高い不確実性を考えると、解析計算のみでは計画が立ちにくいです。
- 売上予測や成長予測
- 株式発行価格の推定など これらの分野でも、モンテ・カルロ法を活用することで、合理的な誤差範囲を持つ推定値を得ることができます。
補足 [5]: 高度なシミュレーションでは、支出資金を「年初に引く」「年末に引く」「月間配分」のようにパラメータを制御できます。 補足 [4]: 本稿の例では実ドル(今日価値)を使用しており、生活費は固定し、ポートフォリオ自体にインフレの影響を受けさせています。
参考情報
- コードの入手: 本稿で使用したすべての探索用コードは GitHub で入手可能です。
- 手法の背景: これらの技術の概念的理解は以前から存在していましたが、実際の適用が初期のデジタルコンピュータの開発と一致したのは驚くべきことではありません [1]。
- メカニズム: モンテ・カルロシミュレーションは、多くの試行(サンプリング)を実行することで統計的な精度を得る点が最大の特徴です。