mcpField
A
adverse-selection-prior

adverse-selection-prior

github.com/lyndonklその他18746 回インストール10 週間前に更新
リポジトリ

adverse-selection-prior について

adverse-selection-priorは、受け取った提案が提案者に有利である可能性を推定するスキルです。提案の種類、表面的な公平性、情報格差、提案者のタイプから事前確率と後続処理向けのEV調整値を算出します。

主な機能

  1. 01提案の種類ごとに基準事前確率を設定
  2. 02表面的な公平性を評価
  3. 03提案者の情報優位性を推定
  4. 04提案者のタイプに応じて調整
  5. 05EV調整値と再確認のヒントを出力

活用シーン

  1. 01ファンタジースポーツのトレード提案の評価
  2. 02他チームが放出した選手の検討
  3. 03求人やM&Aの非依頼提案の分析

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/lyndonkl/claude --skill adverse-selection-prior

インストール後、Claude Code で/adverse-selection-priorを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

resources/
methodology.md
template.md
resources/evaluators/
rubric_adverse_selection_prior.json

詳細

逆選択の事前確率

目次

例

シナリオ:ファンタジースポーツのトレードオファーを受け取りました。相手(active に分類されたアーキタイプ)は、自分たちのスター打者(相手側)と、こちらの中堅打者2人(こちら側)を交換するオファーを提示しています。表面上はおおむね公平なオファーに見えます。こちらの予測モデルでは、この取引によってこちらの期待値が3%上がるとされています。

入力:

  • offer_type:trade
  • proposer_archetype:active
  • offer_symmetry_score:72(こちらにとって公平からやや有利に見える)
  • proposer_info_asymmetry:55(中程度。相手が把握しているかもしれないクローザー関連のニュースは把握していませんが、誰もが知る重大ニュースもありません)

ステップ1 — オファーの種類に基づく基本事前確率:

  • 受け取ったトレードオファーの基本事前確率 = 0.40(相手が提案することを選んだため、50%を下回ります)。

ステップ2 — 対称性の調整:

  • offer_symmetry_score = 72 > しきい値70 → +0.07。
  • 調整後の事前確率:0.47。

ステップ3 — 情報の非対称性の調整:

  • proposer_info_asymmetry = 55(しきい値60未満ですが、無視できない水準)→ -0.05。
  • 調整後の事前確率:0.42。

ステップ4 — アーキタイプの調整:

  • active アーキタイプ → 提案前に分析しているため -0.05。
  • 最終的な prior_ev_probability:0.37。

ステップ5 — 推奨調整(期待値の割引):

  • 事前確率は0.37です(中立値0.50に対して)。これを乗算による割引率に変換します。
  • recommended_adjustment = 0.88(こちらの予測に期待値の12%割引を適用します)。
  • モデルでは期待値が+3%とされていました。割引後:1.03 x 0.88 = 0.907 → 実際には期待値が**-9.3%**になります。

ステップ6 — ベイズ的な根拠: 「積極的に取引する相手がこのオファーを提案しました。相手には、どんな取引でも提案しない選択でもできたのに、この取引を選びました。これは、相手にとって期待値がプラスである強い証拠です。表面的な対称性(72)はこの影響を一部相殺しますが、中程度の情報の非対称性(55)と分析型のアーキタイプによって、事前確率は0.37になります。期待値を12%割り引いてください。こちらの予測値+3%は調整後に-9%となり、承諾のしきい値を下回ります。」

ステップ7 — 上書きのヒント:

  • 「過去48時間以内にクローザー関連のニュースが出ていて、ニュースフィードを確認していない場合、非対称性は実際には85以上です。非対称性=85で再実行してください(事前確率は約0.22に低下します)。」
  • 「スター打者に隠れた負傷や出場停止がないことを独自に確認できる場合、対称性は実際には80以上です。対称性=85で再実行してください(事前確率は約0.44に上昇します)。」
  • 「5回以上協力していて、期待値がマイナスのオファーを一度も送ってこなかった、繰り返し取引をする相手であれば、アーキタイプは実質的に「誠実」寄りに変化し、基本事前確率が+0.05上昇します。」

出力仕様:

{
  "prior_ev_probability": 0.37,
  "recommended_adjustment": 0.88,
  "bayesian_rationale": "Active trader selected this offer from all possible offers they could have made -- strong signal it is +EV for them. Surface symmetry (72) partially offsets, but moderate info asymmetry (55) and analytical archetype push prior below 0.40.",
  "override_hints": [
    "If closer/injury news broke in last 48h, asymmetry jumps to 85+; re-run.",
    "If we can independently confirm the star has no hidden issue, symmetry rises to 85; re-run.",
    "If repeated-game partner with cooperation history, base prior rises by +0.05."
  ]
}

ワークフロー

このチェックリストをコピーして、進捗を記録してください。

Adverse Selection Prior Progress:
- [ ] Step 1: Identify offer_type and set base prior
- [ ] Step 2: Collect proposer_archetype from opponent classifier
- [ ] Step 3: Score offer_symmetry (0-100) from surface analysis
- [ ] Step 4: Score proposer_info_asymmetry (0-100)
- [ ] Step 5: Apply adjustments to produce prior_ev_probability
- [ ] Step 6: Convert prior to recommended_adjustment (multiplicative haircut)
- [ ] Step 7: Write bayesian_rationale and override_hints
- [ ] Step 8: Validate against rubric

ステップ1:オファーの種類を特定し、基本事前確率を設定する

受け取った提案を分類します。相手側に働く選択圧力が異なるため、オファーの種類によって基本事前確率も異なります。基本事前確率の一覧は、resources/template.mdを参照してください。

  • trade → 基本事前確率0.40(積極的な選択。相手がオファーを作成しています)
  • waiver_claim_dropped_by_other → 基本事前確率0.42(相手が選手を放出することを選択しています。トレードより選択圧力は弱くなります)
  • free_agent_pickup_available → 基本事前確率0.48(誰も獲得しませんでした。誰も気づかなかっただけかもしれず、逆選択の影響は弱くなります)
  • counter_offer → 基本事前確率0.38(相手は最初のオファーを断り、対案を作成しています。選択の絞り込みがさらに強くなります)
  • generic → 基本事前確率0.40(状況不明)

ステップ2:提案者のアーキタイプを確認する

相手分類器から相手のアーキタイプを読み取るか(利用可能な場合)、推定します。調整の一覧はresources/methodology.mdを参照してください。

  • active -> 提案前に分析済み -> archetype_delta = -0.05
  • expert -> 最も強い選択圧力 -> archetype_delta = -0.08
  • dormant -> 深く分析せずにクリックしている可能性があります -> archetype_delta = +0.08
  • frustrated -> どちらともいえません(パニック売りか、策略を巡らせている可能性があります) -> archetype_delta = 0.0(ただし、個別に確認するようフラグを設定します)
  • unknown -> 中立 -> archetype_delta = 0.0

ステップ 3:オファーの対称性を評価する

独自の評価モデルを使用して、表面的にオファーがどの程度公正に見えるかを示す offer_symmetry_score(0-100)を算出します。

  • 0-30:明らかに相手に有利です(まれなケースで、通常は略奪的です)
  • 30-70:非対称ですが、妥当な範囲です
  • 70-100:表面的には公正、またはこちらにやや有利に見えます
  • 調整を適用します:offer_symmetry_score が 70 を超える場合、+0.05 から +0.10 を加算します(85 を超えるスコアほど加算幅を大きくします)
  • offer_symmetry_score が 30 未満(かつ、明らかに略奪的ではない)の場合、「うますぎる話」としてフラグを設定し、調査します

ステップ 4:提案者の情報の非対称性を評価する

proposer_info_asymmetry(0-100)を推定します。つまり、相手がこちらの知らない情報を持っている可能性があるかを評価します。

  • 最近のニュース(負傷、出場停止、クローザーの変更、ラインナップの変更、チーム運営陣のコメント)を確認します
  • 公開されているシグナル(近日中のトレード、DFA の対象候補、プラトーン起用の変更に関する情報を示唆するロースター構成)を確認します
  • 0-30:公開情報は同等です(双方が関連情報をすべて把握しています)
  • 30-60:軽微な差があります(相手は、こちらが見逃した担当記者を追っている可能性があります)
  • 60-100:重大な差があります(新しいニュースが出た、または内部情報を持っているかのようなタイミングです)
  • 調整を適用します:非対称性が 60 を超える場合、0.10 から 0.20 を減算します(80 を超えるスコアほど減算幅を大きくします)

ステップ 5:調整を適用して事前確率を算出する

基本事前確率とすべてのデルタを組み合わせます。導出については resources/methodology.md を参照してください。

  • ステップ 1 の base_prior から開始します
  • ステップ 3 の symmetry_delta を適用します
  • ステップ 4 の asymmetry_delta を適用します
  • ステップ 2 の archetype_delta を適用します
  • 最終結果を [0.10, 0.70] に収めます。この範囲外の事前確率は、仕様エラーを示します
  • prior_ev_probability = 範囲内に収めた合計値

ステップ 6:事前確率を推奨調整値に変換する

事前確率を、後続の利用側が独自の EV 計算に適用できる乗算係数の EV 減額率に変換します。対応関係については、クイックリファレンス を参照してください。

  • 事前確率が 0.50 以上の場合:recommended_adjustment = 1.00(減額なし。まれなケースです)
  • 事前確率が 0.45 の場合:recommended_adjustment = 0.95
  • 事前確率が 0.40 の場合:recommended_adjustment = 0.90
  • 事前確率が 0.35 の場合:recommended_adjustment = 0.85
  • 事前確率が 0.30 以下の場合:recommended_adjustment = 0.80(大幅な減額。逆選択の強いシグナルです)
  • 後続の利用側は、独自の EV にこの係数を乗算します:adjusted_EV = own_EV x recommended_adjustment

ステップ 7:根拠と上書きのヒントを記述する

事前確率をレビューできるようにする文字列の出力を生成します。

  • bayesian_rationale:基本事前確率、最も大きな 2 つの調整、および結論を明記した 2-4 文
  • override_hints:「X の場合、Y を Z に調整して再実行する」という形式の条件文を 2-5 個
  • ヒントは実行可能な内容にします。それぞれ、事前確率を >= 0.05 変える特定の入力を示す必要があります

ステップ 8:評価基準に照らして検証する

出力を resources/evaluators/rubric_adverse_selection_prior.json に照らして採点します。最低基準は、平均スコア 3.5 以上です。

よくあるパターン

パターン 1:休眠中のマネージャーからのトレード提案(事前確率は 0.50 に近づく)

  • シグナル:相手が過去 30 日間に行ったロスター変更が 3 回未満。アーキタイプ = dormant
  • 解釈:相手は分析せずにクリックしている可能性があります。通常、提示された取引が不利な選択となる要因である選択圧力は弱いです。
  • 調整:archetype_delta = +0.08。対称性が高い場合、事前確率は 0.50 に近づく可能性があります。
  • 推奨調整:0.95(割り引きはわずか 5%のみ)
  • 分野別の例:M&A における関与度の低い売り手(デューデリジェンスをせずに引退する創業者)、情報を持たずに求人を大量送信する採用担当者、市場価格を下回る価格で中古品を売る遺産整理業者

パターン 2:熟練トレーダーからの提案(事前確率は 0.25 に近づく)

  • シグナル:相手が実績のある鋭敏なプレイヤーで、オークションで効率よく勝ち、頻繁に利益の出る取引をしている。アーキタイプ = expert
  • 解釈:想定し得る中で最も強い選択圧力です。相手はこの提案と他の可能な提案を分析したうえで、相手にとって最も +EV となるこの提案を選びました。
  • 調整:archetype_delta = -0.08。明示的なニュースがなくても、非対称性は高まっている可能性があります。
  • 推奨調整:0.80-0.85(大幅な割り引き)
  • 分野別の例:あなたの保有株を買い取ろうとするアクティビスト投資家(あなたが見落とした価値に気づいている)、流動性の低いあなたのポジションに入札するクオンツファンド、役職を紹介する採用担当者の上位 10%(役職に隠れたデメリットがある可能性が高く、あなたは第 3 候補です)

パターン 3:不満を抱えた相手、またはパニック売りをする相手からの提案(混合的。ケースごとに判断)

  • シグナル:相手が大きく負けており、感情的な取引をしている。アーキタイプ = frustrated
  • 解釈:2 つのケースが考えられます。(a)実際に傾いている、またはパニック売りをしている(こちらにとって +EV)、あるいは(b)不満を隠れみのにする策略家である(こちらにとって -EV)
  • 調整:archetype_delta = 0。分類には追加のシグナル(直近の大きな損失と、チャット/メッセージの口調)が必要です。
  • 推奨調整:デフォルトは 0.90。パニック売りが確認できれば 1.05 に上げ、策略が疑われる場合は 0.80 に下げられます。
  • 分野別の例:M&A における経営難の売り手(破産が原因)、就いたばかりの役職を「手放す」求職者(なぜこんなに早く辞めるのでしょうか?)、離婚時のガレージセールでの価格設定

パターン 4:依頼していない求人オファー、または M&A の打診

  • シグナル:あなたが働く意思を示していないのに、オファーが届きます。
  • 解釈:相手は幅広い候補者の中からあなたを選びました。なぜあなたなのでしょうか?(a)あなたが本当に希少な人材、または適任である(+EV)か、(b)あなたが第 2 候補で、役職や取引に欠陥があるかのどちらかです。
  • 調整:base_prior 0.40。symmetry_delta は見かけ上の適合度に応じて変わり、asymmetry_delta はその役職/買収対象をどの程度デューデリジェンスできるかによって変わります。
  • 推奨調整:0.85-0.95
  • 例外:裏ルートで第 1 候補が存在し、見送られたことを確認できる場合、事前確率をさらに下げます。

パターン 5:別のチームによるウェーバー公示

  • シグナル:別のチームが選手を放出し、その選手を獲得できるようになります。
  • 解釈:トレードより選択圧力は弱いです(相手は、あなたに特定して提案しても何も得ていません)。それでも不利な選択ではあります。相手は、その選手にロスター枠を割く価値がないと判断しました。放出された選手は平均して、同じ名前の選手全体の平均より能力が低い傾向があります。
  • 調整:base_prior 0.42(トレードよりわずかに高め)。放出した相手のアーキタイプの影響は小さくなります。
  • 推奨調整:0.92(軽い割り引き)
  • 分野別の例:ディーラーのオークションで手放された中古車、強制清算で売られた株式、市場に出ている元従業員

ガードレール

  1. 受け取ったオファーのベース事前確率は常に0.50未満です。これは「レモン市場」の洞察の核心です。事前確率が0.50を超える場合、(a)アーキタイプの指定が誤っている(例:休眠状態で対称性が非常に高い場合は0.50に近づくことはありますが、超えることはほとんどありません)か、(b)選択圧を無視しています。もう一度確認してください。

  2. 「妥当に見える」=「おそらく不利」です。取引を提案する相手は、実行可能な取引の選択肢の中からそれを選んでいます。表面的に公平なオファーは、逆選択の観点では最悪のケースです。相手には公平に見える選択肢が多数あったのに、自分に最も有利なものを選んだからです。

  3. 調整を二重に計上しないでください。既知の情報(例:選手の負傷を把握しているため、その選手のEVを引き下げた)に基づいて自分のEVをすでに調整している場合、その情報を非対称性として扱い、事前確率も引き下げてはいけません。非対称性が捉えるのは、相手が知っていて、あなたが知らない情報です。

  4. 事前確率は[0.10, 0.70]の範囲に収めてください。この範囲を外れる事前確率は、ほぼ常に仕様の誤りを示しています。事前確率0.05は、専門家であってもまれな、捕食的なオファーであるというほぼ確実な判断を意味します。事前確率0.75は、すべてのオファーを受けるべきだという意味になり、選択に関する論拠と矛盾します。

  5. アーキタイプの判断材料は自己申告ではなく行動です。「カジュアルなプレイヤー」だと主張する相手でも、ウェーバー申請を40回行い、入札競争で3回勝っているなら、休眠状態ではありません。観察された行動からアーキタイプを判断してください。

  6. パニック売りの兆候は複数の証拠で裏付けてください。「相手が苛立っているように見える」だけでは事前確率を上げるのに不十分です。次のうち少なくとも2つを確認してください:直近の大きな敗北、メッセージの口調から得られる証拠、目に見えるティルトトレード(最近好調な選手を過剰に狙うこと)、リーグに対する公の不満。

  7. 繰り返し行われる取引での評判は事前確率に反映してください。相手と5回以上協力したことがあり、相手から-EVのオファーを受けたことがない場合、アーキタイプに依存しないベース事前確率を約0.05上げます。以前に捕食的なオファーを送ってきたことがある場合、ベース事前確率を約0.05下げます。相手ごとの履歴を記録してください。

  8. 上書きのヒントは、具体的で実行可能なものにしてください。「もっと調べる」はヒントではありません。「チームのクローザーが今週その役割から外されている場合は、asymmetry=85で再実行してください」なら実行可能です。

  9. 推奨される調整は加算ではなく乗算です。後続のコンシューマーはadjusted_EV = own_EV x recommended_adjustmentを適用します。加算による減額は出力しないでください。own_EVがゼロまたは負の場合に機能しなくなります。

  10. このスキルが出力するのは事前確率であり、判定ではありません。後続の意思決定ロジック(受諾/対案/拒否)は、コンシューマー側のスキル(例:mlb-trade-analyzerやM&A意思決定エージェント)に属します。このスキルが出力するのは、事前確率と減額係数のみです。

クイックリファレンス

オファータイプ別の基本事前確率:

オファータイプ基本事前確率根拠
trade0.40積極的な選択です。相手がオファーを作成しています
waiver_claim_dropped_by_other0.42相手が取り下げています。対象を絞ったトレードより選択の意図は弱いです
free_agent_pickup_available0.48選択の意図は弱く、見落としによって未獲得のままになっている可能性があります
counter_offer0.38より厳選されています。相手は最初のオファーを拒否し、これを作成しています
generic0.40コンテキストが不明な場合のデフォルトです

アーキタイプによる調整:

アーキタイプ差分解釈
expert-0.08最も強い選択の意図です。多数のオファーの中からこれを選んでいます
active-0.05オファーを出す前に分析しています
frustrated0.0(フラグ)相反しています。パニック売り(+)か、策略(-)かを見極める追加シグナルが必要です
dormant+0.08分析せずにクリックしている可能性があります
unknown0.0中立

対称性による調整(offer_symmetry_score に基づく):

スコア差分
85-100+0.10
70-85+0.05 ~ +0.07
30-700.0
< 300.0(「うますぎて話がうますぎる」とフラグを付ける)

非対称性による調整(proposer_info_asymmetry に基づく):

スコア差分
0-300.0
30-60-0.03 ~ -0.05
60-80-0.10 ~ -0.15
80-100-0.15 ~ -0.20

事前確率から調整値への対応:

prior_ev_probabilityrecommended_adjustment解釈
>= 0.501.00割引なし。受け取ったオファーとしては異例です
0.450.95軽い割引
0.400.90標準的な割引
0.350.85中程度の割引
0.300.80大幅な割引。逆選択の可能性が高いです
<= 0.250.75搾取的な疑いがあります。デフォルトでは拒否します

出力仕様:

prior_ev_probability: float in [0.10, 0.70]
recommended_adjustment: float in [0.75, 1.00]
bayesian_rationale: string (2-4 sentences)
override_hints: string[] (2-5 conditional statements)

主なリソース:

必要な入力:

  • offer_type(列挙型:trade | waiver_claim_dropped_by_other | free_agent_pickup_available | counter_offer | generic)
  • proposer_archetype(列挙型:active | dormant | frustrated | expert | unknown)
  • offer_symmetry_score(整数、0~100)
  • proposer_info_asymmetry(整数、0~100)

生成される出力:

  • prior_ev_probability(浮動小数点数、0~1、受け取ったオファーでは基準値 < 0.5)
  • recommended_adjustment(浮動小数点数、乗算係数)
  • bayesian_rationale(文字列)
  • override_hints(文字列の配列)

コメント