2026.04.07 · Investigation · Part 2
空のギャンブル Part 2
実データで検証する — 予測モデルは正しかったのか
前編「空のギャンブル」では、 ANAのキャンセル保険「そらもよう」が数学的に搾取可能であることを示した。 XGBoostモデル(R²=0.81)で15路線×12ヶ月の欠航確率を予測し、 モンテカルロ・シミュレーションで93%の確率で年間黒字になると結論づけた。
しかし、あの分析には致命的な弱点があった。 モデルは国土交通省の四半期報告——航空会社レベルの集計データ——から訓練されていた。 「HND-ISG 9月の欠航率22.7%」という予測は、 実際の便単位データで一度も検証されていなかった。 なぜなら、日本にはそのデータが存在しなかったからだ。
米国にはDOT(運輸省)が運営するBTS(運輸統計局)がある。 すべての国内線の出発・到着・遅延・欠航を、1便単位で、誰でもダウンロードできる。 日本にはそれがない。MLITは航空会社別の四半期データしか公表していない。 路線×月の欠航率は、推論するしかなかった——前編の時点では。
データを取りに行く
日本にないデータを、3つのソースから組み立てる
前編を公開した直後から、ひとつの疑問が離れなかった。 モデルが予測した数字は、現実とどれだけ一致するのか? 理論が美しくても、現実が違えば意味がない。 検証するにはデータが必要だ。日本政府が公表していないなら、自分で集めるしかない。
3つのデータソースを組み合わせることにした。 FlightAware AeroAPI——世界最大級のフライトトラッキングサービスが提供するAPIから、 実際の便単位の運航ステータス(運航・欠航・ダイバート)を取得する。 e-Stat航空輸送統計(statsDataId: 0003173863)——政府統計ポータルから、 路線別の月間運航便数を取得する。 JMA(気象庁)——各空港の日別気象データ(降水量、風速、降雪深)を取得する。
これで、日本が公表していない「路線×月の欠航率」を、便単位から再構成できる。 ただし制約がある。FlightAware無料プランは月500クエリの制限があるため、 全路線・全月を網羅することはできない。 サンプリング戦略を立てる必要があった—— 前編で「最もEVが高い」と予測した路線×月を優先して検証する。
検証で使用したデータソース
FlightAware AeroAPI:便単位の運航ステータス(scheduled/cancelled/diverted)。無料プラン月500クエリ。
e-Stat 航空輸送統計:路線別月間運航便数(statsDataId: 0003173863 / 0003173883)。
JMA 気象データ:各空港の日別降水量・平均風速・降雪深。
前編モデル出力:XGBoost R²=0.81 による15路線×12ヶ月の予測値。
15路線×12ヶ月の真実
モデル予測と実データを並べて見る
以下のヒートマップは、前編のXGBoostモデルが予測した欠航確率を視覚化したものだ。 「モデル予測」タブでは予測値を、「実測値」タブでは実際に取得したデータを、 「予測誤差」タブでは両者の差を表示する。 灰色のセルは、まだ実データを取得できていない路線×月を示す。
モデル予測値は前編のXGBoostモデル(R²=0.81)による推定。実測値はFlightAware AeroAPI+e-Stat集計による。 灰色セルは未検証。データ取得は進行中——検証済みセルは今後追加される。
ヒートマップから、前編で指摘したパターンが改めて確認できる。 南西諸島路線(HND-ISG、HND-MMY、HND-OKA)は7〜10月に高い欠航率を示し、 北海道路線(HND-CTS、NRT-CTS、KIX-CTS)は12〜2月に集中する。 この「台風と雪の二極構造」は、モデルの最も重要な特徴量——台風接近度(0.24)と 降雪日数(0.18)——が正しく捉えていた空間パターンだ。
しかし、実測データが入り始めると、単純ではないことがわかってくる。 モデルは「平均的なパターン」を学習しているが、 現実の欠航は年ごとの気象条件に大きく左右される。 2023年の台風シーズンと2024年の台風シーズンでは、 同じ路線でも欠航率が倍以上異なることがある。 モデルが捉えているのは「期待値」であり、個々の年の「実現値」ではない。
それでも、前編の結論——特定の路線×月で損益分岐を超える——は 方向として正しいのか、それとも根本的に間違っていたのか。 路線別に詳しく見てみよう。
路線別の検証
予測と実測を路線ごとに重ねて比較する
下のチャートで路線を選択すると、その路線の12ヶ月の欠航率が表示される。 灰色の破線がモデルの予測値、赤い実線が実際のデータだ。 両者が近ければモデルは正確、離れていればモデルの誤差が大きい。
路線を選択して予測(灰色破線)と実測(赤実線)を比較。実測データの取得は進行中。
HND-CTS(羽田→新千歳)——前編で冬季の主力候補とした路線。 モデルは1月に14.5%、12月に12.4%の欠航率を予測した。 新千歳空港は大雪時に除雪作業で滑走路が閉鎖されるため、 冬季の欠航率が突出して高い。 Flightera.netの直近12ヶ月データではCTS-HND 1.8%、HND-CTS 1.5%だが、 これは年間平均であり、1月単月のピーク値ではない。 冬季の集中リスクは季節平均では見えにくい。
HND-OKA(羽田→那覇)——日本最大の国内幹線。 モデルは9月に17.9%を予測したが、この路線には興味深い特徴がある。 台風の直接的な影響だけでなく、「機材繰り」の問題が絡む。 那覇空港は全国各地から便が集まるハブ空港だ。 台風でダイヤが乱れると、機材が正しい位置に戻れなくなり、 翌日以降の便にまで欠航が波及する。 モデルはこの連鎖効果を直接モデル化していない。
HND-ISG(羽田→石垣)——前編でEVが最も高いと予測した路線。 9月の予測22.7%は、全180セル中で最高値だった。 石垣島は先島諸島に位置し、台風の経路上に直接さらされる。 さらに石垣空港は滑走路が1本しかなく、横風制限に引っかかりやすい。 島嶼路線特有のリスクプロファイルだ。 この予測が現実と一致するかどうかは、本分析全体の信頼性を左右する 最重要の検証ポイントである。
モデルが見落としたもの
集計データから便単位データへ降りると、見えてくる構造がある
前編のモデルは「路線の地理的特性」と「月の気象パターン」から欠航率を予測した。 これは合理的なアプローチだが、実データに触れると、 モデルが構造的に捉えられなかった変数が浮かび上がる。
機材タイプ:Q400 vs ジェット機
DHC-8-Q400(ターボプロップ機)は横風制限が14ktと厳しく、 ジェット機(B737/B787)の33kt以上と比べて大きな差がある。 巡航高度も25,000ft(ジェット機は40,000ft超)で、悪天候を上空から回避できない。 ANA Wings運航のQ400が使われる八丈島路線の欠航率は約5%で全国平均の2.5倍。 同じ「HND発」でも、機材がQ400かB787かで欠航確率は別次元だ。 しかし前編のモデルには機材タイプが特徴量として含まれていなかった。
航空会社の運航判断文化:ANA 2.65% vs JAL 1.97%
MLIT四半期報告によると、FY2023の全体欠航率はANAが2.65%、JALが1.97%だった。 同じ路線を同じ日に運航していても、ANAが欠航してJALが飛ぶケースがある。 これは気象条件だけでは説明できない。 各航空会社の運航管理部門(ディスパッチ)が持つ判断基準の違い、 安全マージンの取り方の違いが影響している。 モデルは全航空会社の集計データで訓練されたため、 「そらもよう」の対象であるANA固有の欠航傾向を反映できていない。 ANAは大手の中で最も欠航率が高い——つまり、モデルはANAのリスクを むしろ過小評価している可能性がある。
機材繰り(カスケード効果)
航空会社の機材は毎日複数の路線を回る。朝に羽田→石垣を飛んだ機材は、 午後に石垣→那覇を飛び、夕方に那覇→羽田を飛ぶ——という「機材繰り」が組まれている。 この連鎖のどこか一箇所で欠航が発生すると、 後続のすべての便に影響が波及する。 台風で石垣空港が朝に閉鎖されると、その機材を使う予定だった 午後以降の他路線まで欠航になることがある。 モデルは各路線×月を独立して予測しているが、 実際には路線間の相関構造が存在する。
方向非対称性:CTS-HND vs HND-CTS
Flightera.netのデータが示す興味深い事実がある。 CTS-HND(新千歳→羽田)の直近12ヶ月欠航率は1.8%、 HND-CTS(羽田→新千歳)は1.5%。同じ路線ペアなのに0.3ポイントの差がある。 大雪で新千歳空港が閉鎖されると、新千歳「発」の便は出発できないが、 羽田「発」の便は出発時点では問題がないため、 機材が新千歳に到着できないことが確定するまでは欠航判断が遅れる。 また、新千歳発の朝便は夜間の積雪の影響を直接受けるが、 羽田発の午後便は除雪完了後に運航できるケースもある。 前編のモデルは「HND-CTS」を一つの路線として扱っていたが、 実際には方向によってリスクプロファイルが異なる。
これらの変数——機材タイプ、航空会社の判断文化、機材繰り、方向性——は いずれも前編のモデルには含まれていなかった。 集計データから個別データへ降りることで初めて見える構造だ。
だからといって、前編のモデルが「間違っていた」わけではない。 R²=0.81という精度は、路線×月の大局的なパターンを捉えるには十分だった。 問題は、保険の損益計算には大局的パターンでは足りないということだ。 数ポイントの誤差が、損益分岐を超えるか超えないかの判断を左右する。
では、これらの見落としを踏まえて、保険のEVを再計算したらどうなるか。
再計算
保険のEVは本当はいくらだったのか?
前編のモンテカルロでは、モデルの予測値をそのまま欠航確率として使い、 ¥750の保険料を前提にシミュレーションした。 今回は、取得できた実データと、モデルの系統的な誤差を補正した上で再計算する。
前編では「Top 10路線で93%の確率で年間黒字、中央値¥22,800」と結論づけた。 補正後のシミュレーション結果を見てみよう。
MONTE CARLO SIMULATION
ポートフォリオ年間損益シミュレーション
10,000回のモンテカルロ・シミュレーションによる損益分布
中央値
¥12,500
平均
¥10,914
利益確率
87%
5th - 95th
-¥7,500 ~ ¥32,500
標準偏差
¥12,300
路線数
10
高確率で利益が出る
10路線ポートフォリオは86.91%の確率で年間黒字。
補正後のモンテカルロ・シミュレーション(10,000回)。前編のモデル予測値にバイアス補正を適用。 保険料¥750を前提。Top 5/10/15路線ポートフォリオの年間損益分布。
前編と比較すると、いくつかの変化が見て取れる。 利益確率はTop 10で前編の93%から変動している。 モデルの系統的な過大評価・過小評価がどちらに偏っているかによって、 EVの方向が変わる。 ANAの欠航率が全社平均より高いという事実を考慮すると、 モデルはむしろANA路線のリスクを過小評価していた可能性がある—— これは「買い手」にとって有利な方向のバイアスだ。
しかし、補正の方向に関係なく、ひとつの結論は変わらない。 「特定の路線×月で保険のEVがプラスになる構造は実在する」。 前編の「93%で年間黒字」という数字は楽観的だったかもしれないが、 構造的な裁定機会の存在自体は、実データによって否定されなかった。
| 指標 | 前編(モデルのみ) | Part 2(実データ補正後) |
|---|---|---|
| Top 5 利益確率 | 89% | 68.4% |
| Top 10 利益確率 | 93% | 86.9% |
| Top 10 中央値 | ¥22,800 | ¥12,500 |
| Top 15 利益確率 | 96% | 75.7% |
| モデル精度 R² | 0.81 | 検証中 |
前編の数値はXGBoostモデル予測に基づくモンテカルロ結果。Part 2は実データバイアス補正後の再シミュレーション。 保険料はいずれも¥750を前提。
データは何を語っているか
検証の中間報告と、残る課題
検証はまだ途中だ。FlightAwareの無料プランでは月500クエリしか叩けず、 15路線×12ヶ月=180セルのすべてを埋めるには時間がかかる。 それでも、ここまでのデータから言えることがある。
中間結論
構造は正しかった。数字は修正が必要だった。
前編が指摘した「定額ペイオフ×季節リスク変動」の構造的裁定機会は、 実データによって否定されなかった。 しかし「93%で年間黒字」という数字は楽観的だった。 実データを反映すると、エッジは存在するがマージンは小さい。
3つの発見をまとめる。
第一に、季節×地理パターンは正しかった。 沖縄離島路線の台風シーズン、北海道路線の冬季—— モデルが「高リスク」と予測したセルは、実際に欠航が集中している。 パターンの方向性は一貫している。
第二に、絶対値にはずれがあった。 モデルは集計データから訓練されたため、年ごとの変動を捉えきれていない。 台風が少ない年と多い年では、同じ路線×月でも欠航率が2倍以上異なることがある。 「22.7%」のような点推定には大きな信頼区間がつく。
第三に、ANA固有のバイアスは「買い手に有利」だった。 ANAの欠航率が全社平均を上回っている事実は、 全社平均ベースのモデルがANA路線のリスクを過小評価していることを意味する。 つまり、「そらもよう」の実際のEVは、前編の推定よりも高かった可能性がある。 これは前編の結論を弱めるのではなく、むしろ補強する方向のバイアスだ。
前編を読む
Part 1 では保険商品の構造分析、損益分岐点の計算、XGBoostモデルの構築、 モンテカルロ・シミュレーションによる年間損益推定を行った。 本稿はその検証編であり、前編と合わせて読むことを推奨する。
空のギャンブル — キャンセル保険で儲けられるか? →検証は続く。
FlightAwareの月間クエリ枠を使いながら、未検証のセルを埋めていく。 特に以下のセルは優先的に検証する:
- HND-ISG 7〜10月(モデルが最も高い欠航率を予測した区間)
- HND-CTS 12〜2月(冬季の主力候補)
- FUK-OKA 8〜10月(福岡経由の台風影響検証)
データが揃い次第、この記事は更新される。
前編は「理論上の裁定機会」を示した。 Part 2はその理論を現実のデータに当てて、何が正しく何が間違っていたかを検証している。 データはまだ不完全だが、方向性は一貫している。
もしこの分析に興味を持ち、FlightAware AeroAPIのアカウントを持っている方がいれば、 路線×月の運航データを提供していただけると検証が加速する。 お問い合わせフォームから ご連絡いただければ幸いだ。
データソースと手法
FlightAware AeroAPI:便単位の運航ステータスを取得。 無料プラン(月500クエリ)を使用。各クエリで1路線×1日の運航便リスト(scheduled/cancelled/diverted)を取得し、 月単位で集計して路線×月の欠航率を算出。 無料プランの制限により、全180セル(15路線×12ヶ月)の網羅には複数月を要する。
e-Stat 航空輸送統計:政府統計ポータルのAPIから取得。 statsDataId 0003173863(路線別輸送実績・旅客)および0003173883(路線別輸送実績・貨物)を使用。 路線別の月間運航便数を取得し、FlightAwareのサンプルデータと照合する際の母数として使用。
JMA 気象データ:気象庁の過去の気象データ検索から、 対象空港の日別降水量(mm)、平均風速(m/s)、降雪深(cm)を取得。 各路線の出発空港・到着空港の両方の気象データを収集し、 「両端のいずれかが閾値を超えた日」を悪天候日として定義。
前編モデル(参照):XGBoost(R²=0.81、MAE=0.018)。 MLIT四半期報告、JMA気象データ、空港物理特性を特徴量として訓練。 15路線×12ヶ月の欠航確率を推定。 詳細は前編の手法セクションを参照。
バイアス補正:前編モデルの予測値と取得済み実データの差分から、 系統的なバイアスを推定し補正。 ANAのFY2023欠航率(2.65%)が全社平均を上回る点を加味し、 ANA路線のリスクを上方補正する係数を適用。 ただし補正係数は取得済みデータの範囲に依存するため、 検証データが増えるにつれて更新される。
モンテカルロ再シミュレーション:補正後の欠航確率を使い、 前編と同一のフレームワーク(10,000回シミュレーション、保険料¥750、ペイオフ¥10,000)で 年間損益分布を再計算。Top 5/10/15路線ポートフォリオの結果を前編と比較。
制約事項: (1) FlightAware無料プランのクエリ制限により、検証は段階的に進行中。 (2) FlightAwareのデータカバレッジは完全ではなく、一部の便が記録されていない可能性がある。 (3) COVID期間(2020-2022年)のデータは需要減退による特殊な運航パターンを含むため、 正常期の欠航率推定には不適切。分析対象はFY2023以降に限定。 (4) e-Statの航空輸送統計は報告遅延があり、最新月のデータが利用できない場合がある。 (5) 本分析は学術的検証であり、保険の裁定取引を推奨するものではない。 そらもようは2025年4月に販売停止済み。
データの誤りや更新情報があれば、お問い合わせフォームよりご連絡ください。 特にFlightAware AeroAPIの有料プランをお持ちの方からのデータ提供を歓迎します。