mcp-chainladder について
mcp-chainladderは、Claudeを使うアクチュアリー向けのMCPサーバーで、損害額三角形からチェーンラダー法の準備金を計算します。IBNR予測やMackの確率的誤差推定・診断に加え、CSVの解析と三角形の変換にも対応します。
主な機能
- 01チェーンラダー法の最終損害額とIBNR計算
- 02Mack 1993の確率的誤差推定
- 03Mack 1994の仮定診断
- 04CSV損害額三角形の解析
- 05累積値と増分値の変換
- 06予測三角形の出力
活用シーン
- 01損害額三角形から準備金を推定
- 02準備金推定の不確実性を評価
- 03モデルの仮定や外れ値を確認
- 04CSV三角形から計算を実行
MCP 対応
チェーンラダー計算、Mack推定、診断、CSV解析、三角形変換など、8種類のアクチュアリー向けツールをMCPクライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
mcp-chainladder
Claude 向けのアクチュアリー・チェーンラダー準備金計算です。 Model Context Protocol サーバーが Claude にツールを提供し、IBNR の計算、最終損害額の予測、Mack(1993)の確率的誤差推定、Mack(1994)のモデル前提の確認、CSV からの損害三角形の解析を、すべて自然言語での会話から実行できます。
計算のみです。アクチュアリー上の助言ではありません。 これは機械的なチェーンラダー計算ツールです。データ、係数、テール、除外項目の選定、および確率的誤差指標の解釈には、専門的なアクチュアリーとしての判断が必要です。
できること
MCP 経由で公開される 8 つのツールです。質問すると Claude が適切なものを選ぶため、ツール名を指定して呼び出す必要はありません。
| ツール | Claude が使う場面 |
|---|---|
compute_chain_ladder | 「この三角形の IBNR はいくらですか?」— 主力ツール |
project_triangle | 「完全に予測した三角形はどのようになりますか?」 |
mack_stochastic | 「準備金合計の不確実性はどのくらいですか?」 |
mack_diagnostics | 「外れ値やトレンドの問題はありますか?」 |
parse_csv_triangle | 「この CSV ファイルでチェーンラダーを実行して」 |
to_incremental | 「増分の発展パターンを表示して」 |
to_cumulative | 「これらの増分値を累積して」 |
sample_triangle | 「動作例を見せて」— 手早いデモ |
すべての数値計算規約は、Mack 1993 および Mack 1994 の論文に準拠しています。教科書に掲載された 10×10 の三角形を手計算した結果と比較して、結果の差はおよそ 1e-12 以内です。
インストール
pipx install mcp-chainladder
# or, to run on demand without installing:
uvx mcp-chainladder
Python 3.10 以降が必要です。公式 MCP SDK 以外にランタイム依存関係はありません。
Claude Desktop との接続
~/Library/Application Support/Claude/claude_desktop_config.json(macOS)または %APPDATA%\Claude\claude_desktop_config.json(Windows)を編集します。
{
"mcpServers": {
"chainladder": {
"command": "uvx",
"args": ["mcp-chainladder"]
}
}
}
Claude Desktop を終了して再起動します。どの会話でも、🔌 アイコンの下に三角形ツールが表示されます。
Cursor/Cline/Continue/Zed の場合も、同じ mcpServers ブロックを使います。各アプリにはそれぞれ独自の設定ファイルの場所があり、ドキュメントで設定方法が説明されています。
例
CSV でチェーンラダーを実行する
Me: I have a paid-loss triangle at ~/Desktop/motor_2026Q1.csv.
Run the chain ladder and tell me the IBNR.
Claude: [calls parse_csv_triangle, then compute_chain_ladder]
Loaded a 10×10 cumulative triangle. Using volume-weighted
factors:
• Total paid to date: 49,458,000 USD
• Total ultimate: 65,883,400 USD
• Total IBNR: 16,425,400 USD
Selected factors trend from 1.879 at the front of the
triangle down to 1.002 at the tail.
前提について懸念すべきか確認する
Me: Same triangle — any reason not to trust the projection?
Claude: [calls mack_diagnostics]
Three flags worth a look:
• Inflation trend: slope 0.053, p ≈ 1e-12 — STRONG evidence
link ratios are drifting upward across accident years.
This violates Mack's homogeneity assumption; consider
weighting recent years more.
• Calendar-year: Z = 0.0, p = 1.0 — no diagonal effect.
• Independence: Z = -0.35, p = 0.73 — no obvious dependence
across development columns.
• Outliers: 0 cells exceed |2σ|.
The inflation finding is the one to act on.
外れ値を除外して再実行する
Me: Drop the link ratio at AY 3, dev period 2→3. What changes?
Claude: [calls compute_chain_ladder with excluded=[[2, 1]]]
Excluding (AY 3, 2→3):
• Volume factor at 2→3 moves from 1.331 to 1.328
• Total IBNR moves from 16,425 to 16,389 (−36)
• Mack SE total moves from ±354.6 to ±348.2
Net: small enough to be a "robustness check passes" rather
than a finding.
ツールリファレンス
各ツールは JSON オブジェクトを返します(project_triangle/to_incremental/to_cumulative の場合は 2 次元リスト)。Claude は説明と型をサーバーから直接読み取るため、データ構造を暗記する必要はありません。簡単な一覧を以下に示します。
compute_chain_ladder(triangle, selected_factors?, tail?, excluded?)
チェーンラダーを最初から最後まで実行します。
| 返されるフィールド | 意味 |
|---|---|
volume_factors[j] | 移行 j→j+1 に対する、全年度の支払額で加重した発展係数 |
simple_factors[j] | 個々のリンク比率の単純平均 |
selected_factors[j] | 予測に実際に使用される係数セット(デフォルトは volume) |
individual_factors[i][j] | 行ごとのリンク比率 C[i,j+1] / C[i,j]。ペアが未観測の場合は null |
cdf[j] | 最終損害額までの累積発展係数。cdf[-1] == tail |
latest_diagonal[i] | 各 AY で最後に観測された値 |
ultimates[i] | AY ごとの予測最終損害額 |
ibnr[i] | AY ごとの最終損害額 − 最新値 |
total_* | 上記 3 項目の合計 |
n_acc, n_dev | 三角形の次元 |
mack_stochastic(triangle, selected_factors, excluded?)
Mack(1993)の分布自由な標準誤差を計算します。開発期間ごとの σ̂²_j(観測値が1つしかない場合はテールルールで補完)、行ごとの SE と CV、さらに式 5.15 に従い行間共分散を含む SE_total / CV_total を返します。
mack_diagnostics(triangle, selected_factors, excluded?, outlier_threshold?)
標準化残差、外れ値(|r| > threshold、デフォルトは 2.0)、暦年符号検定、隣接する開発列間のスピアマン独立性検定、対数リンク比の平均を事故年度インデックスに対して回帰したインフレ傾きを返します。
p 値の範囲を平易な表現に変換します。
p < 0.005 → strong evidence
p < 0.05 → significant
p < 0.10 → borderline
p ≥ 0.10 → no evidence
parse_csv_triangle(path)
ディスク上の CSV を読み込み、空白 / NA / NaN / N/A / − のセルを未観測として扱い、埋め込みの桁区切りカンマを削除し、ヘッダー / メタデータ行をスキップします。三角形と次元、読み込んだ絶対パスを返します(アシスタントが読み込んだファイルを確認するのに便利です)。
project_triangle(triangle, selected_factors)
チェーンラダー法による予測で三角形の右下部分を補完します。完全な長方形の list[list[float]](null なし)を返します。行に予測の基点となる観測値がない場合は NaN になります。
to_incremental(cumulative) / to_cumulative(incremental)
2種類の変換です。未観測セルは未観測のまま維持され、観測セルでは逆変換が正確に行われます。
sample_triangle()
教科書に掲載されている 10×10 の累積支払三角形を返します。自己チェックに使えます。compute_chain_ladder に渡すと、支払額 49,458 / 最終損害額 65,883 / IBNR 16,425 が得られます。
三角形の形式
[
# AY 1 — fully developed
[1000, 1855, 2423, 2988, 3335, 3483, 3552, 3603, 3624, 3631],
# AY 2 — observed through dev 9
[1113, 2103, 2774, 3422, 3844, 4010, 4090, 4148, 4172, None],
# …
# AY 10 — only the first observation
[2640, None, None, None, None, None, None, None, None, None]
]
- 外側のインデックス = 事故年度。古い年度から順に並べます
- 内側のインデックス = 開発期間。0 = 最初の経過期間
- 未観測セルには
None(または JSON のnull)を使用します - すべての行の長さを同じにし、末尾に
nullを追加して調整します
テスト
pipx install --editable mcp-chainladder
pytest -q
テストでは、各公開ツールを教科書の三角形で知られている整合値と照合し、約 1e-9 の精度で検証します。
Pro ティア
<< 審査中 - 近日公開 >>
無料ティアでは、上記の 8 つのツールをすべて利用できます。Pro では、追加の手法と一括ワークフローが利用可能になります。ローカルのライセンスファイル ~/.chainladder/license(または $CHAINLADDER_LICENSE_FILE の参照先)によって制限されます。
Pro ライセンスは現在、社内利用およびテスト目的に限られており、一般公開されていません。 現時点では購入手段はありません。Pro ツールを以下に参考として記載しています。外部ユーザーに対しては、引き続き
pro_license_requiredを返します。
| Pro ツール | 機能 |
|---|---|
pro_license_status | 現在のライセンス状態を確認します(無料で呼び出し可能) |
interpret_diagnostics | 判定ラベルと平易な要約、推奨アクションを付けて Mack 検定を実行します |
sensitivity_analysis | リンク比を1つずつ除外し、IBNR への影響度で順位付けします |
tail_extrapolation | 指数モデルと逆べき乗モデルを当てはめ、最適なモデルを推奨します |
bornhuetter_ferguson | 横並びの CL 比較を含む BF 準備金計算手法です |
compare_methods | 1回の呼び出しで CL と BF を実行し、差分と最大の乖離を報告します |
generate_pdf_report (v1.2 で提供予定) | 表紙 / 三角形 / ファクター / 結果 / 3D 損害曲面を含む、全5ページの保険数理 PDF レポートです |
batch_csv_processing (v1.2 で提供予定) | ディレクトリ内の CSV 三角形にチェーンラダー法を適用します |
cape_cod、mack_bf (v1.3 で提供予定) | 追加の準備金計算手法です。いずれも横並びの比較を返します |
ライセンスファイルの形式
{
"product": "mcp-chainladder-pro",
"owner": "[email protected]",
"expires": null,
"key": "CL-PRO-1A2B3C4D",
"signature": "…"
}
~/.chainladder/license に配置します(ファイルのディレクトリが存在している必要があります。サーバーはディレクトリを作成しません)。次回 Claude がツールを呼び出すと、Pro ツールがすぐにロック解除済みとして応答します。
ライセンスがない場合や期限切れの場合、すべての Pro ツールは計算を行わず、{"error": "pro_license_required", "status": {...}} を返します。Claude はステータスを読み取り、アップグレード URL を案内します。無料ティアのツールは、ライセンス状態にかかわらず常に利用できます。
ライセンス
MIT。詳細は LICENSE を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。