ガイド一覧
2026年5月時点Footnote指標7分で読める論文3本引用

Fair Market Value 算出ロジック完全公開 — 統計モデル + 比較市場 + クラブ別校正

Squad ROI の Fair Market Value (FMV) は、Footnote の Phase M 中核ロジックだ。FMV 算出は (1) 統計モデル (ポジション基準値 × 年齢曲線 × PVS 倍率 × 出場時間係数 × 希少性係数)、(2) 比較市場アプローチ (transfer_records 類似取引の中央値)、(3) クラブ別校正 (G9 で自クラブの判断パターンを EMA 学習) の三層構成。本記事では各層の係数・閾値・統合重み付けまで公開し、強化部スタッフが FMV の数字を「信頼できる根拠」として使えるよう実装の透明性を確保する。

FMV の三層構成 — 統計 + 比較 + 校正

FMV は単一公式ではなく三層構成。統計モデルが基準を作り、比較市場が現実取引で補正、クラブ別校正で自クラブパターンに最適化する設計。

層 1: 統計モデル (statistical-model.ts)

FMV_base = positionBaseValue × ageCurveByPosition × pvsMultiplier × minutesPlayedFactor × clubScarcityFactor。すべて Wave M3 時点では固定係数。係数値は J リーグ過去 10 年の業界平均から導出した経験値。

層 2: 比較市場 (comparative-market.ts)

transfer_records から類似取引 (年齢±2、同ポジション、PVS±10、直近 5 年、verified) を取得し中央値を算出。サンプル数 3 件以上で「信頼性あり」と判定。データ蓄積前は層 1 が 100%、蓄積後は層 1: 60% + 層 2: 40% の重み付き平均。

層 3: クラブ別校正 (calibration.ts、G9)

roi_decisions.outcome_value_yen の蓄積に基づき、club_roi_calibration の correction_factor を EMA で更新。3 サンプル以上で適用、[0.5, 2.0] にクリップで暴走防止。最終 FMV = (層1 × 0.6 + 層2 × 0.4) × correction_factor。

統計モデルの係数 — ポジション基準値 × 年齢曲線

ポジション基準値は GK ¥1,500 万、CB ¥2,500 万、CMF ¥3,000 万、CF ¥3,500 万のように設定。年齢曲線は CMF が 26-28 歳ピーク、CF は 24-26 歳ピークのようにポジション別。

ポジション別基準値 (positionBaseValue)

  • GK: ¥1,500 万 (希少性低、年俸抑制傾向)
  • CB: ¥2,500 万 (J リーグ標準的中堅価格)
  • SB: ¥2,000 万 (体力消耗激しく長期化困難)
  • DM: ¥2,500 万 (DM 専任は希少、CB 代替で評価)
  • CM: ¥3,000 万 (両軸機能、需要高)
  • AM: ¥3,500 万 (得点 + 創造性、商業価値高)
  • WG: ¥3,200 万 (個別技術依存、当たり外れあり)
  • CF: ¥3,500 万 (得点直接貢献、最高値)

年齢曲線 (ageCurveByPosition)

各ポジションでピーク年齢が異なる。GK: 28-32 歳ピーク (経験重視)、CB: 26-30 歳、SB: 24-28 歳 (体力ピーク短い)、CM/AM: 25-29 歳、WG: 23-27 歳、CF: 24-28 歳。ピーク時を 1.0 として、ピーク前は線形上昇、ピーク後は緩やかな下降カーブ。

PVS 倍率 (pvsMultiplier)

PVS 50 を 1.0 基準として、PVS 60 → 1.3、PVS 70 → 1.7、PVS 80 → 2.3、PVS 90+ → 3.0 で非線形に上昇。PVS が高いほど評価が指数的に上がる設計で、トッププロスペクトを正しく高値評価する。

出場時間 × 希少性 — 補正係数の論理

出場時間係数は「実戦投入されているか」、希少性係数は「同ポジション競合者が少ないか」を評価。両者で実用評価を補正する。

出場時間係数 (minutesPlayedFactor)

過去 12 ヶ月の出場時間ベース。シーズン換算で 80% 以上出場: 1.2、60-80%: 1.0、40-60%: 0.85、20-40%: 0.6、20% 未満: 0.4。「ベンチ温め選手」は市場評価が下がる現実を反映。

クラブ希少性係数 (clubScarcityFactor)

自クラブの同ポジション登録数で算出。1 人 = 1.3 (代替不可)、2 人 = 1.1、3 人 = 1.0、4 人以上 = 0.8 (供給過剰)。同ポジションが多すぎる選手は売却インセンティブが上がる。

比較市場アプローチの詳細 — 類似取引の中央値

transfer_records から RPC fetch_comparable_transfers で類似取引を取得。中央値算出 (純関数 median) で外れ値の影響を排除。

類似取引の判定条件

  • ポジション: 完全一致
  • 年齢: ± 2 歳
  • PVS: ± 10 ポイント (PVS なしレコードは PVS フィルタ通過)
  • 信頼度: verified のみ
  • 期間: 直近 5 年 (transfer_date)
  • サンプル数上限: 50 件

中央値を使う理由

平均値ではなく中央値を採用 (median 純関数)。1 件の異常取引 (例: 移籍金 1 億の特殊ケース) で全体推定が歪まないようにする。Median は 50%tile なので外れ値耐性が高い。サンプル数 3 件以上で初めて「信頼性あり」(isReliable=true) と判定。

データ蓄積前の挙動

Wave M7 直後は transfer_records が空のため、比較市場は estimate=null を返す。この場合 FMV は層 1 (統計モデル) 100% で算出される。3 件 verified 蓄積で自動的に 60/40 混合に切替。クイック追加 UI で投入摩擦を下げる設計 (別記事 pvs-improvement-actions 参照)。

クラブ別校正 EMA — 自クラブパターンの学習

G9 は roi_decisions の outcome から club_roi_calibration の correction_factor を EMA で更新。alpha=0.2 で新サンプルの 20% を重み付け、過去の蓄積 80% を保持。3 サンプル以上で初めて適用、[0.5, 2.0] にクリップ。

EMA 更新式

factor_new = factor_old × (1 - alpha) + (actual / predicted) × alpha。alpha = 0.2 (新サンプルの重み 20%)。例: 旧 factor=1.0、新サンプル ratio=1.5 → factor_new = 1.0 × 0.8 + 1.5 × 0.2 = 1.1。同じ ratio で 20 回繰り返すと factor は 1.5 に収束する。

クリップで暴走防止

correction_factor は [0.5, 2.0] に強制クリップ。例えば 1 件の異常取引で ratio=10 が来ても、factor は 2.0 で頭打ち。これにより、ノイズの多い初期段階で校正が暴走しない設計。

適用条件 sample_count >= 3

sample_count < 3 のポジションは correction_factor を一切適用せず、層 1 + 層 2 のみで FMV 算出。「学習中」状態を UI でも明示 (/club/squad-roi の校正ウィジェット)。サンプルが貯まる前に怪しい校正が走ることを防ぐ。

参考文献

  1. [1] Frick B. (2007). “The football players' labor market: Empirical evidence from the major European leagues Scottish Journal of Political Economy.
  2. [2] Coates D., Frick B., Jewell T. (2016). “Superstar salaries and soccer success Journal of Sports Economics.
  3. [3] He M., Cachucho R., Knobbe A. (2015). “Football player's performance and market value Machine Learning and Data Mining for Sports Analytics.

関連する記事

Footnoteで成長を記録しよう

試合を記録するだけでAIが5試合ごとに分析。 PVSスコアで成長を数値化。ベータ期間中は全機能無料。

登録30秒 ・ クレジットカード不要

最終更新: 2026-05-18Footnote編集部