alphacouncil-agent 0.9.2 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/commands/alpha.md +22 -3
- package/.claude-plugin/marketplace.json +3 -3
- package/.claude-plugin/plugin.json +2 -2
- package/.codex-plugin/plugin.json +4 -4
- package/.grok/commands/alpha.md +22 -3
- package/.opencode/command/alpha.md +22 -3
- package/AGENTS.md +42 -4
- package/CHANGELOG.md +164 -0
- package/CLAUDE.md +59 -7
- package/README.ja.md +25 -11
- package/README.md +44 -12
- package/README.zh-CN.md +37 -12
- package/commands/alpha.md +22 -3
- package/data/authored/core-seats.mjs +808 -0
- package/data/authored/growth-seats.mjs +581 -0
- package/data/authored/index.mjs +114 -0
- package/data/authored/quant-seats.mjs +564 -0
- package/data/authored/value-seats.mjs +663 -0
- package/data/build-profile.v1.json +2 -1
- package/data/council-evaluation-protocol.v1.json +7 -4
- package/data/master-selector-method-locales.v1.mjs +296 -0
- package/data/persona-v3-ai-assisted-solo-profile.v1.json +2 -2
- package/data/persona-v3-build-specs.v1.mjs +60 -3
- package/docs/INSTALL.md +43 -6
- package/docs/personas.md +2 -1
- package/docs/plans/v1.0-roadmap.md +487 -0
- package/docs/releases/v0.9.3.md +86 -0
- package/docs/releases/v0.9.4.md +79 -0
- package/docs/releases/v0.9.5.md +96 -0
- package/docs/releases/v1.0.0.md +164 -0
- package/docs/report-contract.md +75 -2
- package/knowledge/ai-assisted-solo/experiments/runs/a.json +13 -13
- package/knowledge/ai-assisted-solo/experiments/runs/b.json +2 -2
- package/knowledge/ai-assisted-solo/experiments/runs/c.json +2 -2
- package/knowledge/ai-assisted-solo/experiments/runs/d13.json +126 -126
- package/knowledge/ai-assisted-solo/experiments/runs/d26.json +274 -254
- package/knowledge/ai-assisted-solo/experiments/runs/e-d13.json +129 -129
- package/knowledge/ai-assisted-solo/experiments/runs/e-d26.json +277 -257
- package/knowledge/ai-assisted-solo/experiments/runs/h_ai_reference.json +278 -258
- package/knowledge/ai-assisted-solo/experiments/simulation-input.json +7278 -556
- package/knowledge/ai-assisted-solo/experiments/simulation-manifest.json +22 -22
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_ackman/reviews/{change_value_bridge.ai-review.json → market_capitalisation.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_ackman/reviews/{power_map.ai-review.json → owner_earnings_yield.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_aschenbrenner/reviews/{compute_power_bridge.ai-review.json → market_capitalisation.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_aschenbrenner/reviews/{timeline_reverse_valuation.ai-review.json → price_implied_cash_yield.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_asness/reviews/{crowding_cost_stress.ai-review.json → nominal_earnings_yield_gap.ai-review.json} +49 -49
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_asness/reviews/{factor_decomposer.ai-review.json → real_earnings_yield_gap.ai-review.json} +49 -49
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_bogle/reviews/expected_return_over_long_bond.ai-review.json +277 -0
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_bogle/reviews/fundamental_expected_return.ai-review.json +277 -0
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_buffett/reviews/{incremental_returns.ai-review.json → market_capitalisation.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_buffett/reviews/{owner_earnings_rebuilder.ai-review.json → owner_earnings_yield.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_burry/reviews/{mispricing_carry.ai-review.json → net_current_asset_surplus_per_share.ai-review.json} +49 -49
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_burry/reviews/{capital_structure_reader.ai-review.json → net_current_asset_value_per_share.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_cathie_wood/reviews/{cost_adoption_curve.ai-review.json → current_cash_yield.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_cathie_wood/reviews/{capture_valuation_bridge.ai-review.json → market_capitalisation.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_dalio/reviews/{debt_driver_stress.ai-review.json → policy_real_rate.ai-review.json} +49 -49
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_dalio/reviews/{regime_classifier.ai-review.json → real_curve_slope.ai-review.json} +49 -49
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_damodaran/reviews/{reverse_valuation.ai-review.json → implied_equity_risk_premium.ai-review.json} +49 -49
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_damodaran/reviews/{story_dcf.ai-review.json → premium_versus_long_run_average.ai-review.json} +49 -49
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_druckenmiller/reviews/{liquidity_revision_map.ai-review.json → liquidity_curve_impulse.ai-review.json} +49 -49
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_druckenmiller/reviews/{inflection_payoff.ai-review.json → policy_real_rate.ai-review.json} +49 -49
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_duan_yongping/reviews/{opportunity_cost.ai-review.json → five_year_opportunity_cost.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_duan_yongping/reviews/{user_value_evidence.ai-review.json → margin_retention.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_fisher/reviews/{research_productivity.ai-review.json → margin_retention.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_fisher/reviews/{scuttlebutt_graph.ai-review.json → reinvestment_spread.ai-review.json} +49 -49
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_forensic_short/reviews/{borrow_catalyst.ai-review.json → cash_conversion_gap.ai-review.json} +49 -49
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_forensic_short/reviews/{accounting_rebuilder.ai-review.json → cash_cover_of_leverage.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_graham/reviews/{asset_floor.ai-review.json → defensive_hurdle_base.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_graham/reviews/{normalized_earnings.ai-review.json → half_normalised_earnings_yield.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_jhunjhunwala/reviews/{penetration_liquidity.ai-review.json → cash_quality_gap.ai-review.json} +49 -49
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_jhunjhunwala/reviews/{promoter_governance.ai-review.json → real_structural_growth.ai-review.json} +49 -49
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_klarman/reviews/{recovery_waterfall.ai-review.json → downside_asset_coverage.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_klarman/reviews/{cash_catalyst_compare.ai-review.json → market_capitalisation.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_li_lu/reviews/{promise_integrity_ledger.ai-review.json → cash_backed_decade_return.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_li_lu/reviews/{ten_year_return_bridge.ai-review.json → decade_return_over_long_bond.ai-review.json} +49 -49
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_lynch/reviews/{story_numbers_check.ai-review.json → growth_justified_capitalisation.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_lynch/reviews/{category_classifier.ai-review.json → market_capitalisation.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_marks/reviews/{cycle_temperature.ai-review.json → credit_cycle_position.ai-review.json} +49 -49
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_marks/reviews/{implied_expectations.ai-review.json → equity_over_corporate_debt.ai-review.json} +49 -49
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_munger/reviews/{failure_path_graph.ai-review.json → debt_service_cushion.ai-review.json} +49 -49
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_munger/reviews/{incentive_map.ai-review.json → reported_earnings_cash_gap.ai-review.json} +49 -49
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_natenberg/reviews/{surface_builder.ai-review.json → normalised_skew.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_natenberg/reviews/{greeks_payoff.ai-review.json → round_trip_cost.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_pabrai/reviews/{downside_floor.ai-review.json → downside_floor_coverage.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_pabrai/reviews/{discrete_payoff.ai-review.json → market_capitalisation.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_simons/reviews/{oos_cost_test.ai-review.json → absolute_session_move.ai-review.json} +42 -42
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_simons/reviews/{leakage_audit.ai-review.json → session_move_over_implied.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_sinclair/reviews/{realized_vol_forecast.ai-review.json → round_trip_cost.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_sinclair/reviews/{net_edge_sizer.ai-review.json → volatility_per_unit_of_width.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_soros/reviews/{reversal_monitor.ai-review.json → credit_cycle_position.ai-review.json} +49 -49
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_soros/reviews/{reflexivity_graph.ai-review.json → financing_burden.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_taleb/reviews/{tail_friction.ai-review.json → debt_service_cushion.ai-review.json} +49 -49
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_taleb/reviews/{payoff_ruin.ai-review.json → normalised_skew.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_thorp/reviews/{edge_recalculator.ai-review.json → edge_per_unit_of_volatility.ai-review.json} +46 -46
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_thorp/reviews/{fractional_kelly.ai-review.json → net_edge.ai-review.json} +49 -49
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/review-manifest.json +288 -270
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-semantic-adjudications/index.json +2 -2
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-semantic-extractions/index.json +2 -2
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-semantic-skeptic-reviews/index.json +2 -2
- package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-source-prereviews/index.json +6 -2
- package/knowledge/solo-test/masters/master_ackman/decision_policy.json +122 -11
- package/knowledge/solo-test/masters/master_ackman/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_ackman/manifest.json +27 -10
- package/knowledge/solo-test/masters/master_ackman/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_ackman/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_ackman/tools.json +56 -30
- package/knowledge/solo-test/masters/master_aschenbrenner/decision_policy.json +101 -10
- package/knowledge/solo-test/masters/master_aschenbrenner/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_aschenbrenner/manifest.json +26 -8
- package/knowledge/solo-test/masters/master_aschenbrenner/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_aschenbrenner/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_aschenbrenner/tools.json +56 -30
- package/knowledge/solo-test/masters/master_asness/decision_policy.json +89 -10
- package/knowledge/solo-test/masters/master_asness/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_asness/manifest.json +25 -8
- package/knowledge/solo-test/masters/master_asness/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_asness/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_asness/tools.json +56 -30
- package/knowledge/solo-test/masters/master_bogle/counterfactuals.jsonl +0 -0
- package/knowledge/solo-test/masters/master_bogle/decision_cases.jsonl +0 -0
- package/knowledge/solo-test/masters/master_bogle/decision_policy.json +170 -0
- package/knowledge/solo-test/masters/master_bogle/doctrine.jsonl +14 -0
- package/knowledge/solo-test/masters/master_bogle/evaluation/calibration_cases.jsonl +0 -0
- package/knowledge/solo-test/masters/master_bogle/evaluation/experiments.json +5 -0
- package/knowledge/solo-test/masters/master_bogle/evaluation/golden_cases.jsonl +0 -0
- package/knowledge/solo-test/masters/master_bogle/evaluation/pairwise_cases.jsonl +0 -0
- package/knowledge/solo-test/masters/master_bogle/failures.jsonl +0 -0
- package/knowledge/solo-test/masters/master_bogle/manifest.json +141 -0
- package/knowledge/solo-test/masters/master_bogle/memory_policy.json +5 -0
- package/knowledge/solo-test/masters/master_bogle/provisional-index.json +41 -0
- package/knowledge/solo-test/masters/master_bogle/research_policy.json +11 -0
- package/knowledge/solo-test/masters/master_bogle/sources.jsonl +1 -0
- package/knowledge/solo-test/masters/master_bogle/tools.json +120 -0
- package/knowledge/solo-test/masters/master_bogle/voice.en.md +7 -0
- package/knowledge/solo-test/masters/master_bogle/voice.zh.md +7 -0
- package/knowledge/solo-test/masters/master_buffett/decision_policy.json +102 -11
- package/knowledge/solo-test/masters/master_buffett/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_buffett/manifest.json +24 -8
- package/knowledge/solo-test/masters/master_buffett/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_buffett/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_buffett/tools.json +55 -29
- package/knowledge/solo-test/masters/master_burry/decision_policy.json +102 -12
- package/knowledge/solo-test/masters/master_burry/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_burry/manifest.json +26 -10
- package/knowledge/solo-test/masters/master_burry/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_burry/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_burry/tools.json +56 -30
- package/knowledge/solo-test/masters/master_cathie_wood/decision_policy.json +74 -12
- package/knowledge/solo-test/masters/master_cathie_wood/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_cathie_wood/manifest.json +26 -10
- package/knowledge/solo-test/masters/master_cathie_wood/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_cathie_wood/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_cathie_wood/tools.json +56 -30
- package/knowledge/solo-test/masters/master_dalio/decision_policy.json +123 -16
- package/knowledge/solo-test/masters/master_dalio/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_dalio/manifest.json +24 -8
- package/knowledge/solo-test/masters/master_dalio/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_dalio/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_dalio/tools.json +56 -30
- package/knowledge/solo-test/masters/master_damodaran/decision_policy.json +58 -10
- package/knowledge/solo-test/masters/master_damodaran/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_damodaran/manifest.json +23 -8
- package/knowledge/solo-test/masters/master_damodaran/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_damodaran/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_damodaran/tools.json +54 -28
- package/knowledge/solo-test/masters/master_druckenmiller/decision_policy.json +89 -10
- package/knowledge/solo-test/masters/master_druckenmiller/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_druckenmiller/manifest.json +25 -8
- package/knowledge/solo-test/masters/master_druckenmiller/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_druckenmiller/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_druckenmiller/tools.json +55 -29
- package/knowledge/solo-test/masters/master_duan_yongping/decision_policy.json +138 -13
- package/knowledge/solo-test/masters/master_duan_yongping/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_duan_yongping/manifest.json +31 -11
- package/knowledge/solo-test/masters/master_duan_yongping/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_duan_yongping/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_duan_yongping/tools.json +82 -30
- package/knowledge/solo-test/masters/master_fisher/decision_policy.json +102 -11
- package/knowledge/solo-test/masters/master_fisher/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_fisher/manifest.json +27 -10
- package/knowledge/solo-test/masters/master_fisher/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_fisher/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_fisher/tools.json +58 -32
- package/knowledge/solo-test/masters/master_forensic_short/decision_policy.json +93 -14
- package/knowledge/solo-test/masters/master_forensic_short/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_forensic_short/manifest.json +20 -8
- package/knowledge/solo-test/masters/master_forensic_short/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_forensic_short/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_forensic_short/tools.json +53 -27
- package/knowledge/solo-test/masters/master_graham/decision_policy.json +103 -12
- package/knowledge/solo-test/masters/master_graham/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_graham/manifest.json +26 -8
- package/knowledge/solo-test/masters/master_graham/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_graham/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_graham/tools.json +67 -28
- package/knowledge/solo-test/masters/master_jhunjhunwala/decision_policy.json +77 -12
- package/knowledge/solo-test/masters/master_jhunjhunwala/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_jhunjhunwala/manifest.json +25 -10
- package/knowledge/solo-test/masters/master_jhunjhunwala/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_jhunjhunwala/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_jhunjhunwala/tools.json +54 -28
- package/knowledge/solo-test/masters/master_klarman/decision_policy.json +105 -14
- package/knowledge/solo-test/masters/master_klarman/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_klarman/manifest.json +22 -6
- package/knowledge/solo-test/masters/master_klarman/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_klarman/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_klarman/tools.json +55 -29
- package/knowledge/solo-test/masters/master_li_lu/decision_policy.json +101 -10
- package/knowledge/solo-test/masters/master_li_lu/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_li_lu/manifest.json +27 -10
- package/knowledge/solo-test/masters/master_li_lu/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_li_lu/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_li_lu/tools.json +58 -32
- package/knowledge/solo-test/masters/master_lynch/decision_policy.json +127 -16
- package/knowledge/solo-test/masters/master_lynch/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_lynch/manifest.json +28 -10
- package/knowledge/solo-test/masters/master_lynch/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_lynch/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_lynch/tools.json +67 -28
- package/knowledge/solo-test/masters/master_marks/decision_policy.json +71 -9
- package/knowledge/solo-test/masters/master_marks/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_marks/manifest.json +25 -10
- package/knowledge/solo-test/masters/master_marks/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_marks/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_marks/tools.json +54 -28
- package/knowledge/solo-test/masters/master_munger/decision_policy.json +141 -16
- package/knowledge/solo-test/masters/master_munger/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_munger/manifest.json +24 -10
- package/knowledge/solo-test/masters/master_munger/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_munger/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_munger/tools.json +52 -26
- package/knowledge/solo-test/masters/master_natenberg/decision_policy.json +59 -11
- package/knowledge/solo-test/masters/master_natenberg/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_natenberg/manifest.json +23 -10
- package/knowledge/solo-test/masters/master_natenberg/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_natenberg/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_natenberg/tools.json +50 -24
- package/knowledge/solo-test/masters/master_pabrai/decision_policy.json +125 -14
- package/knowledge/solo-test/masters/master_pabrai/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_pabrai/manifest.json +22 -6
- package/knowledge/solo-test/masters/master_pabrai/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_pabrai/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_pabrai/tools.json +55 -29
- package/knowledge/solo-test/masters/master_simons/decision_policy.json +59 -11
- package/knowledge/solo-test/masters/master_simons/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_simons/manifest.json +22 -8
- package/knowledge/solo-test/masters/master_simons/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_simons/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_simons/tools.json +43 -30
- package/knowledge/solo-test/masters/master_sinclair/decision_policy.json +59 -11
- package/knowledge/solo-test/masters/master_sinclair/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_sinclair/manifest.json +22 -10
- package/knowledge/solo-test/masters/master_sinclair/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_sinclair/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_sinclair/tools.json +54 -28
- package/knowledge/solo-test/masters/master_soros/decision_policy.json +98 -10
- package/knowledge/solo-test/masters/master_soros/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_soros/manifest.json +24 -11
- package/knowledge/solo-test/masters/master_soros/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_soros/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_soros/tools.json +54 -28
- package/knowledge/solo-test/masters/master_taleb/decision_policy.json +124 -13
- package/knowledge/solo-test/masters/master_taleb/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_taleb/manifest.json +23 -9
- package/knowledge/solo-test/masters/master_taleb/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_taleb/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_taleb/tools.json +50 -24
- package/knowledge/solo-test/masters/master_thorp/decision_policy.json +61 -13
- package/knowledge/solo-test/masters/master_thorp/doctrine.jsonl +2 -2
- package/knowledge/solo-test/masters/master_thorp/manifest.json +25 -10
- package/knowledge/solo-test/masters/master_thorp/provisional-index.json +3 -3
- package/knowledge/solo-test/masters/master_thorp/sources.jsonl +1 -1
- package/knowledge/solo-test/masters/master_thorp/tools.json +56 -30
- package/knowledge/solo-test/persona-v3-solo-test-formulas/compilation-manifest.json +290 -264
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_ackman/components/tools.json +58 -32
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_ackman/provisional-derivations/market_capitalisation.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_ackman/provisional-derivations/owner_earnings_yield.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_aschenbrenner/components/tools.json +58 -32
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_aschenbrenner/provisional-derivations/market_capitalisation.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_aschenbrenner/provisional-derivations/price_implied_cash_yield.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_asness/components/tools.json +58 -32
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_asness/provisional-derivations/nominal_earnings_yield_gap.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_asness/provisional-derivations/real_earnings_yield_gap.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_bogle/components/tools.json +120 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_bogle/provisional-derivations/expected_return_over_long_bond.derived-proxy-evidence.json +77 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_bogle/provisional-derivations/fundamental_expected_return.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_buffett/components/tools.json +57 -31
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_buffett/provisional-derivations/market_capitalisation.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_buffett/provisional-derivations/owner_earnings_yield.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_burry/components/tools.json +58 -32
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_burry/provisional-derivations/net_current_asset_surplus_per_share.derived-proxy-evidence.json +77 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_burry/provisional-derivations/net_current_asset_value_per_share.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_cathie_wood/components/tools.json +58 -32
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_cathie_wood/provisional-derivations/current_cash_yield.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_cathie_wood/provisional-derivations/market_capitalisation.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_dalio/components/tools.json +58 -32
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_dalio/provisional-derivations/policy_real_rate.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_dalio/provisional-derivations/real_curve_slope.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_damodaran/components/tools.json +56 -30
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_damodaran/provisional-derivations/implied_equity_risk_premium.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_damodaran/provisional-derivations/{reverse_valuation.derived-proxy-evidence.json → premium_versus_long_run_average.derived-proxy-evidence.json} +29 -16
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_druckenmiller/components/tools.json +57 -31
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_druckenmiller/provisional-derivations/liquidity_curve_impulse.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_druckenmiller/provisional-derivations/policy_real_rate.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_duan_yongping/components/tools.json +84 -32
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_duan_yongping/provisional-derivations/five_year_opportunity_cost.derived-proxy-evidence.json +102 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_duan_yongping/provisional-derivations/margin_retention.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_fisher/components/tools.json +60 -34
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_fisher/provisional-derivations/margin_retention.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_fisher/provisional-derivations/reinvestment_spread.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_forensic_short/components/tools.json +55 -29
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_forensic_short/provisional-derivations/{accounting_rebuilder.derived-proxy-evidence.json → cash_conversion_gap.derived-proxy-evidence.json} +28 -15
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_forensic_short/provisional-derivations/cash_cover_of_leverage.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_graham/components/tools.json +69 -30
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_graham/provisional-derivations/defensive_hurdle_base.derived-proxy-evidence.json +89 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_graham/provisional-derivations/half_normalised_earnings_yield.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_jhunjhunwala/components/tools.json +56 -30
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_jhunjhunwala/provisional-derivations/cash_quality_gap.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_jhunjhunwala/provisional-derivations/real_structural_growth.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_klarman/components/tools.json +57 -31
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_klarman/provisional-derivations/downside_asset_coverage.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_klarman/provisional-derivations/market_capitalisation.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_li_lu/components/tools.json +60 -34
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_li_lu/provisional-derivations/cash_backed_decade_return.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_li_lu/provisional-derivations/decade_return_over_long_bond.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_lynch/components/tools.json +69 -30
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_lynch/provisional-derivations/growth_justified_capitalisation.derived-proxy-evidence.json +89 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_lynch/provisional-derivations/market_capitalisation.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_marks/components/tools.json +56 -30
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_marks/provisional-derivations/credit_cycle_position.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_marks/provisional-derivations/equity_over_corporate_debt.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_munger/components/tools.json +54 -28
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_munger/provisional-derivations/debt_service_cushion.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_munger/provisional-derivations/reported_earnings_cash_gap.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_natenberg/components/tools.json +52 -26
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_natenberg/provisional-derivations/{surface_builder.derived-proxy-evidence.json → normalised_skew.derived-proxy-evidence.json} +27 -14
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_natenberg/provisional-derivations/round_trip_cost.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_pabrai/components/tools.json +57 -31
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_pabrai/provisional-derivations/downside_floor_coverage.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_pabrai/provisional-derivations/market_capitalisation.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_simons/components/tools.json +45 -32
- package/knowledge/solo-test/persona-v3-solo-test-formulas/{master_natenberg/provisional-derivations/greeks_payoff.derived-proxy-evidence.json → master_simons/provisional-derivations/absolute_session_move.derived-proxy-evidence.json} +17 -17
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_simons/provisional-derivations/session_move_over_implied.derived-proxy-evidence.json +77 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_sinclair/components/tools.json +56 -30
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_sinclair/provisional-derivations/round_trip_cost.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_sinclair/provisional-derivations/volatility_per_unit_of_width.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_soros/components/tools.json +56 -30
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_soros/provisional-derivations/credit_cycle_position.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_soros/provisional-derivations/financing_burden.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_taleb/components/tools.json +52 -26
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_taleb/provisional-derivations/debt_service_cushion.derived-proxy-evidence.json +76 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_taleb/provisional-derivations/{tail_friction.derived-proxy-evidence.json → normalised_skew.derived-proxy-evidence.json} +27 -14
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_thorp/components/tools.json +58 -32
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_thorp/provisional-derivations/edge_per_unit_of_volatility.derived-proxy-evidence.json +77 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_thorp/provisional-derivations/net_edge.derived-proxy-evidence.json +76 -0
- package/mcp/lib/breadth.mjs +122 -0
- package/mcp/lib/codex.mjs +3 -3
- package/mcp/lib/constants.mjs +76 -25
- package/mcp/lib/council-options.mjs +95 -40
- package/mcp/lib/council-selection.mjs +95 -9
- package/mcp/lib/damodaran.mjs +119 -0
- package/mcp/lib/fred.mjs +246 -0
- package/mcp/lib/fund-holdings-parsers.mjs +297 -0
- package/mcp/lib/fundamentals.mjs +801 -0
- package/mcp/lib/funds.mjs +750 -0
- package/mcp/lib/gates.mjs +149 -15
- package/mcp/lib/grounding.mjs +188 -36
- package/mcp/lib/index-aggregate.mjs +718 -0
- package/mcp/lib/insider-ownership.mjs +149 -0
- package/mcp/lib/instrument-facts.mjs +557 -0
- package/mcp/lib/instruments.mjs +191 -0
- package/mcp/lib/lang.mjs +109 -2
- package/mcp/lib/markdown.mjs +620 -138
- package/mcp/lib/master-catalog.mjs +32 -3
- package/mcp/lib/orchestrator.mjs +1121 -290
- package/mcp/lib/packets.mjs +227 -21
- package/mcp/lib/personas/engine.mjs +44 -31
- package/mcp/lib/personas-v3/compiler.mjs +2 -0
- package/mcp/lib/personas-v3/deterministic-executor.mjs +13 -2
- package/mcp/lib/personas-v3/ga-external-evidence.mjs +3 -2
- package/mcp/lib/personas-v3/ga-gate.mjs +2 -1
- package/mcp/lib/personas-v3/ga-package-evidence.mjs +5 -4
- package/mcp/lib/personas-v3/grounding-adapter.mjs +309 -2
- package/mcp/lib/personas-v3/loader.mjs +10 -7
- package/mcp/lib/personas-v3/production-root.mjs +5 -4
- package/mcp/lib/personas-v3/release-formula-evidence.mjs +14 -7
- package/mcp/lib/personas-v3/release-source-evidence.mjs +2 -1
- package/mcp/lib/personas-v3/releases.mjs +5 -4
- package/mcp/lib/personas-v3/runtime-release-integrity.mjs +6 -5
- package/mcp/lib/personas-v3/semantic-source-adjudication.mjs +2 -1
- package/mcp/lib/personas-v3/semantic-source-extraction.mjs +2 -1
- package/mcp/lib/personas-v3/semantic-source-skeptic-review.mjs +2 -1
- package/mcp/lib/personas-v3/source-acquisition.mjs +10 -3
- package/mcp/lib/personas-v3/source-review-operations.mjs +3 -2
- package/mcp/lib/personas-v3/staging.mjs +22 -3
- package/mcp/lib/prompts.mjs +119 -2
- package/mcp/lib/quotes.mjs +5 -0
- package/mcp/lib/rpc.mjs +101 -42
- package/mcp/lib/run-store.mjs +28 -3
- package/mcp/lib/sec.mjs +32 -0
- package/mcp/lib/tables.mjs +11 -0
- package/mcp/lib/voice.mjs +122 -0
- package/mcp/lib/xbrl-aggregates.mjs +153 -0
- package/mcp/lib/xbrl-series.mjs +339 -0
- package/mcp/lib/xlsx.mjs +155 -0
- package/package.json +5 -5
- package/personas/masters/masters-value/bogle.md +145 -0
- package/schemas/council-evaluation-protocol-v1.schema.json +2 -2
- package/schemas/persona-v3-ai-assisted-solo-profile-v1.schema.json +2 -2
- package/schemas/persona-v3-ai-machine-simulation-v1.schema.json +1 -1
- package/schemas/persona-v3-build-spec-v1.schema.json +3 -3
- package/schemas/persona-v3-release-formula-review-evidence-v1.schema.json +3 -3
- package/schemas/persona-v3-release-manifest-v1.schema.json +6 -6
- package/schemas/persona-v3-release-source-review-evidence-v1.schema.json +3 -3
- package/schemas/persona-v3-tool-graph-v1.schema.json +1 -1
- package/schemas/persona-v3.schema.json +37 -2
- package/schemas/source-review-batch-v1.schema.json +9 -9
- package/scripts/assemble-persona-v3-release.mjs +3 -2
- package/scripts/build-persona-v3-solo-test-packs.mjs +6 -8
- package/scripts/check-persona-v3-ga.mjs +1 -1
- package/scripts/check-persona-v3-production-candidates.mjs +1 -1
- package/scripts/compile-persona-v3-formulas.mjs +19 -18
- package/scripts/doctor.mjs +11 -9
- package/scripts/export-persona-source-review-batch.mjs +1 -1
- package/scripts/generate-persona-v3-drafts.mjs +2 -2
- package/scripts/lib/build-profile.mjs +24 -0
- package/scripts/lib/council-evaluation-protocol.mjs +7 -6
- package/scripts/lib/host-capabilities.mjs +2 -1
- package/scripts/lib/packaged-host-parity.mjs +63 -8
- package/scripts/lib/persona-v3-ai-assisted-solo-status.mjs +6 -4
- package/scripts/lib/persona-v3-ai-formula-review.mjs +6 -5
- package/scripts/lib/persona-v3-ai-machine-simulations.mjs +32 -4
- package/scripts/lib/persona-v3-build-specs.mjs +3 -2
- package/scripts/lib/persona-v3-draft-packs.mjs +2 -2
- package/scripts/lib/persona-v3-formula-pipeline.mjs +11 -10
- package/scripts/lib/persona-v3-production-candidates.mjs +10 -9
- package/scripts/lib/persona-v3-solo-formula-pipeline.mjs +182 -16
- package/scripts/lib/persona-v3-solo-test-packs.mjs +143 -16
- package/scripts/package-smoke.mjs +32 -12
- package/scripts/report-persona-corpus-gaps.mjs +4 -1
- package/scripts/review-persona-v3-solo-formulas.mjs +12 -8
- package/scripts/run-tests.mjs +23 -2
- package/scripts/scaffold-persona-v3-staging.mjs +1 -1
- package/skills/agent-skills-governance/SKILL.md +8 -2
- package/skills/alphacouncil-agent/SKILL.md +60 -9
- package/skills/public-equity-investing/SKILL.md +17 -0
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_ackman/provisional-derivations/change_value_bridge.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_ackman/provisional-derivations/power_map.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_aschenbrenner/provisional-derivations/compute_power_bridge.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_aschenbrenner/provisional-derivations/timeline_reverse_valuation.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_asness/provisional-derivations/crowding_cost_stress.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_asness/provisional-derivations/factor_decomposer.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_buffett/provisional-derivations/incremental_returns.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_buffett/provisional-derivations/owner_earnings_rebuilder.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_burry/provisional-derivations/capital_structure_reader.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_burry/provisional-derivations/mispricing_carry.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_cathie_wood/provisional-derivations/capture_valuation_bridge.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_cathie_wood/provisional-derivations/cost_adoption_curve.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_dalio/provisional-derivations/debt_driver_stress.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_dalio/provisional-derivations/regime_classifier.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_damodaran/provisional-derivations/story_dcf.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_druckenmiller/provisional-derivations/inflection_payoff.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_druckenmiller/provisional-derivations/liquidity_revision_map.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_duan_yongping/provisional-derivations/opportunity_cost.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_duan_yongping/provisional-derivations/user_value_evidence.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_fisher/provisional-derivations/research_productivity.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_fisher/provisional-derivations/scuttlebutt_graph.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_forensic_short/provisional-derivations/borrow_catalyst.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_graham/provisional-derivations/asset_floor.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_graham/provisional-derivations/normalized_earnings.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_jhunjhunwala/provisional-derivations/penetration_liquidity.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_jhunjhunwala/provisional-derivations/promoter_governance.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_klarman/provisional-derivations/cash_catalyst_compare.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_klarman/provisional-derivations/recovery_waterfall.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_li_lu/provisional-derivations/promise_integrity_ledger.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_li_lu/provisional-derivations/ten_year_return_bridge.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_lynch/provisional-derivations/category_classifier.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_lynch/provisional-derivations/story_numbers_check.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_marks/provisional-derivations/cycle_temperature.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_marks/provisional-derivations/implied_expectations.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_munger/provisional-derivations/failure_path_graph.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_munger/provisional-derivations/incentive_map.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_pabrai/provisional-derivations/discrete_payoff.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_pabrai/provisional-derivations/downside_floor.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_simons/provisional-derivations/leakage_audit.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_simons/provisional-derivations/oos_cost_test.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_sinclair/provisional-derivations/net_edge_sizer.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_sinclair/provisional-derivations/realized_vol_forecast.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_soros/provisional-derivations/reflexivity_graph.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_soros/provisional-derivations/reversal_monitor.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_taleb/provisional-derivations/payoff_ruin.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_thorp/provisional-derivations/edge_recalculator.derived-proxy-evidence.json +0 -64
- package/knowledge/solo-test/persona-v3-solo-test-formulas/master_thorp/provisional-derivations/fractional_kelly.derived-proxy-evidence.json +0 -64
package/knowledge/solo-test/persona-v3-solo-test-formulas/master_thorp/components/tools.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
[
|
|
2
2
|
{
|
|
3
3
|
"assurance_class": "provisional_derived_proxy",
|
|
4
|
-
"derivation_evidence_hash": "sha256:
|
|
5
|
-
"derivation_spec_hash": "sha256:
|
|
6
|
-
"derivation_spec_id": "master_thorp.
|
|
4
|
+
"derivation_evidence_hash": "sha256:b85e21489b9a580f5bb3a2b8e7a537320277a23029675c607ae52d6d300a1657",
|
|
5
|
+
"derivation_spec_hash": "sha256:09e268a0fc88ee1fc5ece944be7ed8b15c1109eac01d6346cbf4452c9d380533",
|
|
6
|
+
"derivation_spec_id": "master_thorp.net_edge.prototype_v1.derived_proxy_v1",
|
|
7
7
|
"dsl_version": "1.1",
|
|
8
|
-
"id": "master_thorp.
|
|
8
|
+
"id": "master_thorp.net_edge",
|
|
9
9
|
"input_contracts": [
|
|
10
10
|
{
|
|
11
11
|
"on_missing": "fail",
|
|
@@ -14,44 +14,57 @@
|
|
|
14
14
|
"basis": "instant",
|
|
15
15
|
"window": null
|
|
16
16
|
},
|
|
17
|
-
"unit": "
|
|
18
|
-
"value_kind": "
|
|
17
|
+
"unit": "decimal",
|
|
18
|
+
"value_kind": "ratio"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"on_missing": "fail",
|
|
22
|
+
"period": {
|
|
23
|
+
"alignment": "as_of",
|
|
24
|
+
"basis": "instant",
|
|
25
|
+
"window": null
|
|
26
|
+
},
|
|
27
|
+
"unit": "decimal_of_mid",
|
|
28
|
+
"value_kind": "ratio"
|
|
19
29
|
}
|
|
20
30
|
],
|
|
21
|
-
"input_schema_hash": "sha256:
|
|
31
|
+
"input_schema_hash": "sha256:1b2e9ab2dcebe05a8d4a1d93746ac0ec592cc0a156c36b818d261e11aeb00d53",
|
|
22
32
|
"inputs": [
|
|
23
33
|
{
|
|
24
|
-
"fact_id": "
|
|
34
|
+
"fact_id": "market.change_pct"
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"fact_id": "execution.bid_ask"
|
|
25
38
|
}
|
|
26
39
|
],
|
|
27
40
|
"intended_use": "local_test_only",
|
|
28
|
-
"kind": "
|
|
41
|
+
"kind": "recomputation",
|
|
29
42
|
"on_missing": "fail",
|
|
30
|
-
"operation": "
|
|
31
|
-
"output_id": "trade.
|
|
43
|
+
"operation": "subtract",
|
|
44
|
+
"output_id": "trade.net_edge.master_thorp",
|
|
32
45
|
"output_period": {
|
|
33
46
|
"alignment": "as_of",
|
|
34
47
|
"basis": "instant",
|
|
35
48
|
"window": null
|
|
36
49
|
},
|
|
37
|
-
"output_schema_hash": "sha256:
|
|
50
|
+
"output_schema_hash": "sha256:9f96e26d5e549ade4e9e7f680eafd0a33d546cba620cd79dd757ca7cce8816e5",
|
|
38
51
|
"production_eligible": false,
|
|
39
52
|
"review_status": "not_human_reviewed",
|
|
40
53
|
"schema_version": 1,
|
|
41
54
|
"source_ids": [
|
|
42
|
-
"derived_proxy:master_thorp.
|
|
55
|
+
"derived_proxy:master_thorp.net_edge.prototype_v1"
|
|
43
56
|
],
|
|
44
|
-
"unit": "
|
|
45
|
-
"value_kind": "
|
|
46
|
-
"version": "0.
|
|
57
|
+
"unit": "decimal",
|
|
58
|
+
"value_kind": "ratio",
|
|
59
|
+
"version": "0.2.0"
|
|
47
60
|
},
|
|
48
61
|
{
|
|
49
62
|
"assurance_class": "provisional_derived_proxy",
|
|
50
|
-
"derivation_evidence_hash": "sha256:
|
|
51
|
-
"derivation_spec_hash": "sha256:
|
|
52
|
-
"derivation_spec_id": "master_thorp.
|
|
63
|
+
"derivation_evidence_hash": "sha256:374b03940179a910863933294ea9670db249d921fb7e3249e0c6dd091d8af99a",
|
|
64
|
+
"derivation_spec_hash": "sha256:a6dd488d25efb31022335ad6f444940ca8def0a055f8c4ab720ddb82374a7cd1",
|
|
65
|
+
"derivation_spec_id": "master_thorp.edge_per_unit_of_volatility.prototype_v1.derived_proxy_v1",
|
|
53
66
|
"dsl_version": "1.1",
|
|
54
|
-
"id": "master_thorp.
|
|
67
|
+
"id": "master_thorp.edge_per_unit_of_volatility",
|
|
55
68
|
"input_contracts": [
|
|
56
69
|
{
|
|
57
70
|
"on_missing": "fail",
|
|
@@ -60,35 +73,48 @@
|
|
|
60
73
|
"basis": "instant",
|
|
61
74
|
"window": null
|
|
62
75
|
},
|
|
63
|
-
"unit": "
|
|
64
|
-
"value_kind": "
|
|
76
|
+
"unit": "decimal",
|
|
77
|
+
"value_kind": "ratio"
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"on_missing": "fail",
|
|
81
|
+
"period": {
|
|
82
|
+
"alignment": "as_of",
|
|
83
|
+
"basis": "instant",
|
|
84
|
+
"window": null
|
|
85
|
+
},
|
|
86
|
+
"unit": "decimal_annualized_volatility",
|
|
87
|
+
"value_kind": "ratio"
|
|
65
88
|
}
|
|
66
89
|
],
|
|
67
|
-
"input_schema_hash": "sha256:
|
|
90
|
+
"input_schema_hash": "sha256:589099421150597f448dad9a097aef60b96a8beb7e9eb7b1fef066305153690c",
|
|
68
91
|
"inputs": [
|
|
69
92
|
{
|
|
70
|
-
"
|
|
93
|
+
"output_id": "trade.net_edge.master_thorp"
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"fact_id": "options.implied_volatility"
|
|
71
97
|
}
|
|
72
98
|
],
|
|
73
99
|
"intended_use": "local_test_only",
|
|
74
|
-
"kind": "
|
|
100
|
+
"kind": "recomputation",
|
|
75
101
|
"on_missing": "fail",
|
|
76
|
-
"operation": "
|
|
77
|
-
"output_id": "
|
|
102
|
+
"operation": "divide",
|
|
103
|
+
"output_id": "trade.edge_per_unit_of_volatility.master_thorp",
|
|
78
104
|
"output_period": {
|
|
79
105
|
"alignment": "as_of",
|
|
80
106
|
"basis": "instant",
|
|
81
107
|
"window": null
|
|
82
108
|
},
|
|
83
|
-
"output_schema_hash": "sha256:
|
|
109
|
+
"output_schema_hash": "sha256:58d54e4438d5c1423d53dcbbfc391b7b70bcb41083f5df9230432bc419184a43",
|
|
84
110
|
"production_eligible": false,
|
|
85
111
|
"review_status": "not_human_reviewed",
|
|
86
112
|
"schema_version": 1,
|
|
87
113
|
"source_ids": [
|
|
88
|
-
"derived_proxy:master_thorp.
|
|
114
|
+
"derived_proxy:master_thorp.edge_per_unit_of_volatility.prototype_v1"
|
|
89
115
|
],
|
|
90
|
-
"unit": "
|
|
91
|
-
"value_kind": "
|
|
92
|
-
"version": "0.
|
|
116
|
+
"unit": "decimal",
|
|
117
|
+
"value_kind": "ratio",
|
|
118
|
+
"version": "0.2.0"
|
|
93
119
|
}
|
|
94
120
|
]
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
{
|
|
2
|
+
"artifact_kind": "persona_v3_provisional_formula_derivation_evidence",
|
|
3
|
+
"assurance_class": "provisional_derived_proxy",
|
|
4
|
+
"derivation_spec": {
|
|
5
|
+
"artifact_kind": "persona_v3_provisional_formula_derivation_spec",
|
|
6
|
+
"assurance_class": "provisional_derived_proxy",
|
|
7
|
+
"authoring_candidate_hash": "sha256:4d328d7bfb15575aad0df48c2431e55b692b96198230808c48b8d12e65bb145b",
|
|
8
|
+
"derivation_policy": "ai_authored_method_formula_v1",
|
|
9
|
+
"derivation_spec_id": "master_thorp.edge_per_unit_of_volatility.prototype_v1.derived_proxy_v1",
|
|
10
|
+
"formula": {
|
|
11
|
+
"inputs": [
|
|
12
|
+
{
|
|
13
|
+
"on_missing": "fail",
|
|
14
|
+
"operand": {
|
|
15
|
+
"output_id": "trade.net_edge.master_thorp"
|
|
16
|
+
},
|
|
17
|
+
"period": {
|
|
18
|
+
"alignment": "as_of",
|
|
19
|
+
"basis": "instant",
|
|
20
|
+
"window": null
|
|
21
|
+
},
|
|
22
|
+
"unit": "decimal",
|
|
23
|
+
"value_kind": "ratio"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"on_missing": "fail",
|
|
27
|
+
"operand": {
|
|
28
|
+
"fact_id": "options.implied_volatility"
|
|
29
|
+
},
|
|
30
|
+
"period": {
|
|
31
|
+
"alignment": "as_of",
|
|
32
|
+
"basis": "instant",
|
|
33
|
+
"window": null
|
|
34
|
+
},
|
|
35
|
+
"unit": "decimal_annualized_volatility",
|
|
36
|
+
"value_kind": "ratio"
|
|
37
|
+
}
|
|
38
|
+
],
|
|
39
|
+
"kind": "recomputation",
|
|
40
|
+
"on_missing": "fail",
|
|
41
|
+
"operation": "divide",
|
|
42
|
+
"output": {
|
|
43
|
+
"output_id": "trade.edge_per_unit_of_volatility.master_thorp",
|
|
44
|
+
"period": {
|
|
45
|
+
"alignment": "as_of",
|
|
46
|
+
"basis": "instant",
|
|
47
|
+
"window": null
|
|
48
|
+
},
|
|
49
|
+
"unit": "decimal",
|
|
50
|
+
"value_kind": "ratio"
|
|
51
|
+
},
|
|
52
|
+
"version": "0.2.0"
|
|
53
|
+
},
|
|
54
|
+
"input_contract_source": "unknown_fact_fail_closed_proxy_scalar_v1",
|
|
55
|
+
"persona_id": "master_thorp",
|
|
56
|
+
"prototype_content_hash": "sha256:af33c7887d97bd0f25cec9a9d53be11efc3beb554952b2d280f45689f13baf8f",
|
|
57
|
+
"prototype_id": "master_thorp.edge_per_unit_of_volatility.prototype_v1",
|
|
58
|
+
"schema_version": 1,
|
|
59
|
+
"tool_id": "master_thorp.edge_per_unit_of_volatility"
|
|
60
|
+
},
|
|
61
|
+
"derivation_spec_hash": "sha256:a6dd488d25efb31022335ad6f444940ca8def0a055f8c4ab720ddb82374a7cd1",
|
|
62
|
+
"human_reviewer_ids": [],
|
|
63
|
+
"intended_use": "local_test_only",
|
|
64
|
+
"limitations": [
|
|
65
|
+
"ai_authored_candidate_formula_not_human_reviewed",
|
|
66
|
+
"thresholds_are_derived_from_published_method_writing_not_adjudicated",
|
|
67
|
+
"unknown_fact_proxy_scalar_unit_requires_a_local_test_adapter",
|
|
68
|
+
"no_human_formula_review_or_cryptographic_approval_exists",
|
|
69
|
+
"must_not_be_used_for_production_admission_release_or_method_model_claims"
|
|
70
|
+
],
|
|
71
|
+
"method_model_eligible": false,
|
|
72
|
+
"production_effect": "none",
|
|
73
|
+
"production_eligible": false,
|
|
74
|
+
"review_status": "not_human_reviewed",
|
|
75
|
+
"schema_version": 1,
|
|
76
|
+
"signature_count": 0
|
|
77
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
{
|
|
2
|
+
"artifact_kind": "persona_v3_provisional_formula_derivation_evidence",
|
|
3
|
+
"assurance_class": "provisional_derived_proxy",
|
|
4
|
+
"derivation_spec": {
|
|
5
|
+
"artifact_kind": "persona_v3_provisional_formula_derivation_spec",
|
|
6
|
+
"assurance_class": "provisional_derived_proxy",
|
|
7
|
+
"authoring_candidate_hash": "sha256:d3b8e93179f9c97e9fa5892910e77f45cb606ff7a85e7ae2ffe2a28ca546292a",
|
|
8
|
+
"derivation_policy": "ai_authored_method_formula_v1",
|
|
9
|
+
"derivation_spec_id": "master_thorp.net_edge.prototype_v1.derived_proxy_v1",
|
|
10
|
+
"formula": {
|
|
11
|
+
"inputs": [
|
|
12
|
+
{
|
|
13
|
+
"on_missing": "fail",
|
|
14
|
+
"operand": {
|
|
15
|
+
"fact_id": "market.change_pct"
|
|
16
|
+
},
|
|
17
|
+
"period": {
|
|
18
|
+
"alignment": "as_of",
|
|
19
|
+
"basis": "instant",
|
|
20
|
+
"window": null
|
|
21
|
+
},
|
|
22
|
+
"unit": "decimal",
|
|
23
|
+
"value_kind": "ratio"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"on_missing": "fail",
|
|
27
|
+
"operand": {
|
|
28
|
+
"fact_id": "execution.bid_ask"
|
|
29
|
+
},
|
|
30
|
+
"period": {
|
|
31
|
+
"alignment": "as_of",
|
|
32
|
+
"basis": "instant",
|
|
33
|
+
"window": null
|
|
34
|
+
},
|
|
35
|
+
"unit": "decimal_of_mid",
|
|
36
|
+
"value_kind": "ratio"
|
|
37
|
+
}
|
|
38
|
+
],
|
|
39
|
+
"kind": "recomputation",
|
|
40
|
+
"on_missing": "fail",
|
|
41
|
+
"operation": "subtract",
|
|
42
|
+
"output": {
|
|
43
|
+
"output_id": "trade.net_edge.master_thorp",
|
|
44
|
+
"period": {
|
|
45
|
+
"alignment": "as_of",
|
|
46
|
+
"basis": "instant",
|
|
47
|
+
"window": null
|
|
48
|
+
},
|
|
49
|
+
"unit": "decimal",
|
|
50
|
+
"value_kind": "ratio"
|
|
51
|
+
},
|
|
52
|
+
"version": "0.2.0"
|
|
53
|
+
},
|
|
54
|
+
"input_contract_source": "grounding_adapter_canonical_contract_v1",
|
|
55
|
+
"persona_id": "master_thorp",
|
|
56
|
+
"prototype_content_hash": "sha256:af33c7887d97bd0f25cec9a9d53be11efc3beb554952b2d280f45689f13baf8f",
|
|
57
|
+
"prototype_id": "master_thorp.net_edge.prototype_v1",
|
|
58
|
+
"schema_version": 1,
|
|
59
|
+
"tool_id": "master_thorp.net_edge"
|
|
60
|
+
},
|
|
61
|
+
"derivation_spec_hash": "sha256:09e268a0fc88ee1fc5ece944be7ed8b15c1109eac01d6346cbf4452c9d380533",
|
|
62
|
+
"human_reviewer_ids": [],
|
|
63
|
+
"intended_use": "local_test_only",
|
|
64
|
+
"limitations": [
|
|
65
|
+
"ai_authored_candidate_formula_not_human_reviewed",
|
|
66
|
+
"thresholds_are_derived_from_published_method_writing_not_adjudicated",
|
|
67
|
+
"no_human_formula_review_or_cryptographic_approval_exists",
|
|
68
|
+
"must_not_be_used_for_production_admission_release_or_method_model_claims"
|
|
69
|
+
],
|
|
70
|
+
"method_model_eligible": false,
|
|
71
|
+
"production_effect": "none",
|
|
72
|
+
"production_eligible": false,
|
|
73
|
+
"review_status": "not_human_reviewed",
|
|
74
|
+
"schema_version": 1,
|
|
75
|
+
"signature_count": 0
|
|
76
|
+
}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Market breadth, computed from the basket rather than bought from a screener.
|
|
3
|
+
*
|
|
4
|
+
* "What fraction of the index is above its 200-day average" is the classic breadth reading,
|
|
5
|
+
* and every free source for it is either a screener whose robots.txt forbids the query or a
|
|
6
|
+
* vendor feed. But the question only ever concerns one basket at a time, and the holdings of
|
|
7
|
+
* that basket are already fetched -- so the honest way to get it is to compute it: one year of
|
|
8
|
+
* daily closes per constituent, one moving average each, count how many are above.
|
|
9
|
+
*
|
|
10
|
+
* That is a real cost, one request per name, which is why it is bounded and why the result
|
|
11
|
+
* always reports how much of the basket it actually measured. Breadth over 40% of the weights
|
|
12
|
+
* is a different claim from breadth over 95%, and a reader cannot tell them apart from the
|
|
13
|
+
* number alone.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
import { LIMITS } from "./constants.mjs";
|
|
17
|
+
import { fetchText } from "./quotes.mjs";
|
|
18
|
+
|
|
19
|
+
/** A 200-day average needs 200 closes; a year of trading gives about 252. */
|
|
20
|
+
export const BREADTH_WINDOW_DAYS = 200;
|
|
21
|
+
export const BREADTH_MIN_CLOSES = 200;
|
|
22
|
+
export const BREADTH_MAX_SYMBOLS = 120;
|
|
23
|
+
export const BREADTH_MIN_COVERAGE = 0.5;
|
|
24
|
+
|
|
25
|
+
const chartUrl = (symbol) => (
|
|
26
|
+
`https://query1.finance.yahoo.com/v8/finance/chart/${encodeURIComponent(symbol)}?range=1y&interval=1d`
|
|
27
|
+
);
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Closing prices from a Yahoo chart payload, nulls removed.
|
|
31
|
+
*
|
|
32
|
+
* A halted or untraded session is written as null, not as the previous close. Dropping it is
|
|
33
|
+
* correct for an average; carrying it forward would invent a print.
|
|
34
|
+
*/
|
|
35
|
+
export function parseDailyCloses(json) {
|
|
36
|
+
const result = json?.chart?.result?.[0];
|
|
37
|
+
const closes = result?.indicators?.quote?.[0]?.close;
|
|
38
|
+
if (!Array.isArray(closes)) return null;
|
|
39
|
+
const clean = closes.filter((value) => typeof value === "number" && Number.isFinite(value) && value > 0);
|
|
40
|
+
return clean.length ? clean : null;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/** Simple moving average of the last `window` closes, or null when there is not enough history. */
|
|
44
|
+
export function movingAverage(closes, window = BREADTH_WINDOW_DAYS) {
|
|
45
|
+
if (!Array.isArray(closes) || closes.length < window) return null;
|
|
46
|
+
const tail = closes.slice(-window);
|
|
47
|
+
return tail.reduce((sum, value) => sum + value, 0) / tail.length;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export function isAboveAverage(closes, window = BREADTH_WINDOW_DAYS) {
|
|
51
|
+
const average = movingAverage(closes, window);
|
|
52
|
+
if (average === null) return null;
|
|
53
|
+
return closes.at(-1) > average;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Weighted share of a basket trading above its own 200-day average.
|
|
58
|
+
*
|
|
59
|
+
* Weighted, not counted: a breadth reading that treats the largest and smallest holding alike
|
|
60
|
+
* describes a portfolio nobody owns. The unweighted count is returned alongside it, because
|
|
61
|
+
* the gap between the two IS the concentration story -- a cap-weighted basket can be above its
|
|
62
|
+
* average on weight while most of its members are below.
|
|
63
|
+
*/
|
|
64
|
+
export async function fetchBasketBreadth(holdings, { signal, concurrency = 8 } = {}) {
|
|
65
|
+
const unavailable = [];
|
|
66
|
+
const ranked = [...(holdings || [])]
|
|
67
|
+
.filter((row) => row?.ticker && Number.isFinite(row.weight) && row.weight > 0)
|
|
68
|
+
.sort((left, right) => right.weight - left.weight)
|
|
69
|
+
.slice(0, BREADTH_MAX_SYMBOLS);
|
|
70
|
+
if (!ranked.length) {
|
|
71
|
+
return { available: false, unavailable: ["breadth: the basket published no weighted holdings"] };
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
const measured = [];
|
|
75
|
+
const queue = [...ranked];
|
|
76
|
+
const worker = async () => {
|
|
77
|
+
for (let next = queue.shift(); next; next = queue.shift()) {
|
|
78
|
+
try {
|
|
79
|
+
const closes = parseDailyCloses(JSON.parse(await fetchText(chartUrl(next.ticker), LIMITS.QUOTE_FETCH_MS, signal)));
|
|
80
|
+
if (!closes || closes.length < BREADTH_MIN_CLOSES) {
|
|
81
|
+
unavailable.push(`breadth ${next.ticker}: fewer than ${BREADTH_MIN_CLOSES} daily closes in the last year`);
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
const above = isAboveAverage(closes);
|
|
85
|
+
if (above === null) continue;
|
|
86
|
+
measured.push({ ticker: next.ticker, weight: next.weight, above, close: closes.at(-1), units: next.units });
|
|
87
|
+
} catch (error) {
|
|
88
|
+
unavailable.push(`breadth ${next.ticker}: ${String(error?.message || error)}`);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
await Promise.all(Array.from({ length: Math.min(concurrency, ranked.length) }, worker));
|
|
93
|
+
|
|
94
|
+
const coverage = measured.reduce((sum, row) => sum + row.weight, 0);
|
|
95
|
+
if (!measured.length || coverage < BREADTH_MIN_COVERAGE) {
|
|
96
|
+
unavailable.push(
|
|
97
|
+
`breadth: measured ${(coverage * 100).toFixed(1)}% of basket weight, below the ${BREADTH_MIN_COVERAGE * 100}% floor`,
|
|
98
|
+
);
|
|
99
|
+
return { available: false, coverage_weight: Number(coverage.toFixed(6)), measured: measured.length, unavailable };
|
|
100
|
+
}
|
|
101
|
+
const aboveWeight = measured.filter((row) => row.above).reduce((sum, row) => sum + row.weight, 0);
|
|
102
|
+
const aboveCount = measured.filter((row) => row.above).length;
|
|
103
|
+
// The same closes price the basket. An issuer that publishes unit counts but no assets
|
|
104
|
+
// under management -- which is the common case outside the two largest -- gets its size
|
|
105
|
+
// from the positions it disclosed, rather than staying an unexplained blank.
|
|
106
|
+
const priced = measured.filter((row) => Number.isFinite(row.units) && row.units > 0);
|
|
107
|
+
const pricedWeight = priced.reduce((sum, row) => sum + row.weight, 0);
|
|
108
|
+
const netAssets = priced.reduce((sum, row) => sum + (row.units * row.close), 0);
|
|
109
|
+
return Object.freeze({
|
|
110
|
+
available: true,
|
|
111
|
+
// Only meaningful when nearly the whole basket was priced; a partial sum is not the fund.
|
|
112
|
+
net_assets: pricedWeight >= 0.95 && netAssets > 0 ? Number(netAssets.toFixed(2)) : null,
|
|
113
|
+
net_assets_coverage: Number(pricedWeight.toFixed(6)),
|
|
114
|
+
weighted_above: Number((aboveWeight / coverage).toFixed(6)),
|
|
115
|
+
counted_above: Number((aboveCount / measured.length).toFixed(6)),
|
|
116
|
+
coverage_weight: Number(coverage.toFixed(6)),
|
|
117
|
+
measured: measured.length,
|
|
118
|
+
window_days: BREADTH_WINDOW_DAYS,
|
|
119
|
+
method: "share_of_constituents_trading_above_their_own_200_day_simple_average",
|
|
120
|
+
unavailable,
|
|
121
|
+
});
|
|
122
|
+
}
|
package/mcp/lib/codex.mjs
CHANGED
|
@@ -51,9 +51,9 @@ export function stopChild(child, force = false) {
|
|
|
51
51
|
* second Codex-backed search bridge, creating recursive workers and multi-minute nested
|
|
52
52
|
* timeouts. Authentication still comes from CODEX_HOME according to the Codex CLI contract.
|
|
53
53
|
*/
|
|
54
|
-
export function codexWorkerArgs(outFile, dataDir = DATA_DIR) {
|
|
54
|
+
export function codexWorkerArgs(outFile, dataDir = DATA_DIR, { search = true } = {}) {
|
|
55
55
|
return [
|
|
56
|
-
"--search",
|
|
56
|
+
...(search ? ["--search"] : []),
|
|
57
57
|
"-s",
|
|
58
58
|
"read-only",
|
|
59
59
|
"-a",
|
|
@@ -73,7 +73,7 @@ export function runCodex(prompt, timeoutMs, onStart = () => {}, onHeartbeat = ()
|
|
|
73
73
|
return new Promise((resolvePromise) => {
|
|
74
74
|
mkdirSync(DATA_DIR, { recursive: true });
|
|
75
75
|
const outFile = join(DATA_DIR, `codex-${Date.now()}-${Math.random().toString(16).slice(2)}.txt`);
|
|
76
|
-
const args = codexWorkerArgs(outFile);
|
|
76
|
+
const args = codexWorkerArgs(outFile, DATA_DIR, { search: runtime.search !== false });
|
|
77
77
|
const invocation = codexInvocation(args);
|
|
78
78
|
const spawnWorker = runtime.spawn || spawn;
|
|
79
79
|
const stopWorker = runtime.stopChild || stopChild;
|
package/mcp/lib/constants.mjs
CHANGED
|
@@ -58,38 +58,52 @@ export const OUTPUT_MODES = [
|
|
|
58
58
|
* section body must carry, calibrated against the manager fallback report, which emits
|
|
59
59
|
* several legitimately terse sections ("## Confidence\nmedium").
|
|
60
60
|
*/
|
|
61
|
+
/**
|
|
62
|
+
* Anchors for the system-owned publication sections.
|
|
63
|
+
*
|
|
64
|
+
* The quality gate must never locate these by heading text. A PM-authored section is
|
|
65
|
+
* relabelled rather than deleted, and several of those localized commentary titles legally
|
|
66
|
+
* contain a section alias -- the Japanese label "PMによるメソッド席の説明" contains the
|
|
67
|
+
* `master_bench` alias "メソッド席". Heading assignment keeps the richest body, so the
|
|
68
|
+
* commentary could win the assignment and every per-seat coverage check would then fail
|
|
69
|
+
* against PM prose, leaving the report permanently unpublishable in ja/ko.
|
|
70
|
+
*/
|
|
71
|
+
export const RECORDED_BENCH_MARKER_PREFIX = "alphacouncil:recorded-master-bench:v1:";
|
|
72
|
+
export const RECORDED_INSTRUMENT_MARKER_PREFIX = "alphacouncil:recorded-instrument-structure:v1:";
|
|
73
|
+
|
|
61
74
|
export const REPORT_SECTIONS = [
|
|
62
|
-
{ id: "conclusion", aliases: ["结论", "conclusion"], min_body: 6 },
|
|
63
|
-
{ id: "analyst_work_log", aliases: ["分析师工作记录", "analyst work log"], min_body: 12, per_task: true },
|
|
64
|
-
{ id: "debate_record", aliases: ["多空辩论记录", "bull bear debate", "debate record"], min_body: 20 },
|
|
75
|
+
{ id: "conclusion", aliases: ["结论", "conclusion", "結論", "결론"], min_body: 6 },
|
|
76
|
+
{ id: "analyst_work_log", aliases: ["分析师工作记录", "analyst work log", "アナリスト作業記録", "分析担当作業記録", "분석가 작업 기록"], min_body: 12, per_task: true },
|
|
77
|
+
{ id: "debate_record", aliases: ["多空辩论记录", "bull bear debate", "debate record", "強気弱気討論記録", "多空討論記録", "롱 숏 토론 기록", "강세 약세 토론 기록"], min_body: 20 },
|
|
65
78
|
// Required only when a bench actually ran. A report that spends ten master seats and
|
|
66
79
|
// then mentions none of them is the defect this entry exists to catch; a screen-only
|
|
67
80
|
// run that never selected one must not be failed for omitting it.
|
|
68
|
-
{ id: "master_bench", aliases: ["大师席", "master席位", "master bench", "master lens"], min_body: 20, when_masters: true },
|
|
69
|
-
{ id: "
|
|
70
|
-
{ id: "
|
|
71
|
-
{ id: "
|
|
72
|
-
{ id: "
|
|
73
|
-
{ id: "
|
|
74
|
-
{ id: "
|
|
75
|
-
{ id: "
|
|
76
|
-
{ id: "
|
|
81
|
+
{ id: "master_bench", aliases: ["大师席", "master席位", "master bench", "master lens", "マスターベンチ", "マスター・ベンチ", "メソッド席", "마스터 벤치", "방법론 좌석"], min_body: 20, when_masters: true },
|
|
82
|
+
{ id: "instrument_structure", aliases: ["基金与指数结构", "ETF与指数结构", "资产结构与穿透", "fund and index structure", "instrument structure and look through", "ETF index structure", "ファンドと指数の構造", "資産構造とルックスルー", "펀드와 지수 구조", "자산 구조 및 룩스루"], min_body: 40, when_fund_or_index: true },
|
|
83
|
+
{ id: "market_expectations", aliases: ["市场预期", "market expectations", "市場予想", "市場期待", "시장 기대"], min_body: 8 },
|
|
84
|
+
{ id: "analyst_rating", aliases: ["分析师评级", "analyst rating", "target price", "アナリスト評価", "目標株価", "애널리스트 등급", "목표가"], min_body: 8 },
|
|
85
|
+
{ id: "earnings_call", aliases: ["电话会", "earnings call", "決算説明会", "실적 발표 콜"], min_body: 8 },
|
|
86
|
+
{ id: "quant", aliases: ["量化", "quant", "クオンツ", "定量", "퀀트", "정량"], min_body: 8 },
|
|
87
|
+
{ id: "news", aliases: ["新闻", "news", "ニュース", "뉴스"], min_body: 8 },
|
|
88
|
+
{ id: "short_interest", aliases: ["short interest", "borrow", "空売り", "貸株", "공매도", "대차"], min_body: 8 },
|
|
89
|
+
{ id: "strategic_transaction", aliases: ["战略交易", "strategic transaction", "banking event", "戦略取引", "銀行イベント", "전략적 거래", "금융 이벤트"], min_body: 8 },
|
|
90
|
+
{ id: "valuation", aliases: ["估值", "valuation", "バリュエーション", "企業価値評価", "가치평가"], min_body: 8 },
|
|
77
91
|
// Required, and deliberately not called "target price". A single number pretends to a
|
|
78
92
|
// precision nobody has; what a reader needs is the price at which the case changes.
|
|
79
93
|
// Three master lenses already demand this -- Marks asks at what price it stops being
|
|
80
94
|
// "leave it", Graham asks for a calculable floor, Thorp asks for a size -- and the PM
|
|
81
95
|
// used to be able to skip it with "the cycle position is undetermined".
|
|
82
|
-
{ id: "price_levels", aliases: ["价位", "入场价位", "price levels", "entry level", "价格条件"], min_body: 30 },
|
|
83
|
-
{ id: "catalysts", aliases: ["催化剂", "catalyst", "catalysts"], min_body: 8 },
|
|
84
|
-
{ id: "risks", aliases: ["风险", "risk", "risks"], min_body: 8 },
|
|
85
|
-
{ id: "position", aliases: ["仓位", "position"], min_body: 8 },
|
|
86
|
-
{ id: "short_term", aliases: ["短线", "short term"], min_body: 6 },
|
|
87
|
-
{ id: "medium_term", aliases: ["中期", "medium term"], min_body: 6 },
|
|
88
|
-
{ id: "long_term", aliases: ["长期", "long term"], min_body: 6 },
|
|
89
|
-
{ id: "data_gaps", aliases: ["数据缺口", "data gaps", "unavailable data"], min_body: 8 },
|
|
90
|
-
{ id: "invalidation", aliases: ["反证", "invalidation"], min_body: 8 },
|
|
91
|
-
{ id: "confidence", aliases: ["置信", "confidence"], min_body: 3 },
|
|
92
|
-
{ id: "source_table", aliases: ["来源表", "source table"], min_body: 6 },
|
|
96
|
+
{ id: "price_levels", aliases: ["价位", "入场价位", "price levels", "entry level", "价格条件", "価格条件", "エントリー価格", "가격 조건", "진입 가격"], min_body: 30 },
|
|
97
|
+
{ id: "catalysts", aliases: ["催化剂", "catalyst", "catalysts", "カタリスト", "材料", "촉매"], min_body: 8 },
|
|
98
|
+
{ id: "risks", aliases: ["风险", "risk", "risks", "リスク", "위험"], min_body: 8 },
|
|
99
|
+
{ id: "position", aliases: ["仓位", "position", "ポジション", "配分", "포지션"], min_body: 8 },
|
|
100
|
+
{ id: "short_term", aliases: ["短线", "short term", "短期", "단기"], min_body: 6 },
|
|
101
|
+
{ id: "medium_term", aliases: ["中期", "medium term", "중기"], min_body: 6 },
|
|
102
|
+
{ id: "long_term", aliases: ["长期", "long term", "長期", "장기"], min_body: 6 },
|
|
103
|
+
{ id: "data_gaps", aliases: ["数据缺口", "data gaps", "unavailable data", "データ欠落", "利用不可データ", "데이터 공백", "사용 불가 데이터"], min_body: 8 },
|
|
104
|
+
{ id: "invalidation", aliases: ["反证", "invalidation", "無効化条件", "反証条件", "무효화 조건", "반증 조건"], min_body: 8 },
|
|
105
|
+
{ id: "confidence", aliases: ["置信", "confidence", "信頼度", "신뢰도"], min_body: 3 },
|
|
106
|
+
{ id: "source_table", aliases: ["来源表", "source table", "出典表", "ソース表", "출처 표"], min_body: 6 },
|
|
93
107
|
];
|
|
94
108
|
|
|
95
109
|
// Quick reports are deliberately a different publication scope. Requiring the full
|
|
@@ -100,6 +114,7 @@ const QUICK_REPORT_SECTION_IDS = new Set([
|
|
|
100
114
|
"analyst_work_log",
|
|
101
115
|
"debate_record",
|
|
102
116
|
"master_bench",
|
|
117
|
+
"instrument_structure",
|
|
103
118
|
"earnings_call",
|
|
104
119
|
"news",
|
|
105
120
|
"valuation",
|
|
@@ -159,6 +174,42 @@ export const LIMITS = Object.freeze({
|
|
|
159
174
|
SIGKILL_GRACE_MS: 5000,
|
|
160
175
|
/** Default per-subagent Codex timeout. */
|
|
161
176
|
CODEX_TIMEOUT_MS: Number(process.env.ALPHACOUNCIL_AGENT_TIMEOUT_MS) || 600000,
|
|
177
|
+
/** Non-overridable public ceiling for a plugin-managed full council. */
|
|
178
|
+
FULL_HARD_MAX_MS: 30 * 60 * 1000,
|
|
179
|
+
/** Default full-council queue-to-persistence budget. Operators may only lower it. */
|
|
180
|
+
FULL_TOTAL_MS: Math.max(1_000, Math.min(
|
|
181
|
+
Number(process.env.ALPHACOUNCIL_FULL_TOTAL_MS) || 30 * 60 * 1000,
|
|
182
|
+
30 * 60 * 1000,
|
|
183
|
+
)),
|
|
184
|
+
/** Deterministic grounding is useful, but it may not hold the whole run hostage. */
|
|
185
|
+
FULL_GROUNDING_MS: 30 * 1000,
|
|
186
|
+
/** All eight full evidence seats launch in one wave under this per-seat cap. */
|
|
187
|
+
FULL_EVIDENCE_MS: Math.max(1_000, Math.min(
|
|
188
|
+
Number(process.env.ALPHACOUNCIL_FULL_EVIDENCE_MS) || 6 * 60 * 1000,
|
|
189
|
+
6 * 60 * 1000,
|
|
190
|
+
)),
|
|
191
|
+
/** Every selected method gets one isolated explanation worker after its decision freezes. */
|
|
192
|
+
FULL_MASTER_MS: Math.max(1_000, Math.min(
|
|
193
|
+
Number(process.env.ALPHACOUNCIL_FULL_MASTER_MS) || 2 * 60 * 1000,
|
|
194
|
+
2 * 60 * 1000,
|
|
195
|
+
)),
|
|
196
|
+
/** Bull and bear run together inside each of the three full-council rounds. */
|
|
197
|
+
FULL_DEBATE_MS: Math.max(1_000, Math.min(
|
|
198
|
+
Number(process.env.ALPHACOUNCIL_FULL_DEBATE_MS) || 150 * 1000,
|
|
199
|
+
150 * 1000,
|
|
200
|
+
)),
|
|
201
|
+
/** The PM is the final model call and receives its own bounded slice. */
|
|
202
|
+
FULL_PM_MS: Math.max(1_000, Math.min(
|
|
203
|
+
Number(process.env.ALPHACOUNCIL_FULL_PM_MS) || 180 * 1000,
|
|
204
|
+
180 * 1000,
|
|
205
|
+
)),
|
|
206
|
+
/** Reserved for forced child settlement, deterministic assembly and atomic persistence. */
|
|
207
|
+
FULL_FINALIZE_RESERVE_MS: 45 * 1000,
|
|
208
|
+
/** A malformed response gets one short, no-search transport-only repair. */
|
|
209
|
+
PARSE_REPAIR_MS: 30 * 1000,
|
|
210
|
+
PARSE_REPAIR_INPUT_CHARS: 80 * 1000,
|
|
211
|
+
FULL_EVIDENCE_CONCURRENCY: 8,
|
|
212
|
+
FULL_MASTER_CONCURRENCY: 13,
|
|
162
213
|
/** Non-overridable public ceiling for a quick council, including retries and synthesis. */
|
|
163
214
|
QUICK_HARD_MAX_MS: 10 * 60 * 1000,
|
|
164
215
|
/** Default quick budget. Operators may lower it for stricter environments, never raise it. */
|
|
@@ -191,8 +242,8 @@ export const LIMITS = Object.freeze({
|
|
|
191
242
|
Math.trunc(Number(process.env.ALPHACOUNCIL_QUICK_MIN_SUCCESSFUL_TASKS) || 2),
|
|
192
243
|
)),
|
|
193
244
|
CONCURRENCY_MIN: 1,
|
|
194
|
-
CONCURRENCY_MAX:
|
|
195
|
-
CONCURRENCY_DEFAULT: Number(process.env.ALPHACOUNCIL_AGENT_CONCURRENCY) ||
|
|
245
|
+
CONCURRENCY_MAX: 26,
|
|
246
|
+
CONCURRENCY_DEFAULT: Number(process.env.ALPHACOUNCIL_AGENT_CONCURRENCY) || 8,
|
|
196
247
|
/** A selection is deliberately short-lived and may create exactly one council run. */
|
|
197
248
|
SELECTION_TTL_MS: Number(process.env.ALPHACOUNCIL_SELECTION_TTL_MS) || 60 * 60 * 1000,
|
|
198
249
|
/** Selection lock metadata advertises this lease, but a live owner is never pre-empted. */
|