alphacouncil-agent 0.9.2 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/commands/alpha.md +22 -3
- package/.claude-plugin/marketplace.json +3 -3
- package/.claude-plugin/plugin.json +2 -2
- package/.codex-plugin/plugin.json +4 -4
- package/.grok/commands/alpha.md +22 -3
- package/.opencode/command/alpha.md +22 -3
- package/AGENTS.md +42 -4
- package/CHANGELOG.md +164 -0
- package/CLAUDE.md +59 -7
- package/README.ja.md +25 -11
- package/README.md +44 -12
- package/README.zh-CN.md +37 -12
- package/commands/alpha.md +22 -3
- package/data/authored/core-seats.mjs +808 -0
- package/data/authored/growth-seats.mjs +581 -0
- package/data/authored/index.mjs +114 -0
- package/data/authored/quant-seats.mjs +564 -0
- package/data/authored/value-seats.mjs +663 -0
- package/data/build-profile.v1.json +2 -1
- package/data/council-evaluation-protocol.v1.json +7 -4
- package/data/master-selector-method-locales.v1.mjs +296 -0
- package/data/persona-v3-ai-assisted-solo-profile.v1.json +2 -2
- package/data/persona-v3-build-specs.v1.mjs +60 -3
- package/docs/INSTALL.md +43 -6
- package/docs/personas.md +2 -1
- package/docs/plans/v1.0-roadmap.md +487 -0
- package/docs/releases/v0.9.3.md +86 -0
- package/docs/releases/v0.9.4.md +79 -0
- package/docs/releases/v0.9.5.md +96 -0
- package/docs/releases/v1.0.0.md +164 -0
- package/docs/report-contract.md +75 -2
- package/knowledge/ai-assisted-solo/experiments/runs/a.json +13 -13
- package/knowledge/ai-assisted-solo/experiments/runs/b.json +2 -2
- package/knowledge/ai-assisted-solo/experiments/runs/c.json +2 -2
- package/knowledge/ai-assisted-solo/experiments/runs/d13.json +126 -126
- package/knowledge/ai-assisted-solo/experiments/runs/d26.json +274 -254
- package/knowledge/ai-assisted-solo/experiments/runs/e-d13.json +129 -129
- package/knowledge/ai-assisted-solo/experiments/runs/e-d26.json +277 -257
- package/knowledge/ai-assisted-solo/experiments/runs/h_ai_reference.json +278 -258
- package/knowledge/ai-assisted-solo/experiments/simulation-input.json +7278 -556
- package/knowledge/ai-assisted-solo/experiments/simulation-manifest.json +22 -22
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_ackman/reviews/{change_value_bridge.ai-review.json → market_capitalisation.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_ackman/reviews/{power_map.ai-review.json → owner_earnings_yield.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_aschenbrenner/reviews/{compute_power_bridge.ai-review.json → market_capitalisation.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_aschenbrenner/reviews/{timeline_reverse_valuation.ai-review.json → price_implied_cash_yield.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_asness/reviews/{crowding_cost_stress.ai-review.json → nominal_earnings_yield_gap.ai-review.json} +49 -49
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_asness/reviews/{factor_decomposer.ai-review.json → real_earnings_yield_gap.ai-review.json} +49 -49
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_bogle/reviews/expected_return_over_long_bond.ai-review.json +277 -0
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_bogle/reviews/fundamental_expected_return.ai-review.json +277 -0
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_buffett/reviews/{incremental_returns.ai-review.json → market_capitalisation.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_buffett/reviews/{owner_earnings_rebuilder.ai-review.json → owner_earnings_yield.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_burry/reviews/{mispricing_carry.ai-review.json → net_current_asset_surplus_per_share.ai-review.json} +49 -49
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_burry/reviews/{capital_structure_reader.ai-review.json → net_current_asset_value_per_share.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_cathie_wood/reviews/{cost_adoption_curve.ai-review.json → current_cash_yield.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_cathie_wood/reviews/{capture_valuation_bridge.ai-review.json → market_capitalisation.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_dalio/reviews/{debt_driver_stress.ai-review.json → policy_real_rate.ai-review.json} +49 -49
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_dalio/reviews/{regime_classifier.ai-review.json → real_curve_slope.ai-review.json} +49 -49
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_damodaran/reviews/{reverse_valuation.ai-review.json → implied_equity_risk_premium.ai-review.json} +49 -49
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_damodaran/reviews/{story_dcf.ai-review.json → premium_versus_long_run_average.ai-review.json} +49 -49
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_druckenmiller/reviews/{liquidity_revision_map.ai-review.json → liquidity_curve_impulse.ai-review.json} +49 -49
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_druckenmiller/reviews/{inflection_payoff.ai-review.json → policy_real_rate.ai-review.json} +49 -49
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_duan_yongping/reviews/{opportunity_cost.ai-review.json → five_year_opportunity_cost.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_duan_yongping/reviews/{user_value_evidence.ai-review.json → margin_retention.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_fisher/reviews/{research_productivity.ai-review.json → margin_retention.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_fisher/reviews/{scuttlebutt_graph.ai-review.json → reinvestment_spread.ai-review.json} +49 -49
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_forensic_short/reviews/{borrow_catalyst.ai-review.json → cash_conversion_gap.ai-review.json} +49 -49
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_forensic_short/reviews/{accounting_rebuilder.ai-review.json → cash_cover_of_leverage.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_graham/reviews/{asset_floor.ai-review.json → defensive_hurdle_base.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_graham/reviews/{normalized_earnings.ai-review.json → half_normalised_earnings_yield.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_jhunjhunwala/reviews/{penetration_liquidity.ai-review.json → cash_quality_gap.ai-review.json} +49 -49
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_jhunjhunwala/reviews/{promoter_governance.ai-review.json → real_structural_growth.ai-review.json} +49 -49
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_klarman/reviews/{recovery_waterfall.ai-review.json → downside_asset_coverage.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_klarman/reviews/{cash_catalyst_compare.ai-review.json → market_capitalisation.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_li_lu/reviews/{promise_integrity_ledger.ai-review.json → cash_backed_decade_return.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_li_lu/reviews/{ten_year_return_bridge.ai-review.json → decade_return_over_long_bond.ai-review.json} +49 -49
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_lynch/reviews/{story_numbers_check.ai-review.json → growth_justified_capitalisation.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_lynch/reviews/{category_classifier.ai-review.json → market_capitalisation.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_marks/reviews/{cycle_temperature.ai-review.json → credit_cycle_position.ai-review.json} +49 -49
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_marks/reviews/{implied_expectations.ai-review.json → equity_over_corporate_debt.ai-review.json} +49 -49
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_munger/reviews/{failure_path_graph.ai-review.json → debt_service_cushion.ai-review.json} +49 -49
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_munger/reviews/{incentive_map.ai-review.json → reported_earnings_cash_gap.ai-review.json} +49 -49
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_natenberg/reviews/{surface_builder.ai-review.json → normalised_skew.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_natenberg/reviews/{greeks_payoff.ai-review.json → round_trip_cost.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_pabrai/reviews/{downside_floor.ai-review.json → downside_floor_coverage.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_pabrai/reviews/{discrete_payoff.ai-review.json → market_capitalisation.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_simons/reviews/{oos_cost_test.ai-review.json → absolute_session_move.ai-review.json} +42 -42
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_simons/reviews/{leakage_audit.ai-review.json → session_move_over_implied.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_sinclair/reviews/{realized_vol_forecast.ai-review.json → round_trip_cost.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_sinclair/reviews/{net_edge_sizer.ai-review.json → volatility_per_unit_of_width.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_soros/reviews/{reversal_monitor.ai-review.json → credit_cycle_position.ai-review.json} +49 -49
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_soros/reviews/{reflexivity_graph.ai-review.json → financing_burden.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_taleb/reviews/{tail_friction.ai-review.json → debt_service_cushion.ai-review.json} +49 -49
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_taleb/reviews/{payoff_ruin.ai-review.json → normalised_skew.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_thorp/reviews/{edge_recalculator.ai-review.json → edge_per_unit_of_volatility.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_thorp/reviews/{fractional_kelly.ai-review.json → net_edge.ai-review.json} +49 -49
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/review-manifest.json +288 -270
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-semantic-adjudications/index.json +2 -2
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-semantic-extractions/index.json +2 -2
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-semantic-skeptic-reviews/index.json +2 -2
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-source-prereviews/index.json +6 -2
- package/knowledge/solo-test/masters/master_ackman/decision_policy.json +122 -11
- package/knowledge/solo-test/masters/master_ackman/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_ackman/manifest.json +27 -10
- package/knowledge/solo-test/masters/master_ackman/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_ackman/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_ackman/tools.json +56 -30
- package/knowledge/solo-test/masters/master_aschenbrenner/decision_policy.json +101 -10
- package/knowledge/solo-test/masters/master_aschenbrenner/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_aschenbrenner/manifest.json +26 -8
- package/knowledge/solo-test/masters/master_aschenbrenner/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_aschenbrenner/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_aschenbrenner/tools.json +56 -30
- package/knowledge/solo-test/masters/master_asness/decision_policy.json +89 -10
- package/knowledge/solo-test/masters/master_asness/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_asness/manifest.json +25 -8
- package/knowledge/solo-test/masters/master_asness/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_asness/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_asness/tools.json +56 -30
- package/knowledge/solo-test/masters/master_bogle/counterfactuals.jsonl +0 -0
- package/knowledge/solo-test/masters/master_bogle/decision_cases.jsonl +0 -0
- package/knowledge/solo-test/masters/master_bogle/decision_policy.json +170 -0
- package/knowledge/solo-test/masters/master_bogle/doctrine.jsonl +14 -0
- package/knowledge/solo-test/masters/master_bogle/evaluation/calibration_cases.jsonl +0 -0
- package/knowledge/solo-test/masters/master_bogle/evaluation/experiments.json +5 -0
- package/knowledge/solo-test/masters/master_bogle/evaluation/golden_cases.jsonl +0 -0
- package/knowledge/solo-test/masters/master_bogle/evaluation/pairwise_cases.jsonl +0 -0
- package/knowledge/solo-test/masters/master_bogle/failures.jsonl +0 -0
- package/knowledge/solo-test/masters/master_bogle/manifest.json +141 -0
- package/knowledge/solo-test/masters/master_bogle/memory_policy.json +5 -0
- package/knowledge/solo-test/masters/master_bogle/provisional-index.json +41 -0
- package/knowledge/solo-test/masters/master_bogle/research_policy.json +11 -0
- package/knowledge/solo-test/masters/master_bogle/sources.jsonl +1 -0
- package/knowledge/solo-test/masters/master_bogle/tools.json +120 -0
- package/knowledge/solo-test/masters/master_bogle/voice.en.md +7 -0
- package/knowledge/solo-test/masters/master_bogle/voice.zh.md +7 -0
- package/knowledge/solo-test/masters/master_buffett/decision_policy.json +102 -11
- package/knowledge/solo-test/masters/master_buffett/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_buffett/manifest.json +24 -8
- package/knowledge/solo-test/masters/master_buffett/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_buffett/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_buffett/tools.json +55 -29
- package/knowledge/solo-test/masters/master_burry/decision_policy.json +102 -12
- package/knowledge/solo-test/masters/master_burry/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_burry/manifest.json +26 -10
- package/knowledge/solo-test/masters/master_burry/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_burry/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_burry/tools.json +56 -30
- package/knowledge/solo-test/masters/master_cathie_wood/decision_policy.json +74 -12
- package/knowledge/solo-test/masters/master_cathie_wood/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_cathie_wood/manifest.json +26 -10
- package/knowledge/solo-test/masters/master_cathie_wood/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_cathie_wood/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_cathie_wood/tools.json +56 -30
- package/knowledge/solo-test/masters/master_dalio/decision_policy.json +123 -16
- package/knowledge/solo-test/masters/master_dalio/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_dalio/manifest.json +24 -8
- package/knowledge/solo-test/masters/master_dalio/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_dalio/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_dalio/tools.json +56 -30
- package/knowledge/solo-test/masters/master_damodaran/decision_policy.json +58 -10
- package/knowledge/solo-test/masters/master_damodaran/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_damodaran/manifest.json +23 -8
- package/knowledge/solo-test/masters/master_damodaran/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_damodaran/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_damodaran/tools.json +54 -28
- package/knowledge/solo-test/masters/master_druckenmiller/decision_policy.json +89 -10
- package/knowledge/solo-test/masters/master_druckenmiller/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_druckenmiller/manifest.json +25 -8
- package/knowledge/solo-test/masters/master_druckenmiller/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_druckenmiller/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_druckenmiller/tools.json +55 -29
- package/knowledge/solo-test/masters/master_duan_yongping/decision_policy.json +138 -13
- package/knowledge/solo-test/masters/master_duan_yongping/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_duan_yongping/manifest.json +31 -11
- package/knowledge/solo-test/masters/master_duan_yongping/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_duan_yongping/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_duan_yongping/tools.json +82 -30
- package/knowledge/solo-test/masters/master_fisher/decision_policy.json +102 -11
- package/knowledge/solo-test/masters/master_fisher/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_fisher/manifest.json +27 -10
- package/knowledge/solo-test/masters/master_fisher/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_fisher/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_fisher/tools.json +58 -32
- package/knowledge/solo-test/masters/master_forensic_short/decision_policy.json +93 -14
- package/knowledge/solo-test/masters/master_forensic_short/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_forensic_short/manifest.json +20 -8
- package/knowledge/solo-test/masters/master_forensic_short/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_forensic_short/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_forensic_short/tools.json +53 -27
- package/knowledge/solo-test/masters/master_graham/decision_policy.json +103 -12
- package/knowledge/solo-test/masters/master_graham/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_graham/manifest.json +26 -8
- package/knowledge/solo-test/masters/master_graham/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_graham/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_graham/tools.json +67 -28
- package/knowledge/solo-test/masters/master_jhunjhunwala/decision_policy.json +77 -12
- package/knowledge/solo-test/masters/master_jhunjhunwala/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_jhunjhunwala/manifest.json +25 -10
- package/knowledge/solo-test/masters/master_jhunjhunwala/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_jhunjhunwala/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_jhunjhunwala/tools.json +54 -28
- package/knowledge/solo-test/masters/master_klarman/decision_policy.json +105 -14
- package/knowledge/solo-test/masters/master_klarman/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_klarman/manifest.json +22 -6
- package/knowledge/solo-test/masters/master_klarman/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_klarman/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_klarman/tools.json +55 -29
- package/knowledge/solo-test/masters/master_li_lu/decision_policy.json +101 -10
- package/knowledge/solo-test/masters/master_li_lu/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_li_lu/manifest.json +27 -10
- package/knowledge/solo-test/masters/master_li_lu/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_li_lu/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_li_lu/tools.json +58 -32
- package/knowledge/solo-test/masters/master_lynch/decision_policy.json +127 -16
- package/knowledge/solo-test/masters/master_lynch/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_lynch/manifest.json +28 -10
- package/knowledge/solo-test/masters/master_lynch/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_lynch/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_lynch/tools.json +67 -28
- package/knowledge/solo-test/masters/master_marks/decision_policy.json +71 -9
- package/knowledge/solo-test/masters/master_marks/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_marks/manifest.json +25 -10
- package/knowledge/solo-test/masters/master_marks/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_marks/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_marks/tools.json +54 -28
- package/knowledge/solo-test/masters/master_munger/decision_policy.json +141 -16
- package/knowledge/solo-test/masters/master_munger/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_munger/manifest.json +24 -10
- package/knowledge/solo-test/masters/master_munger/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_munger/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_munger/tools.json +52 -26
- package/knowledge/solo-test/masters/master_natenberg/decision_policy.json +59 -11
- package/knowledge/solo-test/masters/master_natenberg/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_natenberg/manifest.json +23 -10
- package/knowledge/solo-test/masters/master_natenberg/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_natenberg/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_natenberg/tools.json +50 -24
- package/knowledge/solo-test/masters/master_pabrai/decision_policy.json +125 -14
- package/knowledge/solo-test/masters/master_pabrai/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_pabrai/manifest.json +22 -6
- package/knowledge/solo-test/masters/master_pabrai/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_pabrai/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_pabrai/tools.json +55 -29
- package/knowledge/solo-test/masters/master_simons/decision_policy.json +59 -11
- package/knowledge/solo-test/masters/master_simons/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_simons/manifest.json +22 -8
- package/knowledge/solo-test/masters/master_simons/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_simons/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_simons/tools.json +43 -30
- package/knowledge/solo-test/masters/master_sinclair/decision_policy.json +59 -11
- package/knowledge/solo-test/masters/master_sinclair/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_sinclair/manifest.json +22 -10
- package/knowledge/solo-test/masters/master_sinclair/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_sinclair/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_sinclair/tools.json +54 -28
- package/knowledge/solo-test/masters/master_soros/decision_policy.json +98 -10
- package/knowledge/solo-test/masters/master_soros/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_soros/manifest.json +24 -11
- package/knowledge/solo-test/masters/master_soros/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_soros/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_soros/tools.json +54 -28
- package/knowledge/solo-test/masters/master_taleb/decision_policy.json +124 -13
- package/knowledge/solo-test/masters/master_taleb/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_taleb/manifest.json +23 -9
- package/knowledge/solo-test/masters/master_taleb/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_taleb/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_taleb/tools.json +50 -24
- package/knowledge/solo-test/masters/master_thorp/decision_policy.json +61 -13
- package/knowledge/solo-test/masters/master_thorp/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_thorp/manifest.json +25 -10
- package/knowledge/solo-test/masters/master_thorp/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_thorp/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_thorp/tools.json +56 -30
- package/knowledge/solo-test/persona-v3-solo-test-formulas/compilation-manifest.json +290 -264
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_ackman/components/tools.json +58 -32
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_ackman/provisional-derivations/market_capitalisation.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_ackman/provisional-derivations/owner_earnings_yield.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_aschenbrenner/components/tools.json +58 -32
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_aschenbrenner/provisional-derivations/market_capitalisation.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_aschenbrenner/provisional-derivations/price_implied_cash_yield.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_asness/components/tools.json +58 -32
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_asness/provisional-derivations/nominal_earnings_yield_gap.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_asness/provisional-derivations/real_earnings_yield_gap.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_bogle/components/tools.json +120 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_bogle/provisional-derivations/expected_return_over_long_bond.derived-proxy-evidence.json +77 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_bogle/provisional-derivations/fundamental_expected_return.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_buffett/components/tools.json +57 -31
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_buffett/provisional-derivations/market_capitalisation.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_buffett/provisional-derivations/owner_earnings_yield.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_burry/components/tools.json +58 -32
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_burry/provisional-derivations/net_current_asset_surplus_per_share.derived-proxy-evidence.json +77 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_burry/provisional-derivations/net_current_asset_value_per_share.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_cathie_wood/components/tools.json +58 -32
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_cathie_wood/provisional-derivations/current_cash_yield.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_cathie_wood/provisional-derivations/market_capitalisation.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_dalio/components/tools.json +58 -32
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_dalio/provisional-derivations/policy_real_rate.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_dalio/provisional-derivations/real_curve_slope.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_damodaran/components/tools.json +56 -30
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_damodaran/provisional-derivations/implied_equity_risk_premium.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_damodaran/provisional-derivations/{reverse_valuation.derived-proxy-evidence.json → premium_versus_long_run_average.derived-proxy-evidence.json} +29 -16
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_druckenmiller/components/tools.json +57 -31
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_druckenmiller/provisional-derivations/liquidity_curve_impulse.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_druckenmiller/provisional-derivations/policy_real_rate.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_duan_yongping/components/tools.json +84 -32
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_duan_yongping/provisional-derivations/five_year_opportunity_cost.derived-proxy-evidence.json +102 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_duan_yongping/provisional-derivations/margin_retention.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_fisher/components/tools.json +60 -34
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_fisher/provisional-derivations/margin_retention.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_fisher/provisional-derivations/reinvestment_spread.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_forensic_short/components/tools.json +55 -29
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_forensic_short/provisional-derivations/{accounting_rebuilder.derived-proxy-evidence.json → cash_conversion_gap.derived-proxy-evidence.json} +28 -15
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_forensic_short/provisional-derivations/cash_cover_of_leverage.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_graham/components/tools.json +69 -30
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_graham/provisional-derivations/defensive_hurdle_base.derived-proxy-evidence.json +89 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_graham/provisional-derivations/half_normalised_earnings_yield.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_jhunjhunwala/components/tools.json +56 -30
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_jhunjhunwala/provisional-derivations/cash_quality_gap.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_jhunjhunwala/provisional-derivations/real_structural_growth.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_klarman/components/tools.json +57 -31
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_klarman/provisional-derivations/downside_asset_coverage.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_klarman/provisional-derivations/market_capitalisation.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_li_lu/components/tools.json +60 -34
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_li_lu/provisional-derivations/cash_backed_decade_return.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_li_lu/provisional-derivations/decade_return_over_long_bond.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_lynch/components/tools.json +69 -30
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_lynch/provisional-derivations/growth_justified_capitalisation.derived-proxy-evidence.json +89 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_lynch/provisional-derivations/market_capitalisation.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_marks/components/tools.json +56 -30
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_marks/provisional-derivations/credit_cycle_position.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_marks/provisional-derivations/equity_over_corporate_debt.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_munger/components/tools.json +54 -28
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_munger/provisional-derivations/debt_service_cushion.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_munger/provisional-derivations/reported_earnings_cash_gap.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_natenberg/components/tools.json +52 -26
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_natenberg/provisional-derivations/{surface_builder.derived-proxy-evidence.json → normalised_skew.derived-proxy-evidence.json} +27 -14
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_natenberg/provisional-derivations/round_trip_cost.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_pabrai/components/tools.json +57 -31
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_pabrai/provisional-derivations/downside_floor_coverage.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_pabrai/provisional-derivations/market_capitalisation.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_simons/components/tools.json +45 -32
- package/knowledge/solo-test/persona-v3-solo-test-formulas/{master_natenberg/provisional-derivations/greeks_payoff.derived-proxy-evidence.json → master_simons/provisional-derivations/absolute_session_move.derived-proxy-evidence.json} +17 -17
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_simons/provisional-derivations/session_move_over_implied.derived-proxy-evidence.json +77 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_sinclair/components/tools.json +56 -30
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_sinclair/provisional-derivations/round_trip_cost.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_sinclair/provisional-derivations/volatility_per_unit_of_width.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_soros/components/tools.json +56 -30
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_soros/provisional-derivations/credit_cycle_position.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_soros/provisional-derivations/financing_burden.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_taleb/components/tools.json +52 -26
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_taleb/provisional-derivations/debt_service_cushion.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_taleb/provisional-derivations/{tail_friction.derived-proxy-evidence.json → normalised_skew.derived-proxy-evidence.json} +27 -14
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_thorp/components/tools.json +58 -32
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_thorp/provisional-derivations/edge_per_unit_of_volatility.derived-proxy-evidence.json +77 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_thorp/provisional-derivations/net_edge.derived-proxy-evidence.json +76 -0
- package/mcp/lib/breadth.mjs +122 -0
- package/mcp/lib/codex.mjs +3 -3
- package/mcp/lib/constants.mjs +76 -25
- package/mcp/lib/council-options.mjs +95 -40
- package/mcp/lib/council-selection.mjs +95 -9
- package/mcp/lib/damodaran.mjs +119 -0
- package/mcp/lib/fred.mjs +246 -0
- package/mcp/lib/fund-holdings-parsers.mjs +297 -0
- package/mcp/lib/fundamentals.mjs +801 -0
- package/mcp/lib/funds.mjs +750 -0
- package/mcp/lib/gates.mjs +149 -15
- package/mcp/lib/grounding.mjs +188 -36
- package/mcp/lib/index-aggregate.mjs +718 -0
- package/mcp/lib/insider-ownership.mjs +149 -0
- package/mcp/lib/instrument-facts.mjs +557 -0
- package/mcp/lib/instruments.mjs +191 -0
- package/mcp/lib/lang.mjs +109 -2
- package/mcp/lib/markdown.mjs +620 -138
- package/mcp/lib/master-catalog.mjs +32 -3
- package/mcp/lib/orchestrator.mjs +1121 -290
- package/mcp/lib/packets.mjs +227 -21
- package/mcp/lib/personas/engine.mjs +44 -31
- package/mcp/lib/personas-v3/compiler.mjs +2 -0
- package/mcp/lib/personas-v3/deterministic-executor.mjs +13 -2
- package/mcp/lib/personas-v3/ga-external-evidence.mjs +3 -2
- package/mcp/lib/personas-v3/ga-gate.mjs +2 -1
- package/mcp/lib/personas-v3/ga-package-evidence.mjs +5 -4
- package/mcp/lib/personas-v3/grounding-adapter.mjs +309 -2
- package/mcp/lib/personas-v3/loader.mjs +10 -7
- package/mcp/lib/personas-v3/production-root.mjs +5 -4
- package/mcp/lib/personas-v3/release-formula-evidence.mjs +14 -7
- package/mcp/lib/personas-v3/release-source-evidence.mjs +2 -1
- package/mcp/lib/personas-v3/releases.mjs +5 -4
- package/mcp/lib/personas-v3/runtime-release-integrity.mjs +6 -5
- package/mcp/lib/personas-v3/semantic-source-adjudication.mjs +2 -1
- package/mcp/lib/personas-v3/semantic-source-extraction.mjs +2 -1
- package/mcp/lib/personas-v3/semantic-source-skeptic-review.mjs +2 -1
- package/mcp/lib/personas-v3/source-acquisition.mjs +10 -3
- package/mcp/lib/personas-v3/source-review-operations.mjs +3 -2
- package/mcp/lib/personas-v3/staging.mjs +22 -3
- package/mcp/lib/prompts.mjs +119 -2
- package/mcp/lib/quotes.mjs +5 -0
- package/mcp/lib/rpc.mjs +101 -42
- package/mcp/lib/run-store.mjs +28 -3
- package/mcp/lib/sec.mjs +32 -0
- package/mcp/lib/tables.mjs +11 -0
- package/mcp/lib/voice.mjs +122 -0
- package/mcp/lib/xbrl-aggregates.mjs +153 -0
- package/mcp/lib/xbrl-series.mjs +339 -0
- package/mcp/lib/xlsx.mjs +155 -0
- package/package.json +5 -5
- package/personas/masters/masters-value/bogle.md +145 -0
- package/schemas/council-evaluation-protocol-v1.schema.json +2 -2
- package/schemas/persona-v3-ai-assisted-solo-profile-v1.schema.json +2 -2
- package/schemas/persona-v3-ai-machine-simulation-v1.schema.json +1 -1
- package/schemas/persona-v3-build-spec-v1.schema.json +3 -3
- package/schemas/persona-v3-release-formula-review-evidence-v1.schema.json +3 -3
- package/schemas/persona-v3-release-manifest-v1.schema.json +6 -6
- package/schemas/persona-v3-release-source-review-evidence-v1.schema.json +3 -3
- package/schemas/persona-v3-tool-graph-v1.schema.json +1 -1
- package/schemas/persona-v3.schema.json +37 -2
- package/schemas/source-review-batch-v1.schema.json +9 -9
- package/scripts/assemble-persona-v3-release.mjs +3 -2
- package/scripts/build-persona-v3-solo-test-packs.mjs +6 -8
- package/scripts/check-persona-v3-ga.mjs +1 -1
- package/scripts/check-persona-v3-production-candidates.mjs +1 -1
- package/scripts/compile-persona-v3-formulas.mjs +19 -18
- package/scripts/doctor.mjs +11 -9
- package/scripts/export-persona-source-review-batch.mjs +1 -1
- package/scripts/generate-persona-v3-drafts.mjs +2 -2
- package/scripts/lib/build-profile.mjs +24 -0
- package/scripts/lib/council-evaluation-protocol.mjs +7 -6
- package/scripts/lib/host-capabilities.mjs +2 -1
- package/scripts/lib/packaged-host-parity.mjs +63 -8
- package/scripts/lib/persona-v3-ai-assisted-solo-status.mjs +6 -4
- package/scripts/lib/persona-v3-ai-formula-review.mjs +6 -5
- package/scripts/lib/persona-v3-ai-machine-simulations.mjs +32 -4
- package/scripts/lib/persona-v3-build-specs.mjs +3 -2
- package/scripts/lib/persona-v3-draft-packs.mjs +2 -2
- package/scripts/lib/persona-v3-formula-pipeline.mjs +11 -10
- package/scripts/lib/persona-v3-production-candidates.mjs +10 -9
- package/scripts/lib/persona-v3-solo-formula-pipeline.mjs +182 -16
- package/scripts/lib/persona-v3-solo-test-packs.mjs +143 -16
- package/scripts/package-smoke.mjs +32 -12
- package/scripts/report-persona-corpus-gaps.mjs +4 -1
- package/scripts/review-persona-v3-solo-formulas.mjs +12 -8
- package/scripts/run-tests.mjs +23 -2
- package/scripts/scaffold-persona-v3-staging.mjs +1 -1
- package/skills/agent-skills-governance/SKILL.md +8 -2
- package/skills/alphacouncil-agent/SKILL.md +60 -9
- package/skills/public-equity-investing/SKILL.md +17 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_ackman/provisional-derivations/change_value_bridge.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_ackman/provisional-derivations/power_map.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_aschenbrenner/provisional-derivations/compute_power_bridge.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_aschenbrenner/provisional-derivations/timeline_reverse_valuation.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_asness/provisional-derivations/crowding_cost_stress.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_asness/provisional-derivations/factor_decomposer.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_buffett/provisional-derivations/incremental_returns.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_buffett/provisional-derivations/owner_earnings_rebuilder.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_burry/provisional-derivations/capital_structure_reader.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_burry/provisional-derivations/mispricing_carry.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_cathie_wood/provisional-derivations/capture_valuation_bridge.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_cathie_wood/provisional-derivations/cost_adoption_curve.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_dalio/provisional-derivations/debt_driver_stress.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_dalio/provisional-derivations/regime_classifier.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_damodaran/provisional-derivations/story_dcf.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_druckenmiller/provisional-derivations/inflection_payoff.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_druckenmiller/provisional-derivations/liquidity_revision_map.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_duan_yongping/provisional-derivations/opportunity_cost.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_duan_yongping/provisional-derivations/user_value_evidence.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_fisher/provisional-derivations/research_productivity.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_fisher/provisional-derivations/scuttlebutt_graph.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_forensic_short/provisional-derivations/borrow_catalyst.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_graham/provisional-derivations/asset_floor.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_graham/provisional-derivations/normalized_earnings.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_jhunjhunwala/provisional-derivations/penetration_liquidity.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_jhunjhunwala/provisional-derivations/promoter_governance.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_klarman/provisional-derivations/cash_catalyst_compare.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_klarman/provisional-derivations/recovery_waterfall.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_li_lu/provisional-derivations/promise_integrity_ledger.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_li_lu/provisional-derivations/ten_year_return_bridge.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_lynch/provisional-derivations/category_classifier.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_lynch/provisional-derivations/story_numbers_check.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_marks/provisional-derivations/cycle_temperature.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_marks/provisional-derivations/implied_expectations.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_munger/provisional-derivations/failure_path_graph.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_munger/provisional-derivations/incentive_map.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_pabrai/provisional-derivations/discrete_payoff.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_pabrai/provisional-derivations/downside_floor.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_simons/provisional-derivations/leakage_audit.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_simons/provisional-derivations/oos_cost_test.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_sinclair/provisional-derivations/net_edge_sizer.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_sinclair/provisional-derivations/realized_vol_forecast.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_soros/provisional-derivations/reflexivity_graph.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_soros/provisional-derivations/reversal_monitor.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_taleb/provisional-derivations/payoff_ruin.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_thorp/provisional-derivations/edge_recalculator.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_thorp/provisional-derivations/fractional_kelly.derived-proxy-evidence.json +0 -64
|
@@ -0,0 +1,564 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Authored method logic for the six quant, options and adversarial seats, keyed by persona id.
|
|
3
|
+
*
|
|
4
|
+
* Same contract and same discipline as the other authored files: taleb, thorp, simons, soros,
|
|
5
|
+
* sinclair and burry get their real formulas and their real decision policies, and a seat
|
|
6
|
+
* absent from this set keeps the mechanical identity proxy.
|
|
7
|
+
*
|
|
8
|
+
* Everything here is AI-authored and unreviewed. It is barred from production admission by the
|
|
9
|
+
* same gates that bar the mechanical proxies; what changes is only that the arithmetic is now
|
|
10
|
+
* the method's own rather than a placeholder. Each seat names its published source in
|
|
11
|
+
* `provenance`, and every veto and scoring rule says in `rationale` what the person actually
|
|
12
|
+
* claimed. Where a published method gives a direction but no number, the rationale says so and
|
|
13
|
+
* labels the cut-off as this project's reading rather than the author's.
|
|
14
|
+
*
|
|
15
|
+
* These six are the batch where the gap between the method and the facts is widest, so each
|
|
16
|
+
* `provenance` opens by naming what is missing rather than burying it: there is no realised
|
|
17
|
+
* volatility and no volatility forecast (Sinclair's gross edge), no sample definition at all -
|
|
18
|
+
* no dataset, no feature timestamps, no holdout, no count of hypotheses tried (Simons's entire
|
|
19
|
+
* test), no variance fact for the Kelly denominator (Thorp's actual formula), no dated
|
|
20
|
+
* loop-break condition (Soros's own requirement), and no seniority, covenant, borrow or carry
|
|
21
|
+
* detail, which is to say no mispricing mechanism (Burry's whole subject). Each seat uses the
|
|
22
|
+
* nearest defensible substitute and says which one it is; none of them invents a threshold to
|
|
23
|
+
* stand where a missing fact should be.
|
|
24
|
+
*
|
|
25
|
+
* ---------------------------------------------------------------------------------------
|
|
26
|
+
* Contract notes for the pipeline that consumes this file
|
|
27
|
+
* ---------------------------------------------------------------------------------------
|
|
28
|
+
*
|
|
29
|
+
* 1. `native_state` values are the RAW state names from each seat's
|
|
30
|
+
* `native_decision_contract.states` in `data/persona-v3-build-specs.v1.mjs`. They are mapped
|
|
31
|
+
* through `executableNativeState()`, which adds the `provisional_` prefix. Do not pre-prefix
|
|
32
|
+
* them here or they double-prefix and stop matching the declared state set. Note that
|
|
33
|
+
* `master_thorp` legitimately declares a state literally named `out_of_scope`; it is a raw
|
|
34
|
+
* state name like any other and becomes `provisional_out_of_scope`.
|
|
35
|
+
*
|
|
36
|
+
* 2. `eligibility.all[]` entries carry the executor's own record shape
|
|
37
|
+
* (`condition_id` / `condition` / `on_false` / `on_uncomputable`) but omit `source_ids`,
|
|
38
|
+
* because the source id is minted at build time. The pipeline must inject `source_ids` the
|
|
39
|
+
* way it already does for hard vetoes and scoring rules, and must map both mapping states
|
|
40
|
+
* through `executableNativeState()`.
|
|
41
|
+
*
|
|
42
|
+
* 3. `purpose` on tools and `rationale` on vetoes and rules are authoring metadata. The
|
|
43
|
+
* executor rejects unknown fields, so neither may be copied into the physical policy or tool
|
|
44
|
+
* records. Nor may `max_score` be written here: `authoredDecisionPolicy` computes it as the
|
|
45
|
+
* sum of `points`, and the band `min_ratio` values are fractions of that sum.
|
|
46
|
+
*
|
|
47
|
+
* 4. Chained tools: a tool consuming another tool's `output_id` must take the PRODUCER's
|
|
48
|
+
* `value_kind` and `unit` as its input contract. Every chain in this file is deliberately
|
|
49
|
+
* same-kind and same-unit - ratio/decimal into ratio/decimal for thorp and simons,
|
|
50
|
+
* monetary/currency_units into monetary/currency_units for burry - so it validates whether
|
|
51
|
+
* the consumer's or the producer's contract is used. That is why burry sets net current
|
|
52
|
+
* assets against the price by subtracting in one currency rather than by dividing a monetary
|
|
53
|
+
* numerator into a ratio the way buffett and graham do.
|
|
54
|
+
*
|
|
55
|
+
* 5. Shared `output_id`s are deliberate and denote the same number built the same way, across
|
|
56
|
+
* this file and the others:
|
|
57
|
+
* risk.debt_service_cushion taleb (= munger) interest cover less one
|
|
58
|
+
* options.normalised_skew taleb (= natenberg) 25-delta skew / at-the-money vol
|
|
59
|
+
* execution.round_trip_cost sinclair (= natenberg) quoted width paid twice
|
|
60
|
+
* macro.credit_spread_gap soros (= marks) high-yield OAS less 500bp
|
|
61
|
+
* In each case the two seats read the same number in opposite or unrelated directions, which
|
|
62
|
+
* is stated in the consuming seat's provenance rather than left to be noticed.
|
|
63
|
+
*
|
|
64
|
+
* 6. Scoring points are one per rule throughout, so `max_score` is the rule count.
|
|
65
|
+
*
|
|
66
|
+
* 7. Every "can this method speak at all" test is in `eligibility`, never in `scoring`.
|
|
67
|
+
* `min_coverage` is 1, so a single uncomputable scoring rule collapses a seat to
|
|
68
|
+
* out_of_scope, which is what made twenty-five seats abstain on every symbol. Each
|
|
69
|
+
* eligibility check here therefore gates on the facts its own rules and vetoes read that are
|
|
70
|
+
* NOT tool inputs; tool inputs are already covered by the pre-decision fact gate, so gating
|
|
71
|
+
* on one of those would be dead code that never runs.
|
|
72
|
+
*/
|
|
73
|
+
export const quantSeats = Object.freeze({
|
|
74
|
+
master_taleb: {
|
|
75
|
+
provenance:
|
|
76
|
+
"Nassim Nicholas Taleb: Dynamic Hedging (1997) on the volatility surface and the wings, where the price of a tail is judged against the level of at-the-money volatility rather than in absolute volatility points; The Black Swan (2007) and Antifragile (2012) on absorbing barriers, on convexity as the property worth paying for, and on debt as the mechanism that turns a survivable loss into a terminal one; \"The Fourth Quadrant\" (Edge, 2008) and Statistical Consequences of Fat Tails (2020) on ruin as an absorbing state that no expected-return argument survives. The ordering of this seat is his: ruin is tested first and only in the vetoes, and the score is then only about the shape of the payoff. What is missing is the payoff itself - there is no position, no strike and no exposure map in this pack - so convexity is read off the price of the tail rather than off a payoff diagram. `risk.debt_service_cushion` is interest cover less one, the same number the Munger seat builds and deliberately the same output id: Munger reads it as one half of a coupled failure, this seat reads it as the distance to the absorbing barrier. One-times cover is a definitional break-even, not a calibration. Three lines here are this project's reading because he published none: the two-turn cushion the score asks for, the leverage veto at one, and the five-per-cent normalised-skew line. The tail measure is the same normalised skew the Natenberg seat builds, read in the opposite direction - Natenberg wants a shape to spread against, this seat wants a tail the market has not already bid up, so that convexity can still be bought cheaply. The middle band is earned by either leg alone, so it should be read as ruin ruled out and nothing further claimed.",
|
|
77
|
+
tools: [
|
|
78
|
+
{
|
|
79
|
+
tool_id: "master_taleb.debt_service_cushion",
|
|
80
|
+
operation: "subtract",
|
|
81
|
+
inputs: [{ fact_id: "financial.interest_coverage" }, { literal: 1 }],
|
|
82
|
+
output_id: "risk.debt_service_cushion",
|
|
83
|
+
value_kind: "ratio",
|
|
84
|
+
unit: "multiple",
|
|
85
|
+
purpose:
|
|
86
|
+
"Distance from the absorbing barrier, in turns of operating earnings. Coverage of one is not a safety line but the failure itself, so what matters is how far the business stands from it; a coverage level on its own does not say that.",
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
tool_id: "master_taleb.normalised_skew",
|
|
90
|
+
operation: "divide",
|
|
91
|
+
inputs: [{ fact_id: "options.skew_25d" }, { fact_id: "options.implied_volatility" }],
|
|
92
|
+
output_id: "options.normalised_skew",
|
|
93
|
+
value_kind: "ratio",
|
|
94
|
+
unit: "decimal",
|
|
95
|
+
purpose:
|
|
96
|
+
"What the market currently charges for the downside tail, as a fraction of the volatility level it is charged against. Four volatility points of skew are a different price on a twelve-volatility name than on an eighty-volatility one, which is why the tail's price is the ratio and not the difference.",
|
|
97
|
+
},
|
|
98
|
+
],
|
|
99
|
+
eligibility: {
|
|
100
|
+
all: [
|
|
101
|
+
// He will not size an exposure whose downside he cannot bound. Bounding it needs two
|
|
102
|
+
// things this pack can supply: a floor under the assets, and the borrowed money standing
|
|
103
|
+
// in front of the equity. Missing either, the loss is unbounded as far as this seat can
|
|
104
|
+
// see, and the honest answer is silence rather than a score.
|
|
105
|
+
{
|
|
106
|
+
condition_id: "master_taleb.downside_is_boundable",
|
|
107
|
+
condition: {
|
|
108
|
+
op: "all",
|
|
109
|
+
conditions: [
|
|
110
|
+
{ op: "exists", value: { fact_id: "valuation.downside_floor" } },
|
|
111
|
+
{ op: "exists", value: { fact_id: "financial.leverage" } },
|
|
112
|
+
],
|
|
113
|
+
},
|
|
114
|
+
on_false: { native_state: "no_trade", common_stance: "out_of_scope" },
|
|
115
|
+
on_uncomputable: { native_state: "no_trade", common_stance: "out_of_scope" },
|
|
116
|
+
},
|
|
117
|
+
],
|
|
118
|
+
},
|
|
119
|
+
hard_vetoes: [
|
|
120
|
+
{
|
|
121
|
+
veto_id: "master_taleb.absorbing_barrier",
|
|
122
|
+
rationale:
|
|
123
|
+
"The first test, in the order he insists it be taken. A business whose operating earnings do not cover its fixed charges is not in a drawdown, it is in an absorbing state, and that distinction is the whole of his argument against reasoning from expected returns (The Black Swan on ruin; Statistical Consequences of Fat Tails on the absorbing barrier). A cushion at or below zero is one-times cover, which is the definitional break-even and not a threshold this project chose.",
|
|
124
|
+
condition: { op: "lte", left: { output_id: "risk.debt_service_cushion" }, right: { literal: 0 } },
|
|
125
|
+
on_trigger: { common_stance: "opposed", native_state: "no_trade" },
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
veto_id: "master_taleb.unbounded_downside",
|
|
129
|
+
rationale:
|
|
130
|
+
"He refuses to size anything whose downside he cannot bound, which is the load-bearing half of the barbell. A downside floor at or below zero says the assets bound nothing, so the loss has no observable limit and no price makes the exposure sizeable.",
|
|
131
|
+
condition: { op: "lte", left: { fact_id: "valuation.downside_floor" }, right: { literal: 0 } },
|
|
132
|
+
on_trigger: { common_stance: "opposed", native_state: "no_trade" },
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
veto_id: "master_taleb.leverage_is_the_fragility",
|
|
136
|
+
rationale:
|
|
137
|
+
"Antifragile's mechanism for fragility is debt, not volatility: borrowing is what converts a bad outcome into a terminal one. Borrowed money larger than the equity beneath it is this project's reading of where his refusal begins - he published no ratio - and it is deliberately stricter than the three-times tolerance the value seats carry, because this test is about survival rather than about the quality of a business.",
|
|
138
|
+
condition: { op: "gt", left: { fact_id: "financial.leverage" }, right: { literal: 1 } },
|
|
139
|
+
on_trigger: { common_stance: "opposed", native_state: "no_trade" },
|
|
140
|
+
},
|
|
141
|
+
],
|
|
142
|
+
scoring: [
|
|
143
|
+
{
|
|
144
|
+
rule_id: "taleb_survives_its_own_fixed_charges",
|
|
145
|
+
points: 1,
|
|
146
|
+
coverage_weight: 1,
|
|
147
|
+
rationale:
|
|
148
|
+
"Robustness is a different property from convexity - surviving the tail is not the same as being paid by it - and his own state ladder separates them, so the two rules are those two properties. A cushion of two turns above break-even, which is three-times cover, is this project's reading of enough distance from the barrier to call an exposure robust; it sits deliberately above the veto's break-even and below the five-times fixed-charge minimum the Graham tradition uses, and Taleb set neither number.",
|
|
149
|
+
condition: { op: "gte", left: { output_id: "risk.debt_service_cushion" }, right: { literal: 2 } },
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
rule_id: "taleb_tail_not_already_bid",
|
|
153
|
+
points: 1,
|
|
154
|
+
coverage_weight: 1,
|
|
155
|
+
rationale:
|
|
156
|
+
"The convexity leg. His trade is owning the wing the model underprices, and that requires the market not to have bid the wing up already: a normalised skew above five per cent of the at-the-money level means somebody is paying for the tail and the cheap convexity is gone. The five-per-cent line is this project's reading of a visible tail premium, and it is the same line the Natenberg seat reads for materiality - the same number, in the opposite direction.",
|
|
157
|
+
condition: { op: "lte", left: { output_id: "options.normalised_skew" }, right: { literal: 0.05 } },
|
|
158
|
+
},
|
|
159
|
+
],
|
|
160
|
+
bands: [
|
|
161
|
+
{ min_ratio: 0, common_stance: "cautious", native_state: "hedge_only" },
|
|
162
|
+
{ min_ratio: 0.5, common_stance: "cautious", native_state: "robust" },
|
|
163
|
+
{ min_ratio: 1, common_stance: "constructive", native_state: "convex_opportunity" },
|
|
164
|
+
],
|
|
165
|
+
},
|
|
166
|
+
|
|
167
|
+
master_thorp: {
|
|
168
|
+
provenance:
|
|
169
|
+
"Edward O. Thorp: Beat the Dealer (1962) and Beat the Market (1967, with Sheen Kassouf) on computing an edge before betting it; \"The Kelly Criterion in Blackjack, Sports Betting, and the Stock Market\" (1997, revised 2006), which gives the continuous-outcome optimum as the edge divided by the VARIANCE, shows the criterion maximises asymptotic growth and never risks ruin so long as a loss cannot exceed the stake, and argues for betting a fraction of that optimum because the inputs are estimates; and A Man for All Markets (2017), where edge, sizing and cost are one problem rather than three. Two substitutions are forced and neither is his. There is no variance fact in this pack, so `trade.edge_per_unit_of_volatility` divides by an annualised implied volatility instead: it is a Sharpe-shaped quantity that ranks edges and it is emphatically not a position size, so nothing here should be read as a Kelly fraction. And `market.change_pct` is one session's return while `execution.bid_ask` is the at-the-money option width as a fraction of the option's own mid price, so subtracting the second from the first is a friction screen in the sense the Natenberg seat states, not a like-for-like net return. The 0.063 line is arithmetic rather than judgement: an annualised volatility divided by the square root of 252 sessions is a one-day standard deviation, so 1/sqrt(252) is exactly the ratio at which the surviving edge equals one session's sigma. The leverage line at one is this project's reading of his stated premise that a loss cannot exceed the stake.",
|
|
170
|
+
tools: [
|
|
171
|
+
{
|
|
172
|
+
tool_id: "master_thorp.net_edge",
|
|
173
|
+
operation: "subtract",
|
|
174
|
+
inputs: [{ fact_id: "market.change_pct" }, { fact_id: "execution.bid_ask" }],
|
|
175
|
+
output_id: "trade.net_edge",
|
|
176
|
+
value_kind: "ratio",
|
|
177
|
+
unit: "decimal",
|
|
178
|
+
purpose:
|
|
179
|
+
"The observable move with one crossing of the market taken out of it. His objection to a gross edge is that it is never the number anyone actually receives, so the cost of transacting belongs inside the estimate rather than in a footnote to it.",
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
tool_id: "master_thorp.edge_per_unit_of_volatility",
|
|
183
|
+
operation: "divide",
|
|
184
|
+
inputs: [{ output_id: "trade.net_edge" }, { fact_id: "options.implied_volatility" }],
|
|
185
|
+
output_id: "trade.edge_per_unit_of_volatility",
|
|
186
|
+
value_kind: "ratio",
|
|
187
|
+
unit: "decimal",
|
|
188
|
+
purpose:
|
|
189
|
+
"The Kelly intuition in the only form these facts support: an edge means nothing until it is set against the dispersion of the thing being bet on. The criterion itself divides by the variance; this divides by an annualised volatility, so it ranks edges rather than sizing them.",
|
|
190
|
+
},
|
|
191
|
+
],
|
|
192
|
+
eligibility: {
|
|
193
|
+
all: [
|
|
194
|
+
// The Kelly result holds only where a loss cannot exceed the stake, and borrowed money
|
|
195
|
+
// is the standard way that premise fails. With no leverage figure the ruin constraint
|
|
196
|
+
// cannot be evaluated, so the sizing question cannot honestly be asked at all.
|
|
197
|
+
{
|
|
198
|
+
condition_id: "master_thorp.ruin_constraint_evaluable",
|
|
199
|
+
condition: { op: "exists", value: { fact_id: "financial.leverage" } },
|
|
200
|
+
on_false: { native_state: "out_of_scope", common_stance: "out_of_scope" },
|
|
201
|
+
on_uncomputable: { native_state: "out_of_scope", common_stance: "out_of_scope" },
|
|
202
|
+
},
|
|
203
|
+
],
|
|
204
|
+
},
|
|
205
|
+
hard_vetoes: [
|
|
206
|
+
{
|
|
207
|
+
veto_id: "master_thorp.edge_inside_the_friction",
|
|
208
|
+
rationale:
|
|
209
|
+
"His refusal, and the reason Beat the Market spends as long on execution as on the model: an edge that does not survive being entered and exited is not an edge but a fee. The net edge already has one crossing removed, so requiring what is left to still exceed the width is requiring the round trip to be paid in full. Below that there is nothing to size, and no threshold has to be chosen for the seat to say so.",
|
|
210
|
+
condition: { op: "lte", left: { output_id: "trade.net_edge" }, right: { fact_id: "execution.bid_ask" } },
|
|
211
|
+
on_trigger: { common_stance: "opposed", native_state: "no_measurable_edge" },
|
|
212
|
+
},
|
|
213
|
+
],
|
|
214
|
+
scoring: [
|
|
215
|
+
{
|
|
216
|
+
rule_id: "thorp_edge_beyond_one_session_sigma",
|
|
217
|
+
points: 1,
|
|
218
|
+
coverage_weight: 1,
|
|
219
|
+
rationale:
|
|
220
|
+
"An edge has to be large relative to the noise it was measured in, which is the entire content of dividing by dispersion. An annualised implied volatility is one session's standard deviation multiplied by the square root of 252, so a ratio of 1/sqrt(252), or 0.063, is precisely the point at which the surviving edge equals a one-day sigma. The square-root-of-time convention supplies the number; nothing here is a chosen cut-off.",
|
|
221
|
+
condition: { op: "gte", left: { output_id: "trade.edge_per_unit_of_volatility" }, right: { literal: 0.063 } },
|
|
222
|
+
},
|
|
223
|
+
{
|
|
224
|
+
rule_id: "thorp_loss_cannot_exceed_the_stake",
|
|
225
|
+
points: 1,
|
|
226
|
+
coverage_weight: 1,
|
|
227
|
+
rationale:
|
|
228
|
+
"The premise the Kelly result rests on, and the one he returns to whenever he warns against full-Kelly sizing: the criterion avoids ruin only where a loss cannot exceed what was staked. Borrowed money is how that premise fails. Debt no larger than the equity beneath it is this project's reading of the condition and not a ratio Thorp published; without it the seat may see an edge but has no basis for putting size behind it, which is exactly what its middle state is named for.",
|
|
229
|
+
condition: { op: "lte", left: { fact_id: "financial.leverage" }, right: { literal: 1 } },
|
|
230
|
+
},
|
|
231
|
+
],
|
|
232
|
+
bands: [
|
|
233
|
+
{ min_ratio: 0, common_stance: "opposed", native_state: "no_measurable_edge" },
|
|
234
|
+
{ min_ratio: 0.5, common_stance: "cautious", native_state: "positive_edge_no_size" },
|
|
235
|
+
{ min_ratio: 1, common_stance: "constructive", native_state: "fractional_position" },
|
|
236
|
+
],
|
|
237
|
+
},
|
|
238
|
+
|
|
239
|
+
master_simons: {
|
|
240
|
+
provenance:
|
|
241
|
+
"James Simons on research discipline rather than on any Renaissance signal: the MIT lecture \"Mathematics, Common Sense, and Good Luck: My Life and Careers\" (2010), the TED conversation (2015) and his Institute for Advanced Study talks, where the recurring claims are that a signal is tested against data rather than argued for, that a single observation is not evidence of anything, and that the edge on any one trade is tiny and exists only in aggregate across many weakly related bets. The honest headline is what this seat cannot do. His own veto families - look-ahead leakage, no untouched holdout, cost erasure - are exactly the tests the fact pack cannot support: there is no sample definition of any kind here, no dataset, no feature or label timestamps, no out-of-sample partition, no count of hypotheses tried, no turnover and no cost model. Nothing in this seat is a signal test and it must not be reported as one. What the facts do support is one statistically framed comparison: a realised session move measured against the distribution the option market is itself quoting. Because implied volatility is annualised, one session's standard deviation is that volatility divided by the square root of 252, so the ratio lines 0.063 and 0.126 are one and two implied sigmas - arithmetic, not chosen cut-offs. The band names are the build spec's. Reaching the top band means only that one session moved further than two of the option market's own sigmas; it is not a finding that a deployable signal exists, and the seat has no way to establish that it does.",
|
|
242
|
+
tools: [
|
|
243
|
+
{
|
|
244
|
+
tool_id: "master_simons.absolute_session_move",
|
|
245
|
+
operation: "abs",
|
|
246
|
+
inputs: [{ fact_id: "market.change_pct" }],
|
|
247
|
+
output_id: "market.absolute_session_move",
|
|
248
|
+
value_kind: "ratio",
|
|
249
|
+
unit: "decimal",
|
|
250
|
+
purpose:
|
|
251
|
+
"Magnitude before direction. Whether something happened is a two-sided question, and the sign of a single session is a story rather than a hypothesis.",
|
|
252
|
+
},
|
|
253
|
+
{
|
|
254
|
+
tool_id: "master_simons.session_move_over_implied",
|
|
255
|
+
operation: "divide",
|
|
256
|
+
inputs: [{ output_id: "market.absolute_session_move" }, { fact_id: "options.implied_volatility" }],
|
|
257
|
+
output_id: "market.session_move_over_implied",
|
|
258
|
+
value_kind: "ratio",
|
|
259
|
+
unit: "decimal",
|
|
260
|
+
purpose:
|
|
261
|
+
"The realised move expressed in the units of the distribution the option market is quoting. A move only means something against a stated expectation, and the implied volatility is the only stated expectation this pack carries.",
|
|
262
|
+
},
|
|
263
|
+
],
|
|
264
|
+
eligibility: {
|
|
265
|
+
all: [
|
|
266
|
+
// A defined sample is what the method requires and what the facts cannot supply. The
|
|
267
|
+
// weakest available stand-in for "is a distribution being quoted at all" is a two-sided
|
|
268
|
+
// surface: with no skew there is one number and no shape, so a realised move has nothing
|
|
269
|
+
// to be tested against. That is an invalid test, not a negative result.
|
|
270
|
+
{
|
|
271
|
+
condition_id: "master_simons.quoted_distribution_available",
|
|
272
|
+
condition: { op: "exists", value: { fact_id: "options.skew_25d" } },
|
|
273
|
+
on_false: { native_state: "invalid_test", common_stance: "out_of_scope" },
|
|
274
|
+
on_uncomputable: { native_state: "invalid_test", common_stance: "out_of_scope" },
|
|
275
|
+
},
|
|
276
|
+
],
|
|
277
|
+
},
|
|
278
|
+
hard_vetoes: [
|
|
279
|
+
{
|
|
280
|
+
veto_id: "master_simons.no_observation_to_test",
|
|
281
|
+
rationale:
|
|
282
|
+
"A session that did not move is not an observation of anything, and scoring it would be manufacturing a result out of an empty sample. This is the only refusal the available facts can express, which is itself the finding: his real vetoes are leakage, an absent holdout and cost erasure, and not one of the three has a fact in this pack to be tested against.",
|
|
283
|
+
condition: { op: "lte", left: { output_id: "market.session_move_over_implied" }, right: { literal: 0 } },
|
|
284
|
+
on_trigger: { common_stance: "out_of_scope", native_state: "invalid_test" },
|
|
285
|
+
},
|
|
286
|
+
],
|
|
287
|
+
scoring: [
|
|
288
|
+
{
|
|
289
|
+
rule_id: "simons_move_beyond_one_implied_sigma",
|
|
290
|
+
points: 1,
|
|
291
|
+
coverage_weight: 1,
|
|
292
|
+
rationale:
|
|
293
|
+
"The first rung of the only statistically framed comparison available. An annualised implied volatility divided by the square root of 252 sessions is a one-day standard deviation, so a ratio above 1/sqrt(252) = 0.063 is a session that moved further than the option market's own one-sigma expectation. The square-root-of-time convention supplies the number, not this project.",
|
|
294
|
+
condition: { op: "gt", left: { output_id: "market.session_move_over_implied" }, right: { literal: 0.063 } },
|
|
295
|
+
},
|
|
296
|
+
{
|
|
297
|
+
rule_id: "simons_move_beyond_two_implied_sigma",
|
|
298
|
+
points: 1,
|
|
299
|
+
coverage_weight: 1,
|
|
300
|
+
rationale:
|
|
301
|
+
"The second rung, at 2/sqrt(252) = 0.126. Grading the same quantity at one and two sigmas is the only way these facts can express the distinction he cares about - between a move inside the quoted distribution and one the quoted distribution did not allow for - and it remains a single observation, which is still not a sample.",
|
|
302
|
+
condition: { op: "gt", left: { output_id: "market.session_move_over_implied" }, right: { literal: 0.126 } },
|
|
303
|
+
},
|
|
304
|
+
],
|
|
305
|
+
bands: [
|
|
306
|
+
{ min_ratio: 0, common_stance: "opposed", native_state: "no_signal" },
|
|
307
|
+
{ min_ratio: 0.5, common_stance: "cautious", native_state: "research_candidate" },
|
|
308
|
+
{ min_ratio: 1, common_stance: "constructive", native_state: "deployable_signal" },
|
|
309
|
+
],
|
|
310
|
+
},
|
|
311
|
+
|
|
312
|
+
master_soros: {
|
|
313
|
+
provenance:
|
|
314
|
+
"George Soros, The Alchemy of Finance (1987), especially the theory of reflexivity and the real-time experiment, in which price and the fundamentals supposed to justify it feed each other through financing; \"Fallibility, Reflexivity, and the Human Uncertainty Principle\" (Journal of Economic Methodology, 2013), his own formal restatement; and The New Paradigm for Financial Markets (2008), where the credit leg is explicit and the boom is described as running on the availability of financing rather than on the fundamentals. What this seat cannot carry is his own central requirement - a dated, observable break condition specified before the outcome is known - so it reads the two legs as they currently stand and claims no reversal trigger. The observable loop these facts support has exactly two legs, price action and the price of credit. `macro.credit_spread` is the ICE BofA US High Yield option-adjusted spread and `macro.credit_spread_gap` is that spread less its roughly five-hundred-basis-point long-run average: the same number the Marks seat builds and deliberately the same output id, read differently - Marks reads it as the temperature of the cycle, this seat as whether the loop is still being financed. `reflexivity.financing_burden` is leverage multiplied by that spread, which is the risk premium the credit market charges this borrower's capital structure expressed per unit of equity; it measures how hard the credit leg can push on the fundamentals, and it is zero where there is no debt for credit conditions to act on. His tell is the divergence between the two legs, which is why the middle band is the one that names it, and `market.change_pct` is a single session - a thin proxy for the price leg, treated as such.",
|
|
315
|
+
tools: [
|
|
316
|
+
{
|
|
317
|
+
tool_id: "master_soros.credit_cycle_position",
|
|
318
|
+
operation: "subtract",
|
|
319
|
+
inputs: [{ fact_id: "macro.credit_spread" }, { literal: 0.05 }],
|
|
320
|
+
output_id: "macro.credit_spread_gap",
|
|
321
|
+
value_kind: "ratio",
|
|
322
|
+
unit: "decimal",
|
|
323
|
+
purpose:
|
|
324
|
+
"The financing leg, measured against its own long-run average rather than in the abstract. What matters to a reflexive process is not the level of the spread but whether credit is currently easier or harder than usual, because that is what changes what borrowers are able to do.",
|
|
325
|
+
},
|
|
326
|
+
{
|
|
327
|
+
tool_id: "master_soros.financing_burden",
|
|
328
|
+
operation: "multiply",
|
|
329
|
+
inputs: [{ fact_id: "financial.leverage" }, { fact_id: "macro.credit_spread" }],
|
|
330
|
+
output_id: "reflexivity.financing_burden",
|
|
331
|
+
value_kind: "ratio",
|
|
332
|
+
unit: "decimal",
|
|
333
|
+
purpose:
|
|
334
|
+
"How hard the credit leg can push on this particular borrower: debt per unit of equity multiplied by the risk premium charged on it. An unlevered business is insulated from the financing channel, and reflexivity with no channel is a story about price rather than a loop.",
|
|
335
|
+
},
|
|
336
|
+
],
|
|
337
|
+
eligibility: {
|
|
338
|
+
all: [
|
|
339
|
+
// Reflexivity is a claim about price feeding back into fundamentals. With no price
|
|
340
|
+
// action there is no price leg, so there is no loop to describe and nothing for the
|
|
341
|
+
// credit leg to interact with.
|
|
342
|
+
{
|
|
343
|
+
condition_id: "master_soros.price_leg_observable",
|
|
344
|
+
condition: { op: "exists", value: { fact_id: "market.change_pct" } },
|
|
345
|
+
on_false: { native_state: "no_loop", common_stance: "out_of_scope" },
|
|
346
|
+
on_uncomputable: { native_state: "no_loop", common_stance: "out_of_scope" },
|
|
347
|
+
},
|
|
348
|
+
],
|
|
349
|
+
},
|
|
350
|
+
hard_vetoes: [
|
|
351
|
+
{
|
|
352
|
+
veto_id: "master_soros.no_reflexive_link",
|
|
353
|
+
rationale:
|
|
354
|
+
"The build spec's first veto family and Alchemy's own standard: a reflexivity thesis has to show feedback that reaches the fundamentals, not merely a price that moved. Where leverage is zero the financing burden is zero, credit conditions cannot touch this borrower's economics, and there is no loop to be right or wrong about - a question outside the method rather than a verdict on the security.",
|
|
355
|
+
condition: { op: "lte", left: { output_id: "reflexivity.financing_burden" }, right: { literal: 0 } },
|
|
356
|
+
on_trigger: { common_stance: "out_of_scope", native_state: "no_loop" },
|
|
357
|
+
},
|
|
358
|
+
{
|
|
359
|
+
veto_id: "master_soros.price_outruns_its_financing",
|
|
360
|
+
rationale:
|
|
361
|
+
"The configuration The New Paradigm for Financial Markets describes at the end of a boom: price still rising while lenders demand more than their long-run average for risk. The leg that financed the advance has turned against it, so what is left is a price held up by belief rather than by credit - the state in which he is on the other side of it rather than a buyer.",
|
|
362
|
+
condition: {
|
|
363
|
+
op: "all",
|
|
364
|
+
conditions: [
|
|
365
|
+
{ op: "gt", left: { fact_id: "market.change_pct" }, right: { literal: 0 } },
|
|
366
|
+
{ op: "gt", left: { output_id: "macro.credit_spread_gap" }, right: { literal: 0 } },
|
|
367
|
+
],
|
|
368
|
+
},
|
|
369
|
+
on_trigger: { common_stance: "opposed", native_state: "broken" },
|
|
370
|
+
},
|
|
371
|
+
],
|
|
372
|
+
scoring: [
|
|
373
|
+
{
|
|
374
|
+
rule_id: "soros_price_leg_rising",
|
|
375
|
+
points: 1,
|
|
376
|
+
coverage_weight: 1,
|
|
377
|
+
rationale:
|
|
378
|
+
"The first leg as Alchemy sets it out: the prevailing bias has to be showing up in the price before there is anything for the fundamentals to respond to. Zero is the natural line and no threshold needs choosing. One session is a thin proxy for a trend and the seat claims nothing beyond the direction it carries.",
|
|
379
|
+
condition: { op: "gt", left: { fact_id: "market.change_pct" }, right: { literal: 0 } },
|
|
380
|
+
},
|
|
381
|
+
{
|
|
382
|
+
rule_id: "soros_financing_leg_permissive",
|
|
383
|
+
points: 1,
|
|
384
|
+
coverage_weight: 1,
|
|
385
|
+
rationale:
|
|
386
|
+
"The second leg. A high-yield spread inside its long-run average means credit is cheaper than usual, which is the condition under which rising prices actually change what borrowers can finance - the feedback he says turns a belief into a fundamental. When the two legs disagree the seat scores one and lands in the state that names the disagreement, which is his tell rather than an inconclusive result.",
|
|
387
|
+
condition: { op: "lt", left: { output_id: "macro.credit_spread_gap" }, right: { literal: 0 } },
|
|
388
|
+
},
|
|
389
|
+
],
|
|
390
|
+
bands: [
|
|
391
|
+
{ min_ratio: 0, common_stance: "opposed", native_state: "broken" },
|
|
392
|
+
{ min_ratio: 0.5, common_stance: "cautious", native_state: "testing_reversal" },
|
|
393
|
+
{ min_ratio: 1, common_stance: "constructive", native_state: "reinforcing" },
|
|
394
|
+
],
|
|
395
|
+
},
|
|
396
|
+
|
|
397
|
+
master_sinclair: {
|
|
398
|
+
provenance:
|
|
399
|
+
"Euan Sinclair, Volatility Trading (2nd edition, 2013) and Positional Option Trading (2020): the edge in an option position is the difference between a forecast of realised volatility and the implied volatility being traded, and it counts only after the bid-ask has been paid on the way in and again on the way out, which is why he treats most claimed volatility edges as artefacts of ignoring the width. This pack carries no realised volatility and no forecast, so the gross half of his test cannot be computed at all and this seat does not pretend otherwise; what remains is the executability half, which is the half he says kills most trades. `execution.round_trip_cost` is the quoted width paid twice, the same number and the same output id as the Natenberg seat. `options.volatility_per_unit_of_width` is how many times that width fits inside the volatility being traded, so twenty means the round trip consumes a tenth of the volatility and four means it consumes half. The two quantities are not dimensionally identical - one is an annualised volatility, the other a fraction of the option's mid price - so this is a friction screen in the sense the Natenberg seat states, not an edge calculation. The differentiation from that seat is deliberate: Natenberg scores the shape of the priced skew and treats friction as a screen, while this seat refuses on friction and then asks only where the premium sits. The twenty is this project's reading, set to the same order of tolerance as Natenberg's tenth-of-mid line applied to a different denominator; Sinclair states the test qualitatively and publishes no share.",
|
|
400
|
+
tools: [
|
|
401
|
+
{
|
|
402
|
+
tool_id: "master_sinclair.round_trip_cost",
|
|
403
|
+
operation: "multiply",
|
|
404
|
+
inputs: [{ fact_id: "execution.bid_ask" }, { literal: 2 }],
|
|
405
|
+
output_id: "execution.round_trip_cost",
|
|
406
|
+
value_kind: "ratio",
|
|
407
|
+
unit: "decimal_of_mid",
|
|
408
|
+
purpose:
|
|
409
|
+
"The width is crossed twice, once to get the position on and once to get it off. Every edge has to clear the round trip, and the round trip is where most of the volatility edges he examines stop existing.",
|
|
410
|
+
},
|
|
411
|
+
{
|
|
412
|
+
tool_id: "master_sinclair.volatility_per_unit_of_width",
|
|
413
|
+
operation: "divide",
|
|
414
|
+
inputs: [{ fact_id: "options.implied_volatility" }, { fact_id: "execution.bid_ask" }],
|
|
415
|
+
output_id: "options.volatility_per_unit_of_width",
|
|
416
|
+
value_kind: "ratio",
|
|
417
|
+
unit: "multiple",
|
|
418
|
+
purpose:
|
|
419
|
+
"How many times the quoted width fits inside the volatility being traded. The gross edge is some fraction of that volatility and is not computable from these facts, so the number of widths available is the strongest statement this pack supports about whether any residual edge could survive execution.",
|
|
420
|
+
},
|
|
421
|
+
],
|
|
422
|
+
eligibility: {
|
|
423
|
+
all: [
|
|
424
|
+
// The method starts from a realised-volatility forecast, which this pack does not carry.
|
|
425
|
+
// The weakest honest substitute for "is there a volatility position to price at all" is
|
|
426
|
+
// a two-sided surface: with no skew there is a single number, no shape, and nothing to
|
|
427
|
+
// be long or short of. That is missing inputs rather than an absent edge.
|
|
428
|
+
{
|
|
429
|
+
condition_id: "master_sinclair.surface_has_a_shape",
|
|
430
|
+
condition: { op: "exists", value: { fact_id: "options.skew_25d" } },
|
|
431
|
+
on_false: { native_state: "insufficient_inputs", common_stance: "out_of_scope" },
|
|
432
|
+
on_uncomputable: { native_state: "insufficient_inputs", common_stance: "out_of_scope" },
|
|
433
|
+
},
|
|
434
|
+
],
|
|
435
|
+
},
|
|
436
|
+
hard_vetoes: [
|
|
437
|
+
{
|
|
438
|
+
veto_id: "master_sinclair.edge_dies_in_the_spread",
|
|
439
|
+
rationale:
|
|
440
|
+
"His flat refusal, and the difference between this seat and the Natenberg one: where Natenberg scores the same comparison as a friction screen, Sinclair treats it as disqualifying. A round trip costing as much as the whole volatility being traded cannot leave a residual edge behind under any forecast, so there is nothing to size and the refusal needs no chosen threshold.",
|
|
441
|
+
condition: { op: "gte", left: { output_id: "execution.round_trip_cost" }, right: { fact_id: "options.implied_volatility" } },
|
|
442
|
+
on_trigger: { common_stance: "opposed", native_state: "no_net_edge" },
|
|
443
|
+
},
|
|
444
|
+
],
|
|
445
|
+
scoring: [
|
|
446
|
+
{
|
|
447
|
+
rule_id: "sinclair_round_trip_leaves_room_for_an_edge",
|
|
448
|
+
points: 1,
|
|
449
|
+
coverage_weight: 1,
|
|
450
|
+
rationale:
|
|
451
|
+
"Volatility Trading's practical constraint stated as a share rather than as a refusal: twenty widths inside the traded volatility means the round trip consumes a tenth of it, which is the most friction he would ask a residual edge to carry. The tenth is this project's reading, deliberately the same order of tolerance as the Natenberg seat's tenth-of-mid line. This is the executability half of his test; the forecast half cannot be computed from these facts at all.",
|
|
452
|
+
condition: { op: "gte", left: { output_id: "options.volatility_per_unit_of_width" }, right: { literal: 20 } },
|
|
453
|
+
},
|
|
454
|
+
{
|
|
455
|
+
rule_id: "sinclair_premium_sits_in_the_puts",
|
|
456
|
+
points: 1,
|
|
457
|
+
coverage_weight: 1,
|
|
458
|
+
rationale:
|
|
459
|
+
"Where he says the harvestable volatility premium actually lives in equity options: the downside is bid relative to the upside, and a surface whose puts are no dearer than its calls is one in which the usual premium is simply absent. Zero is the natural line - the point at which the twenty-five-delta put and call are priced alike - so nothing is calibrated here.",
|
|
460
|
+
condition: { op: "gt", left: { fact_id: "options.skew_25d" }, right: { literal: 0 } },
|
|
461
|
+
},
|
|
462
|
+
],
|
|
463
|
+
bands: [
|
|
464
|
+
{ min_ratio: 0, common_stance: "opposed", native_state: "no_net_edge" },
|
|
465
|
+
{ min_ratio: 0.5, common_stance: "cautious", native_state: "paper_edge" },
|
|
466
|
+
{ min_ratio: 1, common_stance: "constructive", native_state: "executable_edge" },
|
|
467
|
+
],
|
|
468
|
+
},
|
|
469
|
+
|
|
470
|
+
master_burry: {
|
|
471
|
+
provenance:
|
|
472
|
+
"Michael Burry's own writing rather than accounts of it: the Scion Capital investor letters (2000-2008) and the MSN Money \"Value Investing\" columns and Silicon Investor posts that preceded them, in which he states plainly that his framework is Graham and Dodd, that he buys at a discount to a conservatively adjusted book value and hunts net-nets, and that he begins from the filings rather than from a view; and his 2010 testimony to the Financial Crisis Inquiry Commission and the New York Times piece \"I Saw the Crisis Coming. Why Didn't the Fed?\", which are primary evidence of the same habit of opening the original document. The limitation is load-bearing and belongs first: the mispricing mechanism itself is not a fact in this pack. Seniority, covenants, maturity schedules, off-balance-sheet claims, borrow availability and carry are all absent, so the structural, mechanically testable disagreement that is the entire point of the method cannot be located here. What is measurable is leverage, net current asset value against the price, and interest cover - which makes this seat a Graham-and-Dodd screen wearing his name, not a reconstruction of his research, and it should be read that way. Net current assets are put on a per-share basis and the price subtracted from them, so the comparison stays in one currency and never becomes a ratio built from a monetary numerator. The five-times fixed-charge line is Graham's published industrial minimum (The Intelligent Investor ch. 11), adopted because Burry adopted the framework by name; the leverage line at one is this project's reading and he published no ratio.",
|
|
473
|
+
tools: [
|
|
474
|
+
{
|
|
475
|
+
tool_id: "master_burry.net_current_asset_value_per_share",
|
|
476
|
+
operation: "divide",
|
|
477
|
+
inputs: [{ fact_id: "financial.net_current_asset_value" }, { fact_id: "capital_allocation.share_count" }],
|
|
478
|
+
output_id: "valuation.net_current_asset_value_per_share",
|
|
479
|
+
value_kind: "monetary",
|
|
480
|
+
unit: "currency_units",
|
|
481
|
+
purpose:
|
|
482
|
+
"Working capital net of every liability, expressed per share so that it can be set against a share price. This is the balance-sheet floor the early letters describe buying beneath, before any judgement about the business enters.",
|
|
483
|
+
},
|
|
484
|
+
{
|
|
485
|
+
tool_id: "master_burry.net_current_asset_surplus_per_share",
|
|
486
|
+
operation: "subtract",
|
|
487
|
+
inputs: [{ output_id: "valuation.net_current_asset_value_per_share" }, { fact_id: "market.price" }],
|
|
488
|
+
output_id: "valuation.net_current_asset_surplus_per_share",
|
|
489
|
+
value_kind: "monetary",
|
|
490
|
+
unit: "currency_units",
|
|
491
|
+
purpose:
|
|
492
|
+
"What is left per share once the price is paid, counted only in assets that turn into cash inside a year. Kept as a subtraction in one currency rather than as a coverage ratio so that both sides of the comparison stay in the same units.",
|
|
493
|
+
},
|
|
494
|
+
],
|
|
495
|
+
eligibility: {
|
|
496
|
+
all: [
|
|
497
|
+
// He starts from the capital structure: what stands ahead of the equity, and whether the
|
|
498
|
+
// business covers the charges on it. Missing either, there is no structure to read, and
|
|
499
|
+
// a disagreement that cannot be tested against the structure is precisely the trade he
|
|
500
|
+
// says he will not take.
|
|
501
|
+
{
|
|
502
|
+
condition_id: "master_burry.capital_structure_readable",
|
|
503
|
+
condition: {
|
|
504
|
+
op: "all",
|
|
505
|
+
conditions: [
|
|
506
|
+
{ op: "exists", value: { fact_id: "financial.leverage" } },
|
|
507
|
+
{ op: "exists", value: { fact_id: "financial.interest_coverage" } },
|
|
508
|
+
],
|
|
509
|
+
},
|
|
510
|
+
on_false: { native_state: "document_gap", common_stance: "out_of_scope" },
|
|
511
|
+
on_uncomputable: { native_state: "document_gap", common_stance: "out_of_scope" },
|
|
512
|
+
},
|
|
513
|
+
],
|
|
514
|
+
},
|
|
515
|
+
hard_vetoes: [
|
|
516
|
+
{
|
|
517
|
+
veto_id: "master_burry.cannot_survive_the_wait",
|
|
518
|
+
rationale:
|
|
519
|
+
"The build spec's \"cannot survive early\" family, in the only form these facts allow. An issuer carrying more debt than equity while failing to cover its fixed charges has its outcome settled at the refinancing table, on terms - borrow, carry, covenants - that this pack cannot see. Anything claimed about the price then rests on an opinion about a negotiation rather than on a structure that can be tested, which is the distinction his method turns on.",
|
|
520
|
+
condition: {
|
|
521
|
+
op: "all",
|
|
522
|
+
conditions: [
|
|
523
|
+
{ op: "gt", left: { fact_id: "financial.leverage" }, right: { literal: 1 } },
|
|
524
|
+
{ op: "lt", left: { fact_id: "financial.interest_coverage" }, right: { literal: 1 } },
|
|
525
|
+
],
|
|
526
|
+
},
|
|
527
|
+
on_trigger: { common_stance: "opposed", native_state: "opinion_only" },
|
|
528
|
+
},
|
|
529
|
+
],
|
|
530
|
+
scoring: [
|
|
531
|
+
{
|
|
532
|
+
rule_id: "burry_price_below_net_current_assets",
|
|
533
|
+
points: 1,
|
|
534
|
+
coverage_weight: 1,
|
|
535
|
+
rationale:
|
|
536
|
+
"The Graham-and-Dodd test he claimed by name in the MSN Money columns and applied in the early Scion letters: pay less than the working capital that survives every liability, so the balance sheet alone covers the purchase. A positive surplus per share is that test with no threshold to choose, because zero is where the price crosses the assets.",
|
|
537
|
+
condition: { op: "gt", left: { output_id: "valuation.net_current_asset_surplus_per_share" }, right: { literal: 0 } },
|
|
538
|
+
},
|
|
539
|
+
{
|
|
540
|
+
rule_id: "burry_equity_not_junior_to_more_debt_than_equity",
|
|
541
|
+
points: 1,
|
|
542
|
+
coverage_weight: 1,
|
|
543
|
+
rationale:
|
|
544
|
+
"Where he starts: the common stock is the residual claim, so how much stands in front of it decides what the analysis is even about. Debt no larger than the equity beneath it is this project's reading of a capital structure the equity still governs - he published no ratio - and it is deliberately the same line the Munger, Taleb and Thorp seats read for their own different reasons, so the four readings stay comparable.",
|
|
545
|
+
condition: { op: "lte", left: { fact_id: "financial.leverage" }, right: { literal: 1 } },
|
|
546
|
+
},
|
|
547
|
+
{
|
|
548
|
+
rule_id: "burry_issuer_can_wait_for_the_thesis",
|
|
549
|
+
points: 1,
|
|
550
|
+
coverage_weight: 1,
|
|
551
|
+
rationale:
|
|
552
|
+
"Being early is his documented failure mode, and the issuer has to survive the wait as much as the position does. Five times fixed-charge cover is Graham's published minimum for an industrial issue (The Intelligent Investor ch. 11), used here because Burry adopted that framework explicitly: it is a borrowed number, labelled as borrowed, and not one he set.",
|
|
553
|
+
condition: { op: "gte", left: { fact_id: "financial.interest_coverage" }, right: { literal: 5 } },
|
|
554
|
+
},
|
|
555
|
+
],
|
|
556
|
+
bands: [
|
|
557
|
+
{ min_ratio: 0, common_stance: "opposed", native_state: "opinion_only" },
|
|
558
|
+
{ min_ratio: 0.5, common_stance: "cautious", native_state: "watch" },
|
|
559
|
+
{ min_ratio: 1, common_stance: "constructive", native_state: "structural_mispricing" },
|
|
560
|
+
],
|
|
561
|
+
},
|
|
562
|
+
});
|
|
563
|
+
|
|
564
|
+
export default quantSeats;
|