alphacouncil-agent 0.9.4 → 1.0.1
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-plugin/marketplace.json +3 -3
- package/.claude-plugin/plugin.json +2 -2
- package/.codex-plugin/plugin.json +4 -4
- package/AGENTS.md +25 -11
- package/CHANGELOG.md +146 -0
- package/CLAUDE.md +24 -7
- package/README.ja.md +15 -10
- package/README.md +21 -13
- package/README.zh-CN.md +17 -12
- 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 +10 -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 +6 -10
- package/docs/personas.md +2 -1
- package/docs/plans/v1.0-roadmap.md +487 -0
- package/docs/plans/v1.1-basket-native-seats.md +267 -0
- package/docs/releases/v0.9.5.md +96 -0
- package/docs/releases/v1.0.0.md +164 -0
- package/docs/report-contract.md +30 -6
- 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/{regime_classifier.ai-review.json → policy_real_rate.ai-review.json} +49 -49
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/{master_munger/reviews/incentive_map.ai-review.json → master_dalio/reviews/real_curve_slope.ai-review.json} +51 -51
- 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/{user_value_evidence.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/{opportunity_cost.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_dalio/reviews/debt_driver_stress.ai-review.json → master_forensic_short/reviews/cash_conversion_gap.ai-review.json} +51 -51
- 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/reported_earnings_cash_gap.ai-review.json +277 -0
- 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/{leakage_audit.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/{oos_cost_test.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/{reflexivity_graph.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/{reversal_monitor.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/{fractional_kelly.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/{edge_recalculator.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 +13 -6
- 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 +12 -4
- 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 +11 -4
- 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 +10 -4
- 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 +12 -6
- 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 +12 -6
- 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 +10 -4
- 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 +9 -4
- 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 +11 -4
- 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 +17 -7
- 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 +13 -6
- 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 +6 -4
- 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 +12 -4
- 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 +11 -6
- 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 +8 -2
- 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 +13 -6
- 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 +14 -6
- 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 +11 -6
- 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 +10 -6
- 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 +9 -6
- 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 +8 -2
- 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 +8 -4
- 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 +8 -6
- 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 +10 -7
- 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 +9 -5
- 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 +11 -6
- 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 +126 -0
- package/mcp/lib/constants.mjs +15 -0
- 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/fund-observations.mjs +152 -0
- package/mcp/lib/fundamentals.mjs +806 -0
- package/mcp/lib/funds.mjs +785 -0
- package/mcp/lib/gates.mjs +71 -4
- package/mcp/lib/grounding.mjs +209 -36
- package/mcp/lib/index-aggregate.mjs +733 -0
- package/mcp/lib/insider-ownership.mjs +149 -0
- package/mcp/lib/instrument-facts.mjs +855 -0
- package/mcp/lib/instruments.mjs +216 -0
- package/mcp/lib/markdown.mjs +216 -43
- package/mcp/lib/master-catalog.mjs +4 -0
- package/mcp/lib/orchestrator.mjs +173 -29
- package/mcp/lib/packets.mjs +59 -6
- package/mcp/lib/personas/engine.mjs +23 -10
- 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/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-review-operations.mjs +3 -2
- package/mcp/lib/personas-v3/staging.mjs +22 -3
- package/mcp/lib/prompts.mjs +87 -3
- package/mcp/lib/quotes.mjs +5 -0
- package/mcp/lib/rpc.mjs +27 -10
- package/mcp/lib/run-store.mjs +5 -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 +341 -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/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 +9 -3
- 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 +188 -16
- package/scripts/lib/persona-v3-solo-test-packs.mjs +112 -11
- package/scripts/package-smoke.mjs +2 -1
- package/scripts/report-persona-corpus-gaps.mjs +4 -1
- package/scripts/review-persona-v3-solo-formulas.mjs +12 -8
- package/scripts/scaffold-persona-v3-staging.mjs +1 -1
- package/skills/agent-skills-governance/SKILL.md +8 -2
- package/skills/alphacouncil-agent/SKILL.md +12 -4
- package/skills/public-equity-investing/SKILL.md +17 -0
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_forensic_short/reviews/borrow_catalyst.ai-review.json +0 -277
- 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,581 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Authored method logic for the six growth, activism and adversarial seats, keyed by persona id.
|
|
3
|
+
*
|
|
4
|
+
* Same contract and same discipline as the other authored seat files:
|
|
5
|
+
* a seat listed here gets its real formulas and its real decision policy, a seat absent from it
|
|
6
|
+
* keeps the mechanical identity proxy, and every threshold either traces to a named published
|
|
7
|
+
* source or is labelled in `rationale` and `provenance` as this project's reading rather than
|
|
8
|
+
* the author's.
|
|
9
|
+
*
|
|
10
|
+
* Everything here is AI-authored and unreviewed. It is barred from production admission by the
|
|
11
|
+
* same gates that bar the proxies; what changes is only that the arithmetic is the method's own
|
|
12
|
+
* rather than a placeholder.
|
|
13
|
+
*
|
|
14
|
+
* ---------------------------------------------------------------------------------------
|
|
15
|
+
* Contract notes for the pipeline that consumes this file
|
|
16
|
+
* ---------------------------------------------------------------------------------------
|
|
17
|
+
*
|
|
18
|
+
* 1. `native_state` values are the RAW state names from each seat's
|
|
19
|
+
* `native_decision_contract.states` in `data/persona-v3-build-specs.v1.mjs`. They are mapped
|
|
20
|
+
* through `executableNativeState()`, which adds the `provisional_` prefix. Do not pre-prefix
|
|
21
|
+
* them here or they double-prefix and stop matching the declared state set.
|
|
22
|
+
*
|
|
23
|
+
* `master_aschenbrenner` is the one seat whose declared state set contains the literal string
|
|
24
|
+
* `out_of_scope`. That is a common stance, and the policy validator rejects a common stance
|
|
25
|
+
* used as a native state -- but only before prefixing. `provisional_out_of_scope` is not a
|
|
26
|
+
* stance, so the seat validates once mapped. It must not be hand-renamed here, because the
|
|
27
|
+
* build spec is the authority on the state names.
|
|
28
|
+
*
|
|
29
|
+
* 2. `eligibility.all[]` entries carry the executor's own record shape
|
|
30
|
+
* (`condition_id` / `condition` / `on_false` / `on_uncomputable`) but omit `source_ids`,
|
|
31
|
+
* because the source id is minted at build time. The pipeline must inject `source_ids` the
|
|
32
|
+
* way it already does for hard vetoes and scoring rules, and must map the two mapping states
|
|
33
|
+
* through `executableNativeState()`.
|
|
34
|
+
*
|
|
35
|
+
* 3. `purpose` on tools and `rationale` on vetoes and rules are authoring metadata. The executor
|
|
36
|
+
* rejects unknown fields, so neither may be copied into the physical policy or tool records.
|
|
37
|
+
*
|
|
38
|
+
* 4. Chained tools: a tool that consumes another tool's `output_id` must take the PRODUCER's
|
|
39
|
+
* `value_kind` and `unit` as its input contract, not its own. Three seats here divide a
|
|
40
|
+
* monetary numerator by a monetary market capitalisation to produce a ratio, exactly as
|
|
41
|
+
* Buffett and Graham do, so a consumer-derived input contract fails
|
|
42
|
+
* `does not match producer ... output contract`.
|
|
43
|
+
*
|
|
44
|
+
* 5. Shared `output_id`s are deliberate and denote the same number built the same way, both
|
|
45
|
+
* inside this file and across it and the nine-seat file:
|
|
46
|
+
* valuation.market_capitalisation cathie_wood, ackman, aschenbrenner price x share count
|
|
47
|
+
* (= buffett, graham)
|
|
48
|
+
* valuation.owner_earnings_yield ackman (= buffett) owner earnings / cap
|
|
49
|
+
* valuation.free_cash_flow_yield cathie_wood, aschenbrenner 5y avg FCF / cap
|
|
50
|
+
* accounting.cash_conversion_gap forensic_short, jhunjhunwala OCF/NI less one
|
|
51
|
+
*
|
|
52
|
+
* 6. Scoring points are one per rule throughout, so `max_score` is the rule count and the
|
|
53
|
+
* builder's `max_score === sum(points)` check holds without this file restating it.
|
|
54
|
+
*
|
|
55
|
+
* 7. `master_forensic_short` inverts the usual band ordering on purpose. Its affirmative output
|
|
56
|
+
* is a short, and a seat that has completed a short case is `opposed` to owning the security,
|
|
57
|
+
* not constructive on it. The stance rises with the strength of the case AGAINST the name.
|
|
58
|
+
*/
|
|
59
|
+
export const growthSeats = Object.freeze({
|
|
60
|
+
master_fisher: {
|
|
61
|
+
provenance:
|
|
62
|
+
"Philip A. Fisher, Common Stocks and Uncommon Profits (1958): ch. 2 on scuttlebutt, and the fifteen points of ch. 3 -- point 2 (management's determination to keep developing products that raise total sales once the current lines' growth is exploited), point 3 (research and development effectiveness relative to the company's size), point 5 (does the company have a worthwhile profit margin) and point 6 (what is being done to maintain or improve it); together with Conservative Investors Sleep Well (1975) on superiority in production, marketing, research and financial skill. The scuttlebutt work itself -- the dated public customer, supplier, competitor and former-employee evidence the build spec plans as this seat's first tool -- is NOT a fact in this pack and is not modelled here. What survives measurement is the residue Fisher said that work should show up in: a sustained margin and reinvestment that earns. Fisher published no numeric cut-off anywhere in the fifteen points, so both numbers this seat uses are labelled: the seasoned Aaa corporate yield as the hurdle incremental capital must beat, and one quarter of the gross margin reaching the bottom line, are this project's readings.",
|
|
63
|
+
tools: [
|
|
64
|
+
{
|
|
65
|
+
tool_id: "master_fisher.margin_retention",
|
|
66
|
+
operation: "divide",
|
|
67
|
+
inputs: [{ fact_id: "financial.net_margin_5y" }, { fact_id: "financial.gross_margin_5y" }],
|
|
68
|
+
output_id: "financial.margin_retention",
|
|
69
|
+
value_kind: "ratio",
|
|
70
|
+
unit: "decimal",
|
|
71
|
+
purpose:
|
|
72
|
+
"How much of the gross spread survives everything Fisher spends points 3 and 4 on -- the research organisation and the sales organisation. Point 5 asks for a worthwhile margin and point 6 asks what is being done to hold it; the fraction of gross margin that reaches the bottom line is the observable form of both, and it is scale-free in a way an absolute margin is not.",
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
tool_id: "master_fisher.reinvestment_spread",
|
|
76
|
+
operation: "subtract",
|
|
77
|
+
inputs: [{ fact_id: "financial.incremental_return_on_capital" }, { fact_id: "macro.aaa_corporate_yield" }],
|
|
78
|
+
output_id: "financial.reinvestment_spread",
|
|
79
|
+
value_kind: "ratio",
|
|
80
|
+
unit: "decimal",
|
|
81
|
+
purpose:
|
|
82
|
+
"What the last increment of capital earned, less what lending it to a high-grade borrower would have paid. Point 2 is a claim about reinvestment continuing to work; the spread is the only place in these facts where that claim leaves a mark.",
|
|
83
|
+
},
|
|
84
|
+
],
|
|
85
|
+
eligibility: {
|
|
86
|
+
all: [
|
|
87
|
+
// Fisher's subject is long-duration growth quality, judged over many years. Without a
|
|
88
|
+
// decade of returns there is no operating record for the public stakeholder evidence to
|
|
89
|
+
// corroborate, and this seat is already working without the scuttlebutt itself.
|
|
90
|
+
{
|
|
91
|
+
condition_id: "master_fisher.decade_of_operating_record",
|
|
92
|
+
condition: { op: "exists", value: { fact_id: "financial.return_on_equity_10y" } },
|
|
93
|
+
on_false: { native_state: "insufficient_scuttlebutt", common_stance: "out_of_scope" },
|
|
94
|
+
on_uncomputable: { native_state: "insufficient_scuttlebutt", common_stance: "out_of_scope" },
|
|
95
|
+
},
|
|
96
|
+
],
|
|
97
|
+
},
|
|
98
|
+
hard_vetoes: [
|
|
99
|
+
{
|
|
100
|
+
veto_id: "master_fisher.no_worthwhile_margin",
|
|
101
|
+
rationale:
|
|
102
|
+
"Point 5 asks whether the company has a worthwhile profit margin at all, and Fisher warned in the same chapter that the apparent percentage gains of the marginal company in an industry are illusory. A business averaging no profit over five years has no margin to maintain and no growth quality to assess; zero is Fisher's own boundary, not a chosen level.",
|
|
103
|
+
condition: { op: "lte", left: { fact_id: "financial.net_margin_5y" }, right: { literal: 0 } },
|
|
104
|
+
on_trigger: { common_stance: "opposed", native_state: "reject" },
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
veto_id: "master_fisher.research_without_return",
|
|
108
|
+
rationale:
|
|
109
|
+
"Point 3 measures research effectiveness by economic output, not by spending. Capital going into the business at a negative incremental return is research and expansion that destroys what the earlier product cycles built, which is the failure mode the build spec names as this seat's third veto family.",
|
|
110
|
+
condition: { op: "lte", left: { fact_id: "financial.incremental_return_on_capital" }, right: { literal: 0 } },
|
|
111
|
+
on_trigger: { common_stance: "opposed", native_state: "reject" },
|
|
112
|
+
},
|
|
113
|
+
],
|
|
114
|
+
scoring: [
|
|
115
|
+
{
|
|
116
|
+
rule_id: "fisher_new_capital_earns_more_than_the_installed_base",
|
|
117
|
+
points: 1,
|
|
118
|
+
coverage_weight: 1,
|
|
119
|
+
rationale:
|
|
120
|
+
"Point 2 in its testable form. A company whose next dollar earns more than the average dollar already inside it is still finding the new products Fisher says management must keep developing; one whose next dollar earns less is growing by dilution of its own economics. The comparison needs no threshold because the business supplies both sides of it.",
|
|
121
|
+
condition: { op: "gt", left: { fact_id: "financial.incremental_return_on_capital" }, right: { fact_id: "financial.return_on_equity_10y" } },
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
rule_id: "fisher_reinvestment_beats_lending_the_money_out",
|
|
125
|
+
points: 1,
|
|
126
|
+
coverage_weight: 1,
|
|
127
|
+
rationale:
|
|
128
|
+
"The reinvestment runway is only an asset while reinvesting beats the alternative. Zero on the spread is the boundary at which the research and expansion programme stops being better than handing the money to a high-grade corporate borrower. Fisher named the test in points 2 and 3 and named no rate; the seasoned Aaa corporate yield as the alternative is this project's choice.",
|
|
129
|
+
condition: { op: "gt", left: { output_id: "financial.reinvestment_spread" }, right: { literal: 0 } },
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
rule_id: "fisher_margin_survives_the_research_and_sales_organisation",
|
|
133
|
+
points: 1,
|
|
134
|
+
coverage_weight: 1,
|
|
135
|
+
rationale:
|
|
136
|
+
"Point 6 asks what the company is doing to maintain or improve margins. A quarter of the gross margin reaching the bottom line means the research and selling organisations are being paid for out of the spread rather than consuming it. One quarter is this project's reading; Fisher gave the test and no number.",
|
|
137
|
+
condition: { op: "gt", left: { output_id: "financial.margin_retention" }, right: { literal: 0.25 } },
|
|
138
|
+
},
|
|
139
|
+
],
|
|
140
|
+
bands: [
|
|
141
|
+
{ min_ratio: 0, common_stance: "opposed", native_state: "reject" },
|
|
142
|
+
{ min_ratio: 0.5, common_stance: "cautious", native_state: "watch" },
|
|
143
|
+
{ min_ratio: 1, common_stance: "constructive", native_state: "long_duration_quality" },
|
|
144
|
+
],
|
|
145
|
+
},
|
|
146
|
+
|
|
147
|
+
master_cathie_wood: {
|
|
148
|
+
provenance:
|
|
149
|
+
"ARK Invest's published research: the annual Big Ideas reports and the Wright's Law white papers, in which the cost of a technology falls by a fixed percentage per cumulative doubling of units produced and the falling cost is what drives adoption; and ARK's disclosed valuation-model convention of a minimum 15% compound annual return hurdle over a five-year investment horizon, which is the one numeric bar in the method that is actually published. A technology cost curve is NOT among this pack's facts -- there is no cost-per-unit series, no cumulative-production series and no adoption-rate series, so the learning rate that is the whole engine of the method cannot be fitted here. What is measurable is the far end of the same argument: the growth the business is actually delivering, set against the expectation already embedded in what the price earns. The comparison of a revenue growth rate with a free-cash-flow yield is a compressed stand-in for ARK's five-year adoption-to-cash-flow bridge, not the bridge itself, and this project says so rather than implying a model it did not run.",
|
|
150
|
+
tools: [
|
|
151
|
+
{
|
|
152
|
+
tool_id: "master_cathie_wood.market_capitalisation",
|
|
153
|
+
operation: "multiply",
|
|
154
|
+
inputs: [{ fact_id: "market.price" }, { fact_id: "capital_allocation.share_count" }],
|
|
155
|
+
output_id: "valuation.market_capitalisation",
|
|
156
|
+
value_kind: "monetary",
|
|
157
|
+
unit: "currency_units",
|
|
158
|
+
purpose:
|
|
159
|
+
"The denominator every price-implied expectation needs. Built the same way as the Buffett and Graham seats build it, and sharing their output id on purpose.",
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
tool_id: "master_cathie_wood.current_cash_yield",
|
|
163
|
+
operation: "divide",
|
|
164
|
+
inputs: [{ fact_id: "financial.free_cash_flow_5y" }, { output_id: "valuation.market_capitalisation" }],
|
|
165
|
+
output_id: "valuation.free_cash_flow_yield",
|
|
166
|
+
value_kind: "ratio",
|
|
167
|
+
unit: "decimal",
|
|
168
|
+
purpose:
|
|
169
|
+
"How much of the price today's cash already pays for. Everything above this yield is adoption the market has bought in advance, which is the only form of a price-implied expectation these facts can produce.",
|
|
170
|
+
},
|
|
171
|
+
],
|
|
172
|
+
eligibility: {
|
|
173
|
+
all: [
|
|
174
|
+
// The method is about the rate at which a falling cost curve converts into revenue. With
|
|
175
|
+
// no revenue growth series there is no adoption to measure, and with no cost curve in the
|
|
176
|
+
// pack there is nothing left to fall back on.
|
|
177
|
+
{
|
|
178
|
+
condition_id: "master_cathie_wood.adoption_rate_observable",
|
|
179
|
+
condition: { op: "exists", value: { fact_id: "valuation.revenue_growth" } },
|
|
180
|
+
on_false: { native_state: "unsupported_theme", common_stance: "out_of_scope" },
|
|
181
|
+
on_uncomputable: { native_state: "unsupported_theme", common_stance: "out_of_scope" },
|
|
182
|
+
},
|
|
183
|
+
],
|
|
184
|
+
},
|
|
185
|
+
hard_vetoes: [
|
|
186
|
+
{
|
|
187
|
+
veto_id: "master_cathie_wood.adoption_already_priced",
|
|
188
|
+
rationale:
|
|
189
|
+
"The build spec's third veto family: reject a constructive output when the price requires adoption beyond the reviewed scenario range. Both halves have to hold. The company is growing below ARK's own published 15% five-year hurdle, and the price is not being paid for by current cash either, since the free-cash-flow yield is below what a long government bond pays for no business risk. That combination is a price that can only be defended by adoption the growth rate is not delivering.",
|
|
190
|
+
condition: {
|
|
191
|
+
op: "all",
|
|
192
|
+
conditions: [
|
|
193
|
+
{ op: "lt", left: { fact_id: "valuation.revenue_growth" }, right: { literal: 0.15 } },
|
|
194
|
+
{ op: "lt", left: { output_id: "valuation.free_cash_flow_yield" }, right: { fact_id: "macro.long_bond_yield" } },
|
|
195
|
+
],
|
|
196
|
+
},
|
|
197
|
+
on_trigger: { common_stance: "opposed", native_state: "overpriced_adoption" },
|
|
198
|
+
},
|
|
199
|
+
],
|
|
200
|
+
scoring: [
|
|
201
|
+
{
|
|
202
|
+
rule_id: "wood_growth_clears_the_published_hurdle",
|
|
203
|
+
points: 1,
|
|
204
|
+
coverage_weight: 1,
|
|
205
|
+
rationale:
|
|
206
|
+
"ARK's disclosed minimum hurdle: a 15% compound annual return over a five-year horizon, below which a name does not earn a place in the portfolio. It is stated as a return rather than a revenue rate, so applying it to revenue growth is this project's translation of a published bar rather than a bar ARK set on this quantity.",
|
|
207
|
+
condition: { op: "gte", left: { fact_id: "valuation.revenue_growth" }, right: { literal: 0.15 } },
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
rule_id: "wood_growth_exceeds_what_the_price_already_earns",
|
|
211
|
+
points: 1,
|
|
212
|
+
coverage_weight: 1,
|
|
213
|
+
rationale:
|
|
214
|
+
"The disruption case says the market systematically underestimates how fast the cost curve converts into revenue. If the business grows more slowly than the cash yield the price already earns, then nothing about that price requires an adoption story at all, and whatever is being bought is not the theme. Zero threshold: the two quantities supply the comparison themselves.",
|
|
215
|
+
condition: { op: "gt", left: { fact_id: "valuation.revenue_growth" }, right: { output_id: "valuation.free_cash_flow_yield" } },
|
|
216
|
+
},
|
|
217
|
+
],
|
|
218
|
+
bands: [
|
|
219
|
+
{ min_ratio: 0, common_stance: "opposed", native_state: "overpriced_adoption" },
|
|
220
|
+
{ min_ratio: 0.5, common_stance: "cautious", native_state: "watch" },
|
|
221
|
+
{ min_ratio: 1, common_stance: "constructive", native_state: "asymmetric_innovation" },
|
|
222
|
+
],
|
|
223
|
+
},
|
|
224
|
+
|
|
225
|
+
master_ackman: {
|
|
226
|
+
provenance:
|
|
227
|
+
"Pershing Square Capital Management's published investment criteria, repeated across its investor presentations and the Pershing Square Holdings annual reports and letters: simple, predictable, free-cash-flow-generative businesses with formidable barriers to entry, a strong balance sheet and limited need for external capital, a large gap between price and intrinsic value, and an ability to influence the outcome. Two of those four are facts here and two are not. The value gap is measurable as the owner-earnings yield against the long government bond, using the owner-earnings definition from the appendix to Berkshire's 1986 annual report, which is where this pack's `financial.owner_earnings` comes from. The balance sheet is measurable as leverage. Voting control, board rights, blocking rights, the identified actor who can legally cause the change, the implementation cost and the campaign timeline are NOT facts in this pack -- the entire power map that the build spec plans as this seat's first tool is absent, and with it any claim that a catalyst is executable. What remains is a value gap plus the capital-allocation lever, and this seat says only that. Both leverage lines are this project's readings: debt no greater than equity as the balance sheet that could finance a change, and three times equity as the point past which it plainly could not. Pershing published neither ratio.",
|
|
228
|
+
tools: [
|
|
229
|
+
{
|
|
230
|
+
tool_id: "master_ackman.market_capitalisation",
|
|
231
|
+
operation: "multiply",
|
|
232
|
+
inputs: [{ fact_id: "market.price" }, { fact_id: "capital_allocation.share_count" }],
|
|
233
|
+
output_id: "valuation.market_capitalisation",
|
|
234
|
+
value_kind: "monetary",
|
|
235
|
+
unit: "currency_units",
|
|
236
|
+
purpose:
|
|
237
|
+
"The price of the whole company, which is what a value gap is measured against. Same construction and same output id as the Buffett, Graham, Cathie Wood and Aschenbrenner seats.",
|
|
238
|
+
},
|
|
239
|
+
{
|
|
240
|
+
tool_id: "master_ackman.owner_earnings_yield",
|
|
241
|
+
operation: "divide",
|
|
242
|
+
inputs: [{ fact_id: "financial.owner_earnings" }, { output_id: "valuation.market_capitalisation" }],
|
|
243
|
+
output_id: "valuation.owner_earnings_yield",
|
|
244
|
+
value_kind: "ratio",
|
|
245
|
+
unit: "decimal",
|
|
246
|
+
purpose:
|
|
247
|
+
"What an owner earns on the purchase price of the business as it stands today, before any change. This is the standalone half of the standalone-versus-improvement split the method is built on; the improvement half has no facts and is not computed.",
|
|
248
|
+
},
|
|
249
|
+
],
|
|
250
|
+
eligibility: {
|
|
251
|
+
all: [
|
|
252
|
+
// Engagement is a financed act. Without the capital structure the seat cannot say whether
|
|
253
|
+
// a change could be paid for, and it certainly cannot say who has the power to cause one,
|
|
254
|
+
// so the honest output is that the position could only ever be passive.
|
|
255
|
+
{
|
|
256
|
+
condition_id: "master_ackman.capital_structure_resolvable",
|
|
257
|
+
condition: { op: "exists", value: { fact_id: "financial.leverage" } },
|
|
258
|
+
on_false: { native_state: "passive_only", common_stance: "out_of_scope" },
|
|
259
|
+
on_uncomputable: { native_state: "passive_only", common_stance: "out_of_scope" },
|
|
260
|
+
},
|
|
261
|
+
// The power map is absent, so the capital-allocation record is the only observable lever
|
|
262
|
+
// this seat has left. Without it there is nothing an engaged holder could point at, and
|
|
263
|
+
// the answer is passive ownership rather than a scoring rule that quietly fails to compute.
|
|
264
|
+
{
|
|
265
|
+
condition_id: "master_ackman.capital_allocation_history_available",
|
|
266
|
+
condition: { op: "exists", value: { fact_id: "capital_allocation.share_count_change_5y" } },
|
|
267
|
+
on_false: { native_state: "passive_only", common_stance: "out_of_scope" },
|
|
268
|
+
on_uncomputable: { native_state: "passive_only", common_stance: "out_of_scope" },
|
|
269
|
+
},
|
|
270
|
+
],
|
|
271
|
+
},
|
|
272
|
+
hard_vetoes: [
|
|
273
|
+
{
|
|
274
|
+
veto_id: "master_ackman.no_standalone_downside",
|
|
275
|
+
rationale:
|
|
276
|
+
"The build spec's first veto family, and Pershing's own free-cash-flow-generative criterion. A business that does not throw off positive owner earnings has no defensible standalone value, so there is no floor under the engagement and no gap for a lever to close -- the campaign would be the entire thesis.",
|
|
277
|
+
condition: { op: "lte", left: { fact_id: "financial.owner_earnings" }, right: { literal: 0 } },
|
|
278
|
+
on_trigger: { common_stance: "opposed", native_state: "infeasible" },
|
|
279
|
+
},
|
|
280
|
+
{
|
|
281
|
+
veto_id: "master_ackman.balance_sheet_cannot_finance_change",
|
|
282
|
+
rationale:
|
|
283
|
+
"Pershing's stated criterion of a strong balance sheet and limited need for external capital. A company carrying more than three times its equity in debt has its creditors, not its shareholders, deciding what happens next, and no improvement path is financeable from that position. Three times is this project's reading of a qualitative criterion.",
|
|
284
|
+
condition: { op: "gt", left: { fact_id: "financial.leverage" }, right: { literal: 3 } },
|
|
285
|
+
on_trigger: { common_stance: "opposed", native_state: "infeasible" },
|
|
286
|
+
},
|
|
287
|
+
],
|
|
288
|
+
scoring: [
|
|
289
|
+
{
|
|
290
|
+
rule_id: "ackman_value_gap_over_the_long_bond",
|
|
291
|
+
points: 1,
|
|
292
|
+
coverage_weight: 1,
|
|
293
|
+
rationale:
|
|
294
|
+
"The large gap between price and value, in the only form these facts support: the rate an owner earns on the purchase price must beat what the long government bond pays for no business risk. Below that line there is nothing for a campaign to unlock that the bond market is not already offering.",
|
|
295
|
+
condition: { op: "gt", left: { output_id: "valuation.owner_earnings_yield" }, right: { fact_id: "macro.long_bond_yield" } },
|
|
296
|
+
},
|
|
297
|
+
{
|
|
298
|
+
rule_id: "ackman_balance_sheet_can_carry_the_change",
|
|
299
|
+
points: 1,
|
|
300
|
+
coverage_weight: 1,
|
|
301
|
+
rationale:
|
|
302
|
+
"The strong-balance-sheet criterion. Debt no greater than equity leaves the financing capacity that any recapitalisation, separation or buyback would consume. The one-times line is this project's reading; Pershing states the criterion qualitatively.",
|
|
303
|
+
condition: { op: "lt", left: { fact_id: "financial.leverage" }, right: { literal: 1 } },
|
|
304
|
+
},
|
|
305
|
+
{
|
|
306
|
+
rule_id: "ackman_capital_allocation_lever_exists",
|
|
307
|
+
points: 1,
|
|
308
|
+
coverage_weight: 1,
|
|
309
|
+
rationale:
|
|
310
|
+
"The lever, stated as something observable rather than as a wish. A share count that has grown over five years is capital being handed away, and capital allocation is the lever an engaged holder can actually pull without needing operational control. This is a deliberate inversion of the usual reading of dilution: for this method a company already doing the right thing has less to fix, not more to offer. The direction is this project's reading, not a test Ackman published.",
|
|
311
|
+
condition: { op: "gt", left: { fact_id: "capital_allocation.share_count_change_5y" }, right: { literal: 0 } },
|
|
312
|
+
},
|
|
313
|
+
],
|
|
314
|
+
bands: [
|
|
315
|
+
{ min_ratio: 0, common_stance: "opposed", native_state: "infeasible" },
|
|
316
|
+
{ min_ratio: 0.5, common_stance: "cautious", native_state: "watch" },
|
|
317
|
+
{ min_ratio: 1, common_stance: "constructive", native_state: "engagement_candidate" },
|
|
318
|
+
],
|
|
319
|
+
},
|
|
320
|
+
|
|
321
|
+
master_forensic_short: {
|
|
322
|
+
provenance:
|
|
323
|
+
"A synthetic professional method seat, not a model of one person, so its sources are the published literature and practice rather than an author. Richard G. Sloan, \"Do Stock Prices Fully Reflect Information in Accruals and Cash Flows About Future Earnings?\", The Accounting Review 71(3), 1996, which establishes that the accrual component of earnings is the part that does not persist; Howard M. Schilit, Jeremy Perler and Yoni Engelhart, Financial Shenanigans, 4th ed. (2018), whose first cash-flow test is operating cash flow running persistently below reported net income; and Messod D. Beneish, \"The Detection of Earnings Manipulation\", Financial Analysts Journal, 1999, for direction only -- the M-score's eight inputs are not in this pack and no score is computed here. The fixed-charge bar is borrowed openly from Benjamin Graham, The Intelligent Investor ch. 11, which sets five times before income taxes as the minimum acceptable coverage for an industrial issue; a forensic short reads the same number from the other side, as the point at which an accounting problem acquires a financing deadline. `accounting.cash_conversion` is operating cash flow over net income, so one-for-one is the neutral line and the sign of the gap is the signal. What is missing is the trade: borrow cost, borrow availability, crowding and squeeze risk have no free public source, so the financing leg of the short is unmeasured and this seat can identify a case it cannot cost. The catalyst is missing too. Both absences are the build spec's own stated limits, and neither is papered over here. The one-unit-of-cash-conversion-per-unit-of-leverage line is this project's construction and this project's reading; no published source sets it.",
|
|
324
|
+
tools: [
|
|
325
|
+
{
|
|
326
|
+
tool_id: "master_forensic_short.cash_conversion_gap",
|
|
327
|
+
operation: "subtract",
|
|
328
|
+
inputs: [{ fact_id: "accounting.cash_conversion" }, { literal: 1 }],
|
|
329
|
+
output_id: "accounting.cash_conversion_gap",
|
|
330
|
+
value_kind: "ratio",
|
|
331
|
+
unit: "multiple",
|
|
332
|
+
purpose:
|
|
333
|
+
"How far operating cash flow falls short of the earnings that were reported. One-for-one conversion is the neutral point of the ratio, so subtracting it turns a level into a signed signal and removes the need to compare a multiple against a chosen number.",
|
|
334
|
+
},
|
|
335
|
+
{
|
|
336
|
+
tool_id: "master_forensic_short.cash_cover_of_leverage",
|
|
337
|
+
operation: "divide",
|
|
338
|
+
inputs: [{ fact_id: "accounting.cash_conversion" }, { fact_id: "financial.leverage" }],
|
|
339
|
+
output_id: "accounting.cash_conversion_per_unit_leverage",
|
|
340
|
+
value_kind: "ratio",
|
|
341
|
+
unit: "multiple",
|
|
342
|
+
purpose:
|
|
343
|
+
"The same shortfall measured against the balance sheet that has to survive it. Converting little of your earnings into cash while carrying no debt is a bookkeeping question; doing it while carrying a lot of debt is the configuration in which the accounting becomes a solvency event. The construction is this project's, and it is undefined in sign when cash conversion itself is negative -- which is why the negative case is caught by the scoring rule on the gap, not by this ratio.",
|
|
344
|
+
},
|
|
345
|
+
],
|
|
346
|
+
eligibility: {
|
|
347
|
+
all: [
|
|
348
|
+
// The short is a trade against a deadline, and the deadline is set by fixed charges. With
|
|
349
|
+
// no coverage figure there is nothing that forces the accounting to resolve, and an
|
|
350
|
+
// allegation with no resolution path is the thing this seat is built to refuse to make.
|
|
351
|
+
{
|
|
352
|
+
condition_id: "master_forensic_short.fixed_charge_record_available",
|
|
353
|
+
condition: { op: "exists", value: { fact_id: "financial.interest_coverage" } },
|
|
354
|
+
on_false: { native_state: "unsupported_allegation", common_stance: "out_of_scope" },
|
|
355
|
+
on_uncomputable: { native_state: "unsupported_allegation", common_stance: "out_of_scope" },
|
|
356
|
+
},
|
|
357
|
+
],
|
|
358
|
+
},
|
|
359
|
+
hard_vetoes: [
|
|
360
|
+
{
|
|
361
|
+
veto_id: "master_forensic_short.no_allegation_to_make",
|
|
362
|
+
rationale:
|
|
363
|
+
"The build spec's first veto family, applied to the two things this seat can actually measure. Operating cash flow running ahead of reported earnings is the opposite of the accrual signal, and debt below equity removes the financing pressure that would force any remaining question to resolve. When both point away from a case, the honest output is that there is no allegation, not a weaker version of one assembled from what is left. The debt-below-equity line is this project's reading.",
|
|
364
|
+
condition: {
|
|
365
|
+
op: "all",
|
|
366
|
+
conditions: [
|
|
367
|
+
{ op: "gt", left: { output_id: "accounting.cash_conversion_gap" }, right: { literal: 0 } },
|
|
368
|
+
{ op: "lt", left: { fact_id: "financial.leverage" }, right: { literal: 1 } },
|
|
369
|
+
],
|
|
370
|
+
},
|
|
371
|
+
on_trigger: { common_stance: "out_of_scope", native_state: "unsupported_allegation" },
|
|
372
|
+
},
|
|
373
|
+
],
|
|
374
|
+
scoring: [
|
|
375
|
+
{
|
|
376
|
+
rule_id: "forensic_short_earnings_do_not_become_cash",
|
|
377
|
+
points: 1,
|
|
378
|
+
coverage_weight: 1,
|
|
379
|
+
rationale:
|
|
380
|
+
"Sloan's result and Schilit's first cash-flow test, in the one fact this pack carries for either. Reported profit that operating cash flow does not follow is the accrual component, and the accrual component is the part that does not persist. Zero on the gap is one-for-one conversion, an arithmetic boundary rather than a chosen level.",
|
|
381
|
+
condition: { op: "lt", left: { output_id: "accounting.cash_conversion_gap" }, right: { literal: 0 } },
|
|
382
|
+
},
|
|
383
|
+
{
|
|
384
|
+
rule_id: "forensic_short_shortfall_sits_on_a_levered_balance_sheet",
|
|
385
|
+
points: 1,
|
|
386
|
+
coverage_weight: 1,
|
|
387
|
+
rationale:
|
|
388
|
+
"The pairing that turns an accounting observation into a trade the method would take: less than one unit of cash-converted earnings for each unit of balance-sheet leverage. This is where the short's timing pressure comes from, since the leverage is what refuses to wait. Both the ratio and the one-times line are this project's construction and reading; no source publishes either.",
|
|
389
|
+
condition: { op: "lt", left: { output_id: "accounting.cash_conversion_per_unit_leverage" }, right: { literal: 1 } },
|
|
390
|
+
},
|
|
391
|
+
{
|
|
392
|
+
rule_id: "forensic_short_fixed_charges_thinly_covered",
|
|
393
|
+
points: 1,
|
|
394
|
+
coverage_weight: 1,
|
|
395
|
+
rationale:
|
|
396
|
+
"Graham's five-times fixed-charge coverage for an industrial issue (The Intelligent Investor ch. 11), read from the short side. Below it, the fixed charges are not comfortably covered and the accounting question has a date attached to it. The number is Graham's and published; borrowing it for a short seat is this project's choice, and it is named rather than presented as this method's own.",
|
|
397
|
+
condition: { op: "lt", left: { fact_id: "financial.interest_coverage" }, right: { literal: 5 } },
|
|
398
|
+
},
|
|
399
|
+
],
|
|
400
|
+
bands: [
|
|
401
|
+
// Inverted on purpose: the affirmative output of this seat is a short. See note 7 above.
|
|
402
|
+
{ min_ratio: 0, common_stance: "cautious", native_state: "red_flags_no_trade" },
|
|
403
|
+
{ min_ratio: 0.5, common_stance: "cautious", native_state: "watch" },
|
|
404
|
+
{ min_ratio: 1, common_stance: "opposed", native_state: "forensic_short_candidate" },
|
|
405
|
+
],
|
|
406
|
+
},
|
|
407
|
+
|
|
408
|
+
master_aschenbrenner: {
|
|
409
|
+
provenance:
|
|
410
|
+
"Leopold Aschenbrenner, Situational Awareness: The Decade Ahead (June 2024): the compute-scaling series of roughly half an order of magnitude of effective compute per year split between raw compute and algorithmic efficiency, the trillion-dollar-cluster and industrial-mobilisation chapters on power, fabs and interconnect lead times, and the argument that the buildout is not yet in prices. NONE of that is a fact in this pack. There is no installed compute figure, no capex-commitment series, no available-megawatt figure, no supply-chain lead time and no adoption-revenue series, and the build spec's two planned tools -- the compute-to-power bridge and the timeline reverse-valuation -- have no inputs at all here. Rather than dress a generic growth screen in his vocabulary, this seat is deliberately narrowed to the one shape of his argument these facts can carry: a scaling-driven growth expectation set against what the price already implies, tested only on names whose price is not explained by the cash they currently produce. On anything else it declines and says which input it wanted. The narrow eligibility is the point of the seat, not a limitation of it. The revenue-growth-versus-long-bond test is this project's reading; the published half-order-of-magnitude-per-year figure is about compute, not revenue, and is deliberately not repurposed as a revenue threshold.",
|
|
411
|
+
tools: [
|
|
412
|
+
{
|
|
413
|
+
tool_id: "master_aschenbrenner.market_capitalisation",
|
|
414
|
+
operation: "multiply",
|
|
415
|
+
inputs: [{ fact_id: "market.price" }, { fact_id: "capital_allocation.share_count" }],
|
|
416
|
+
output_id: "valuation.market_capitalisation",
|
|
417
|
+
value_kind: "monetary",
|
|
418
|
+
unit: "currency_units",
|
|
419
|
+
purpose:
|
|
420
|
+
"The price of the whole company, which is the only thing a price-implied timeline can be solved against. Same construction and same output id as the other seats that build it.",
|
|
421
|
+
},
|
|
422
|
+
{
|
|
423
|
+
tool_id: "master_aschenbrenner.price_implied_cash_yield",
|
|
424
|
+
operation: "divide",
|
|
425
|
+
inputs: [{ fact_id: "financial.free_cash_flow_5y" }, { output_id: "valuation.market_capitalisation" }],
|
|
426
|
+
output_id: "valuation.free_cash_flow_yield",
|
|
427
|
+
value_kind: "ratio",
|
|
428
|
+
unit: "decimal",
|
|
429
|
+
purpose:
|
|
430
|
+
"The part of the price that the cash the business already produces pays for. The remainder is what the market has bought on a future it cannot yet see delivered, and that remainder is the closest thing to a price-implied timeline these facts will yield.",
|
|
431
|
+
},
|
|
432
|
+
],
|
|
433
|
+
eligibility: {
|
|
434
|
+
all: [
|
|
435
|
+
// Narrow on purpose. If today's cash already earns more on the price than a long
|
|
436
|
+
// government bond pays, the price is explained without any scaling story and there is no
|
|
437
|
+
// embedded timeline for this method to test. That is most of the listed universe, and
|
|
438
|
+
// this seat should decline on all of it rather than reissue a generic growth screen.
|
|
439
|
+
{
|
|
440
|
+
condition_id: "master_aschenbrenner.price_embeds_a_scaling_timeline",
|
|
441
|
+
condition: { op: "lt", left: { output_id: "valuation.free_cash_flow_yield" }, right: { fact_id: "macro.long_bond_yield" } },
|
|
442
|
+
on_false: { native_state: "out_of_scope", common_stance: "out_of_scope" },
|
|
443
|
+
on_uncomputable: { native_state: "out_of_scope", common_stance: "out_of_scope" },
|
|
444
|
+
},
|
|
445
|
+
// And there has to be an observed scaling rate to set against that timeline. Compute,
|
|
446
|
+
// power and lead times are the inputs the method actually wants; revenue growth is the
|
|
447
|
+
// only rate in this pack, and without it the seat has nothing at all.
|
|
448
|
+
{
|
|
449
|
+
condition_id: "master_aschenbrenner.observed_scaling_rate_available",
|
|
450
|
+
condition: { op: "exists", value: { fact_id: "valuation.revenue_growth" } },
|
|
451
|
+
on_false: { native_state: "out_of_scope", common_stance: "out_of_scope" },
|
|
452
|
+
on_uncomputable: { native_state: "out_of_scope", common_stance: "out_of_scope" },
|
|
453
|
+
},
|
|
454
|
+
// The capital-expenditure half of the argument. With no capex-commitment series, the
|
|
455
|
+
// incremental return on capital is the only reading of whether the buildout pays for
|
|
456
|
+
// itself; without it the seat has a growth rate and no economics behind it, which is the
|
|
457
|
+
// point at which it stops being his method and starts being a momentum screen.
|
|
458
|
+
{
|
|
459
|
+
condition_id: "master_aschenbrenner.buildout_economics_observable",
|
|
460
|
+
condition: { op: "exists", value: { fact_id: "financial.incremental_return_on_capital" } },
|
|
461
|
+
on_false: { native_state: "out_of_scope", common_stance: "out_of_scope" },
|
|
462
|
+
on_uncomputable: { native_state: "out_of_scope", common_stance: "out_of_scope" },
|
|
463
|
+
},
|
|
464
|
+
],
|
|
465
|
+
},
|
|
466
|
+
hard_vetoes: [
|
|
467
|
+
{
|
|
468
|
+
veto_id: "master_aschenbrenner.scaling_has_stopped",
|
|
469
|
+
rationale:
|
|
470
|
+
"A scaling thesis about a business whose revenue is not growing has no timeline to be early or late on, at any price. This is the measurable residue of the build spec's supply-timeline-gap family: not the documented equipment lead times, which are absent, but the outcome those lead times are supposed to produce.",
|
|
471
|
+
condition: { op: "lte", left: { fact_id: "valuation.revenue_growth" }, right: { literal: 0 } },
|
|
472
|
+
on_trigger: { common_stance: "opposed", native_state: "timeline_overpriced" },
|
|
473
|
+
},
|
|
474
|
+
],
|
|
475
|
+
scoring: [
|
|
476
|
+
{
|
|
477
|
+
rule_id: "aschenbrenner_scaling_rate_beats_the_riskless_alternative",
|
|
478
|
+
points: 1,
|
|
479
|
+
coverage_weight: 1,
|
|
480
|
+
rationale:
|
|
481
|
+
"The price has already been established as not payable out of current cash, so the timeline it embeds has to be met by growth. Growth slower than what a long government bond pays outright cannot close a gap that starts below the bond. It is the weakest honest form of the reverse-valuation the build spec plans, and it is this project's reading rather than a threshold Aschenbrenner published.",
|
|
482
|
+
condition: { op: "gt", left: { fact_id: "valuation.revenue_growth" }, right: { fact_id: "macro.long_bond_yield" } },
|
|
483
|
+
},
|
|
484
|
+
{
|
|
485
|
+
rule_id: "aschenbrenner_buildout_earns_on_the_capital_it_consumes",
|
|
486
|
+
points: 1,
|
|
487
|
+
coverage_weight: 1,
|
|
488
|
+
rationale:
|
|
489
|
+
"The capital-expenditure half of the essay, reduced to the one thing that survives without the capex-commitment series: the money going into the buildout has to earn a positive return on the way in. Scale that does not is the failure mode the whole trillion-dollar-cluster argument is exposed to, and zero is the boundary rather than a chosen level.",
|
|
490
|
+
condition: { op: "gt", left: { fact_id: "financial.incremental_return_on_capital" }, right: { literal: 0 } },
|
|
491
|
+
},
|
|
492
|
+
],
|
|
493
|
+
bands: [
|
|
494
|
+
{ min_ratio: 0, common_stance: "opposed", native_state: "timeline_overpriced" },
|
|
495
|
+
{ min_ratio: 0.5, common_stance: "cautious", native_state: "timeline_priced" },
|
|
496
|
+
{ min_ratio: 1, common_stance: "constructive", native_state: "timeline_underpriced" },
|
|
497
|
+
],
|
|
498
|
+
},
|
|
499
|
+
|
|
500
|
+
master_jhunjhunwala: {
|
|
501
|
+
provenance:
|
|
502
|
+
"Rakesh Jhunjhunwala's public interviews and conference appearances -- CNBC-TV18, ET Now and the Economic Times markets summits -- in which he said repeatedly that he was buying India's structural growth story and that the integrity of the promoter was the first filter, before any number; and the Indian record that method reads, namely the quarterly shareholding-pattern, promoter-pledge and bulk-deal disclosures that SEBI requires of BSE- and NSE-listed issuers. He died on 14 August 2022, so no current view is attributable to him. There is no Indian industry-penetration series here, and the promoter category does not exist as a US filing concept. What does exist is Section 16: officers, directors and holders of more than ten percent must file Forms 3, 4 and 5 stating what they hold afterwards, and `governance.insider_ownership` sums the newest such filing per reporting owner over shares outstanding. Treating that as the promoter shareholding record is this project's reading, not his: Section 16 covers a narrower set of people, reports trust and family holdings inconsistently, and carries a person who has not transacted since their Form 3 at that number. It is used the way he used the promoter record -- as the first filter, before the growth arithmetic -- and the seat says so rather than presenting it as the Indian disclosure. The real-growth and cash-conversion tests are this project's readings of statements he made without numbers.",
|
|
503
|
+
tools: [
|
|
504
|
+
{
|
|
505
|
+
tool_id: "master_jhunjhunwala.real_structural_growth",
|
|
506
|
+
operation: "subtract",
|
|
507
|
+
inputs: [{ fact_id: "valuation.revenue_growth" }, { fact_id: "macro.breakeven_inflation" }],
|
|
508
|
+
output_id: "valuation.real_revenue_growth",
|
|
509
|
+
value_kind: "ratio",
|
|
510
|
+
unit: "decimal",
|
|
511
|
+
purpose:
|
|
512
|
+
"Structural penetration is a claim about volume, not about price. Nominal growth that only matches expected inflation is the same business selling the same quantity at a higher number, which is what he meant by distinguishing the India growth story from the India inflation rate.",
|
|
513
|
+
},
|
|
514
|
+
{
|
|
515
|
+
tool_id: "master_jhunjhunwala.cash_quality_gap",
|
|
516
|
+
operation: "subtract",
|
|
517
|
+
inputs: [{ fact_id: "accounting.cash_conversion" }, { literal: 1 }],
|
|
518
|
+
output_id: "accounting.cash_conversion_gap",
|
|
519
|
+
value_kind: "ratio",
|
|
520
|
+
unit: "multiple",
|
|
521
|
+
purpose:
|
|
522
|
+
"The build spec's second veto family in computable form: scaling claims that cash conversion does not support. Same construction and same output id as the forensic-short seat, because it is the same number -- operating cash flow against reported earnings, with one-for-one as the neutral line.",
|
|
523
|
+
},
|
|
524
|
+
],
|
|
525
|
+
eligibility: {
|
|
526
|
+
all: [
|
|
527
|
+
// The method's first filter is who owns the company, and it stays first: without an
|
|
528
|
+
// ownership record there is no governance read, and the growth arithmetic on its own is
|
|
529
|
+
// a momentum screen with his name on it. The US analogue is the Section 16 register.
|
|
530
|
+
{
|
|
531
|
+
condition_id: "master_jhunjhunwala.ownership_record_available",
|
|
532
|
+
condition: { op: "exists", value: { fact_id: "governance.insider_ownership" } },
|
|
533
|
+
on_false: { native_state: "insufficient_governance", common_stance: "out_of_scope" },
|
|
534
|
+
on_uncomputable: { native_state: "insufficient_governance", common_stance: "out_of_scope" },
|
|
535
|
+
},
|
|
536
|
+
],
|
|
537
|
+
},
|
|
538
|
+
hard_vetoes: [
|
|
539
|
+
{
|
|
540
|
+
veto_id: "master_jhunjhunwala.cash_conversion",
|
|
541
|
+
rationale:
|
|
542
|
+
"The build spec's second veto family, and his own repeated public insistence that a growth story has to end up as cash. Operating cash flow that is outright negative while the business reports profits and claims to be scaling is the case he said he would not hold at any price. Zero is the boundary, not a chosen level.",
|
|
543
|
+
condition: { op: "lt", left: { fact_id: "accounting.cash_conversion" }, right: { literal: 0 } },
|
|
544
|
+
on_trigger: { common_stance: "opposed", native_state: "reject" },
|
|
545
|
+
},
|
|
546
|
+
],
|
|
547
|
+
scoring: [
|
|
548
|
+
{
|
|
549
|
+
rule_id: "jhunjhunwala_growth_is_real_rather_than_nominal",
|
|
550
|
+
points: 1,
|
|
551
|
+
coverage_weight: 1,
|
|
552
|
+
rationale:
|
|
553
|
+
"Penetration means more customers, not higher prices. Revenue growth above expected inflation is the minimum form of that distinction, and it is the closest this pack gets to the industry-penetration series the method actually reads. Zero on the real rate is a boundary; the substitution of a US breakeven for an Indian one is this project's compromise and is not his.",
|
|
554
|
+
condition: { op: "gt", left: { output_id: "valuation.real_revenue_growth" }, right: { literal: 0 } },
|
|
555
|
+
},
|
|
556
|
+
{
|
|
557
|
+
rule_id: "jhunjhunwala_scaling_converts_to_cash",
|
|
558
|
+
points: 1,
|
|
559
|
+
coverage_weight: 1,
|
|
560
|
+
rationale:
|
|
561
|
+
"Cycle-aware cash conversion is the second thing the build spec says this method requires of a scaling claim. Operating cash flow at least matching reported earnings is one-for-one conversion, an arithmetic boundary rather than a level anyone chose.",
|
|
562
|
+
condition: { op: "gte", left: { output_id: "accounting.cash_conversion_gap" }, right: { literal: 0 } },
|
|
563
|
+
},
|
|
564
|
+
{
|
|
565
|
+
rule_id: "jhunjhunwala_owners_hold_the_company_they_run",
|
|
566
|
+
points: 1,
|
|
567
|
+
coverage_weight: 1,
|
|
568
|
+
rationale:
|
|
569
|
+
"He would not take a growth story from people with nothing at stake in it, and the promoter shareholding was where he looked. One percent of the register held by Section 16 insiders is this project's line, not his: it is where a US register stops being a pure agency structure and the people running the business hold a position that a bad decision costs them. The narrower coverage of Section 16 against an Indian promoter disclosure is recorded on the seat rather than adjusted for here.",
|
|
570
|
+
condition: { op: "gte", left: { fact_id: "governance.insider_ownership" }, right: { literal: 0.01 } },
|
|
571
|
+
},
|
|
572
|
+
],
|
|
573
|
+
bands: [
|
|
574
|
+
{ min_ratio: 0, common_stance: "opposed", native_state: "reject" },
|
|
575
|
+
{ min_ratio: 0.34, common_stance: "cautious", native_state: "watch" },
|
|
576
|
+
{ min_ratio: 1, common_stance: "constructive", native_state: "concentrated_growth_candidate" },
|
|
577
|
+
],
|
|
578
|
+
},
|
|
579
|
+
});
|
|
580
|
+
|
|
581
|
+
export default growthSeats;
|