# PLO5・PLO6 モンテカルロ精度検証：再現ガイド

この公開バンドルは、GTO Geckoの記事「PLO5・PLO6のエクイティ計算、試行回数はいくつ必要？」で使った固定ハンド6組の全列挙値と、72,000回のシード付きモンテカルロ推定を収録しています。

## ファイル

- `plo-monte-carlo-exact-matchups.csv`：6組のハンド、合法ボード数、勝ち・引き分け・負け、全列挙エクイティ
- `plo-monte-carlo-error-summary.csv`：スポット別、PLO5/PLO6別、全体の誤差要約
- `plo-monte-carlo-replicates.csv.gz`：72,000回の推定結果をまとめた圧縮CSV
- `plo-monte-carlo-study.json`：前提、36個のシード、全結果、制約、生成時チェックサム
- `plo-monte-carlo-generate-study.py`：主生成器
- `plo-monte-carlo-verify-study.py`：別方式の純Python評価器を使う検算器
- `plo-monte-carlo-requirements.txt`：固定したPython依存関係
- `plo-monte-carlo-independent-verification.json`：検算結果
- `plo-monte-carlo-checksums.sha256`：上記8ファイルの公開バイトに対するSHA-256

## 最短の再現手順

2本のPythonスクリプト、依存関係ファイル、正確なマッチアップCSVを同じフォルダーへ保存します。Python 3.11以降を推奨します。

```powershell
python -m venv .venv
.\.venv\Scripts\python -m pip install -r .\plo-monte-carlo-requirements.txt
.\.venv\Scripts\python .\plo-monte-carlo-generate-study.py
.\.venv\Scripts\python .\plo-monte-carlo-verify-study.py
```

どちらのスクリプトも `plo-monte-carlo-output` に結果を書きます。6組すべての合法ボードを評価するため、環境によっては数分かかります。

## チェックサムの確認

PowerShell 7以降では、次のように公開ファイルを確認できます。

```powershell
Get-Content .\plo-monte-carlo-checksums.sha256 | ForEach-Object {
    $expected, $name = $_ -split '  ', 2
    $actual = (Get-FileHash -Algorithm SHA256 -LiteralPath $name).Hash.ToLowerInvariant()
    if ($actual -ne $expected) { throw "SHA-256 mismatch: $name" }
}
```

チェックサムは改行も含むファイルの実バイトを対象にします。生成器はOSにかかわらず、テキスト成果物をUTF-8・LF改行で出力します。

## 読み方と制約

- 全列挙値だけを「正確なエクイティ」と呼び、標本抽出した値は「推定値」として扱います。
- 公開した誤差は、1回の推定値と固定された全列挙値との差です。独立した2回の推定値の差には、両方の標本誤差が入ります。
- モンテカルロ試行は復元抽出です。1回の実行内で同じボードを二度使わない方式には、この誤差表をそのまま移せません。
- 6組は構成した固定ハンドです。PLO全体を代表する標本でも、普遍的な最大誤差でもありません。
- 相手レンジ、未知ハンド、マルチウェイ、ダブルボード、Hi-Lo、端末速度、アプリ実装、ベット戦略、意思決定EVは検証していません。

記事の日本語版：<https://gtogecko.com/ja/blog/plo-monte-carlo-equity-accuracy>

英語版：<https://gtogecko.com/blog/plo-monte-carlo-equity-accuracy>
