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.
Files changed (481) hide show
  1. package/.claude-plugin/marketplace.json +3 -3
  2. package/.claude-plugin/plugin.json +2 -2
  3. package/.codex-plugin/plugin.json +4 -4
  4. package/AGENTS.md +25 -11
  5. package/CHANGELOG.md +146 -0
  6. package/CLAUDE.md +24 -7
  7. package/README.ja.md +15 -10
  8. package/README.md +21 -13
  9. package/README.zh-CN.md +17 -12
  10. package/data/authored/core-seats.mjs +808 -0
  11. package/data/authored/growth-seats.mjs +581 -0
  12. package/data/authored/index.mjs +114 -0
  13. package/data/authored/quant-seats.mjs +564 -0
  14. package/data/authored/value-seats.mjs +663 -0
  15. package/data/build-profile.v1.json +2 -1
  16. package/data/council-evaluation-protocol.v1.json +7 -4
  17. package/data/master-selector-method-locales.v1.mjs +10 -0
  18. package/data/persona-v3-ai-assisted-solo-profile.v1.json +2 -2
  19. package/data/persona-v3-build-specs.v1.mjs +60 -3
  20. package/docs/INSTALL.md +6 -10
  21. package/docs/personas.md +2 -1
  22. package/docs/plans/v1.0-roadmap.md +487 -0
  23. package/docs/plans/v1.1-basket-native-seats.md +267 -0
  24. package/docs/releases/v0.9.5.md +96 -0
  25. package/docs/releases/v1.0.0.md +164 -0
  26. package/docs/report-contract.md +30 -6
  27. package/knowledge/ai-assisted-solo/experiments/runs/a.json +13 -13
  28. package/knowledge/ai-assisted-solo/experiments/runs/b.json +2 -2
  29. package/knowledge/ai-assisted-solo/experiments/runs/c.json +2 -2
  30. package/knowledge/ai-assisted-solo/experiments/runs/d13.json +126 -126
  31. package/knowledge/ai-assisted-solo/experiments/runs/d26.json +274 -254
  32. package/knowledge/ai-assisted-solo/experiments/runs/e-d13.json +129 -129
  33. package/knowledge/ai-assisted-solo/experiments/runs/e-d26.json +277 -257
  34. package/knowledge/ai-assisted-solo/experiments/runs/h_ai_reference.json +278 -258
  35. package/knowledge/ai-assisted-solo/experiments/simulation-input.json +7278 -556
  36. package/knowledge/ai-assisted-solo/experiments/simulation-manifest.json +22 -22
  37. 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
  38. 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
  39. 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
  40. 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
  41. 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
  42. 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
  43. package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_bogle/reviews/expected_return_over_long_bond.ai-review.json +277 -0
  44. package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_bogle/reviews/fundamental_expected_return.ai-review.json +277 -0
  45. 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
  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
  47. 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
  48. 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
  49. 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
  50. 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
  51. 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
  52. 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
  53. 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
  54. 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
  55. 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
  56. 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
  57. 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
  58. 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
  59. 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
  60. 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
  61. 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
  62. 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
  63. 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
  64. 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
  65. 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
  66. 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
  67. 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
  68. 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
  69. 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
  70. 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
  71. 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
  72. 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
  73. 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
  74. 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
  75. 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
  76. package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_munger/reviews/reported_earnings_cash_gap.ai-review.json +277 -0
  77. 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
  78. 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
  79. 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
  80. 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
  81. 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
  82. 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
  83. 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
  84. 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
  85. 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
  86. 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
  87. 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
  88. 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
  89. 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
  90. 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
  91. package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/review-manifest.json +288 -270
  92. package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-semantic-adjudications/index.json +2 -2
  93. package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-semantic-extractions/index.json +2 -2
  94. package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-semantic-skeptic-reviews/index.json +2 -2
  95. package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-source-prereviews/index.json +6 -2
  96. package/knowledge/solo-test/masters/master_ackman/decision_policy.json +122 -11
  97. package/knowledge/solo-test/masters/master_ackman/doctrine.jsonl +2 -2
  98. package/knowledge/solo-test/masters/master_ackman/manifest.json +13 -6
  99. package/knowledge/solo-test/masters/master_ackman/provisional-index.json +3 -3
  100. package/knowledge/solo-test/masters/master_ackman/sources.jsonl +1 -1
  101. package/knowledge/solo-test/masters/master_ackman/tools.json +56 -30
  102. package/knowledge/solo-test/masters/master_aschenbrenner/decision_policy.json +101 -10
  103. package/knowledge/solo-test/masters/master_aschenbrenner/doctrine.jsonl +2 -2
  104. package/knowledge/solo-test/masters/master_aschenbrenner/manifest.json +12 -4
  105. package/knowledge/solo-test/masters/master_aschenbrenner/provisional-index.json +3 -3
  106. package/knowledge/solo-test/masters/master_aschenbrenner/sources.jsonl +1 -1
  107. package/knowledge/solo-test/masters/master_aschenbrenner/tools.json +56 -30
  108. package/knowledge/solo-test/masters/master_asness/decision_policy.json +89 -10
  109. package/knowledge/solo-test/masters/master_asness/doctrine.jsonl +2 -2
  110. package/knowledge/solo-test/masters/master_asness/manifest.json +11 -4
  111. package/knowledge/solo-test/masters/master_asness/provisional-index.json +3 -3
  112. package/knowledge/solo-test/masters/master_asness/sources.jsonl +1 -1
  113. package/knowledge/solo-test/masters/master_asness/tools.json +56 -30
  114. package/knowledge/solo-test/masters/master_bogle/counterfactuals.jsonl +0 -0
  115. package/knowledge/solo-test/masters/master_bogle/decision_cases.jsonl +0 -0
  116. package/knowledge/solo-test/masters/master_bogle/decision_policy.json +170 -0
  117. package/knowledge/solo-test/masters/master_bogle/doctrine.jsonl +14 -0
  118. package/knowledge/solo-test/masters/master_bogle/evaluation/calibration_cases.jsonl +0 -0
  119. package/knowledge/solo-test/masters/master_bogle/evaluation/experiments.json +5 -0
  120. package/knowledge/solo-test/masters/master_bogle/evaluation/golden_cases.jsonl +0 -0
  121. package/knowledge/solo-test/masters/master_bogle/evaluation/pairwise_cases.jsonl +0 -0
  122. package/knowledge/solo-test/masters/master_bogle/failures.jsonl +0 -0
  123. package/knowledge/solo-test/masters/master_bogle/manifest.json +141 -0
  124. package/knowledge/solo-test/masters/master_bogle/memory_policy.json +5 -0
  125. package/knowledge/solo-test/masters/master_bogle/provisional-index.json +41 -0
  126. package/knowledge/solo-test/masters/master_bogle/research_policy.json +11 -0
  127. package/knowledge/solo-test/masters/master_bogle/sources.jsonl +1 -0
  128. package/knowledge/solo-test/masters/master_bogle/tools.json +120 -0
  129. package/knowledge/solo-test/masters/master_bogle/voice.en.md +7 -0
  130. package/knowledge/solo-test/masters/master_bogle/voice.zh.md +7 -0
  131. package/knowledge/solo-test/masters/master_buffett/decision_policy.json +102 -11
  132. package/knowledge/solo-test/masters/master_buffett/doctrine.jsonl +2 -2
  133. package/knowledge/solo-test/masters/master_buffett/manifest.json +10 -4
  134. package/knowledge/solo-test/masters/master_buffett/provisional-index.json +3 -3
  135. package/knowledge/solo-test/masters/master_buffett/sources.jsonl +1 -1
  136. package/knowledge/solo-test/masters/master_buffett/tools.json +55 -29
  137. package/knowledge/solo-test/masters/master_burry/decision_policy.json +102 -12
  138. package/knowledge/solo-test/masters/master_burry/doctrine.jsonl +2 -2
  139. package/knowledge/solo-test/masters/master_burry/manifest.json +12 -6
  140. package/knowledge/solo-test/masters/master_burry/provisional-index.json +3 -3
  141. package/knowledge/solo-test/masters/master_burry/sources.jsonl +1 -1
  142. package/knowledge/solo-test/masters/master_burry/tools.json +56 -30
  143. package/knowledge/solo-test/masters/master_cathie_wood/decision_policy.json +74 -12
  144. package/knowledge/solo-test/masters/master_cathie_wood/doctrine.jsonl +2 -2
  145. package/knowledge/solo-test/masters/master_cathie_wood/manifest.json +12 -6
  146. package/knowledge/solo-test/masters/master_cathie_wood/provisional-index.json +3 -3
  147. package/knowledge/solo-test/masters/master_cathie_wood/sources.jsonl +1 -1
  148. package/knowledge/solo-test/masters/master_cathie_wood/tools.json +56 -30
  149. package/knowledge/solo-test/masters/master_dalio/decision_policy.json +123 -16
  150. package/knowledge/solo-test/masters/master_dalio/doctrine.jsonl +2 -2
  151. package/knowledge/solo-test/masters/master_dalio/manifest.json +10 -4
  152. package/knowledge/solo-test/masters/master_dalio/provisional-index.json +3 -3
  153. package/knowledge/solo-test/masters/master_dalio/sources.jsonl +1 -1
  154. package/knowledge/solo-test/masters/master_dalio/tools.json +56 -30
  155. package/knowledge/solo-test/masters/master_damodaran/decision_policy.json +58 -10
  156. package/knowledge/solo-test/masters/master_damodaran/doctrine.jsonl +2 -2
  157. package/knowledge/solo-test/masters/master_damodaran/manifest.json +9 -4
  158. package/knowledge/solo-test/masters/master_damodaran/provisional-index.json +3 -3
  159. package/knowledge/solo-test/masters/master_damodaran/sources.jsonl +1 -1
  160. package/knowledge/solo-test/masters/master_damodaran/tools.json +54 -28
  161. package/knowledge/solo-test/masters/master_druckenmiller/decision_policy.json +89 -10
  162. package/knowledge/solo-test/masters/master_druckenmiller/doctrine.jsonl +2 -2
  163. package/knowledge/solo-test/masters/master_druckenmiller/manifest.json +11 -4
  164. package/knowledge/solo-test/masters/master_druckenmiller/provisional-index.json +3 -3
  165. package/knowledge/solo-test/masters/master_druckenmiller/sources.jsonl +1 -1
  166. package/knowledge/solo-test/masters/master_druckenmiller/tools.json +55 -29
  167. package/knowledge/solo-test/masters/master_duan_yongping/decision_policy.json +138 -13
  168. package/knowledge/solo-test/masters/master_duan_yongping/doctrine.jsonl +2 -2
  169. package/knowledge/solo-test/masters/master_duan_yongping/manifest.json +17 -7
  170. package/knowledge/solo-test/masters/master_duan_yongping/provisional-index.json +3 -3
  171. package/knowledge/solo-test/masters/master_duan_yongping/sources.jsonl +1 -1
  172. package/knowledge/solo-test/masters/master_duan_yongping/tools.json +82 -30
  173. package/knowledge/solo-test/masters/master_fisher/decision_policy.json +102 -11
  174. package/knowledge/solo-test/masters/master_fisher/doctrine.jsonl +2 -2
  175. package/knowledge/solo-test/masters/master_fisher/manifest.json +13 -6
  176. package/knowledge/solo-test/masters/master_fisher/provisional-index.json +3 -3
  177. package/knowledge/solo-test/masters/master_fisher/sources.jsonl +1 -1
  178. package/knowledge/solo-test/masters/master_fisher/tools.json +58 -32
  179. package/knowledge/solo-test/masters/master_forensic_short/decision_policy.json +93 -14
  180. package/knowledge/solo-test/masters/master_forensic_short/doctrine.jsonl +2 -2
  181. package/knowledge/solo-test/masters/master_forensic_short/manifest.json +6 -4
  182. package/knowledge/solo-test/masters/master_forensic_short/provisional-index.json +3 -3
  183. package/knowledge/solo-test/masters/master_forensic_short/sources.jsonl +1 -1
  184. package/knowledge/solo-test/masters/master_forensic_short/tools.json +53 -27
  185. package/knowledge/solo-test/masters/master_graham/decision_policy.json +103 -12
  186. package/knowledge/solo-test/masters/master_graham/doctrine.jsonl +2 -2
  187. package/knowledge/solo-test/masters/master_graham/manifest.json +12 -4
  188. package/knowledge/solo-test/masters/master_graham/provisional-index.json +3 -3
  189. package/knowledge/solo-test/masters/master_graham/sources.jsonl +1 -1
  190. package/knowledge/solo-test/masters/master_graham/tools.json +67 -28
  191. package/knowledge/solo-test/masters/master_jhunjhunwala/decision_policy.json +77 -12
  192. package/knowledge/solo-test/masters/master_jhunjhunwala/doctrine.jsonl +2 -2
  193. package/knowledge/solo-test/masters/master_jhunjhunwala/manifest.json +11 -6
  194. package/knowledge/solo-test/masters/master_jhunjhunwala/provisional-index.json +3 -3
  195. package/knowledge/solo-test/masters/master_jhunjhunwala/sources.jsonl +1 -1
  196. package/knowledge/solo-test/masters/master_jhunjhunwala/tools.json +54 -28
  197. package/knowledge/solo-test/masters/master_klarman/decision_policy.json +105 -14
  198. package/knowledge/solo-test/masters/master_klarman/doctrine.jsonl +2 -2
  199. package/knowledge/solo-test/masters/master_klarman/manifest.json +8 -2
  200. package/knowledge/solo-test/masters/master_klarman/provisional-index.json +3 -3
  201. package/knowledge/solo-test/masters/master_klarman/sources.jsonl +1 -1
  202. package/knowledge/solo-test/masters/master_klarman/tools.json +55 -29
  203. package/knowledge/solo-test/masters/master_li_lu/decision_policy.json +101 -10
  204. package/knowledge/solo-test/masters/master_li_lu/doctrine.jsonl +2 -2
  205. package/knowledge/solo-test/masters/master_li_lu/manifest.json +13 -6
  206. package/knowledge/solo-test/masters/master_li_lu/provisional-index.json +3 -3
  207. package/knowledge/solo-test/masters/master_li_lu/sources.jsonl +1 -1
  208. package/knowledge/solo-test/masters/master_li_lu/tools.json +58 -32
  209. package/knowledge/solo-test/masters/master_lynch/decision_policy.json +127 -16
  210. package/knowledge/solo-test/masters/master_lynch/doctrine.jsonl +2 -2
  211. package/knowledge/solo-test/masters/master_lynch/manifest.json +14 -6
  212. package/knowledge/solo-test/masters/master_lynch/provisional-index.json +3 -3
  213. package/knowledge/solo-test/masters/master_lynch/sources.jsonl +1 -1
  214. package/knowledge/solo-test/masters/master_lynch/tools.json +67 -28
  215. package/knowledge/solo-test/masters/master_marks/decision_policy.json +71 -9
  216. package/knowledge/solo-test/masters/master_marks/doctrine.jsonl +2 -2
  217. package/knowledge/solo-test/masters/master_marks/manifest.json +11 -6
  218. package/knowledge/solo-test/masters/master_marks/provisional-index.json +3 -3
  219. package/knowledge/solo-test/masters/master_marks/sources.jsonl +1 -1
  220. package/knowledge/solo-test/masters/master_marks/tools.json +54 -28
  221. package/knowledge/solo-test/masters/master_munger/decision_policy.json +141 -16
  222. package/knowledge/solo-test/masters/master_munger/doctrine.jsonl +2 -2
  223. package/knowledge/solo-test/masters/master_munger/manifest.json +10 -6
  224. package/knowledge/solo-test/masters/master_munger/provisional-index.json +3 -3
  225. package/knowledge/solo-test/masters/master_munger/sources.jsonl +1 -1
  226. package/knowledge/solo-test/masters/master_munger/tools.json +52 -26
  227. package/knowledge/solo-test/masters/master_natenberg/decision_policy.json +59 -11
  228. package/knowledge/solo-test/masters/master_natenberg/doctrine.jsonl +2 -2
  229. package/knowledge/solo-test/masters/master_natenberg/manifest.json +9 -6
  230. package/knowledge/solo-test/masters/master_natenberg/provisional-index.json +3 -3
  231. package/knowledge/solo-test/masters/master_natenberg/sources.jsonl +1 -1
  232. package/knowledge/solo-test/masters/master_natenberg/tools.json +50 -24
  233. package/knowledge/solo-test/masters/master_pabrai/decision_policy.json +125 -14
  234. package/knowledge/solo-test/masters/master_pabrai/doctrine.jsonl +2 -2
  235. package/knowledge/solo-test/masters/master_pabrai/manifest.json +8 -2
  236. package/knowledge/solo-test/masters/master_pabrai/provisional-index.json +3 -3
  237. package/knowledge/solo-test/masters/master_pabrai/sources.jsonl +1 -1
  238. package/knowledge/solo-test/masters/master_pabrai/tools.json +55 -29
  239. package/knowledge/solo-test/masters/master_simons/decision_policy.json +59 -11
  240. package/knowledge/solo-test/masters/master_simons/doctrine.jsonl +2 -2
  241. package/knowledge/solo-test/masters/master_simons/manifest.json +8 -4
  242. package/knowledge/solo-test/masters/master_simons/provisional-index.json +3 -3
  243. package/knowledge/solo-test/masters/master_simons/sources.jsonl +1 -1
  244. package/knowledge/solo-test/masters/master_simons/tools.json +43 -30
  245. package/knowledge/solo-test/masters/master_sinclair/decision_policy.json +59 -11
  246. package/knowledge/solo-test/masters/master_sinclair/doctrine.jsonl +2 -2
  247. package/knowledge/solo-test/masters/master_sinclair/manifest.json +8 -6
  248. package/knowledge/solo-test/masters/master_sinclair/provisional-index.json +3 -3
  249. package/knowledge/solo-test/masters/master_sinclair/sources.jsonl +1 -1
  250. package/knowledge/solo-test/masters/master_sinclair/tools.json +54 -28
  251. package/knowledge/solo-test/masters/master_soros/decision_policy.json +98 -10
  252. package/knowledge/solo-test/masters/master_soros/doctrine.jsonl +2 -2
  253. package/knowledge/solo-test/masters/master_soros/manifest.json +10 -7
  254. package/knowledge/solo-test/masters/master_soros/provisional-index.json +3 -3
  255. package/knowledge/solo-test/masters/master_soros/sources.jsonl +1 -1
  256. package/knowledge/solo-test/masters/master_soros/tools.json +54 -28
  257. package/knowledge/solo-test/masters/master_taleb/decision_policy.json +124 -13
  258. package/knowledge/solo-test/masters/master_taleb/doctrine.jsonl +2 -2
  259. package/knowledge/solo-test/masters/master_taleb/manifest.json +9 -5
  260. package/knowledge/solo-test/masters/master_taleb/provisional-index.json +3 -3
  261. package/knowledge/solo-test/masters/master_taleb/sources.jsonl +1 -1
  262. package/knowledge/solo-test/masters/master_taleb/tools.json +50 -24
  263. package/knowledge/solo-test/masters/master_thorp/decision_policy.json +61 -13
  264. package/knowledge/solo-test/masters/master_thorp/doctrine.jsonl +2 -2
  265. package/knowledge/solo-test/masters/master_thorp/manifest.json +11 -6
  266. package/knowledge/solo-test/masters/master_thorp/provisional-index.json +3 -3
  267. package/knowledge/solo-test/masters/master_thorp/sources.jsonl +1 -1
  268. package/knowledge/solo-test/masters/master_thorp/tools.json +56 -30
  269. package/knowledge/solo-test/persona-v3-solo-test-formulas/compilation-manifest.json +290 -264
  270. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_ackman/components/tools.json +58 -32
  271. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_ackman/provisional-derivations/market_capitalisation.derived-proxy-evidence.json +76 -0
  272. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_ackman/provisional-derivations/owner_earnings_yield.derived-proxy-evidence.json +76 -0
  273. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_aschenbrenner/components/tools.json +58 -32
  274. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_aschenbrenner/provisional-derivations/market_capitalisation.derived-proxy-evidence.json +76 -0
  275. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_aschenbrenner/provisional-derivations/price_implied_cash_yield.derived-proxy-evidence.json +76 -0
  276. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_asness/components/tools.json +58 -32
  277. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_asness/provisional-derivations/nominal_earnings_yield_gap.derived-proxy-evidence.json +76 -0
  278. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_asness/provisional-derivations/real_earnings_yield_gap.derived-proxy-evidence.json +76 -0
  279. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_bogle/components/tools.json +120 -0
  280. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_bogle/provisional-derivations/expected_return_over_long_bond.derived-proxy-evidence.json +77 -0
  281. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_bogle/provisional-derivations/fundamental_expected_return.derived-proxy-evidence.json +76 -0
  282. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_buffett/components/tools.json +57 -31
  283. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_buffett/provisional-derivations/market_capitalisation.derived-proxy-evidence.json +76 -0
  284. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_buffett/provisional-derivations/owner_earnings_yield.derived-proxy-evidence.json +76 -0
  285. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_burry/components/tools.json +58 -32
  286. 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
  287. 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
  288. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_cathie_wood/components/tools.json +58 -32
  289. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_cathie_wood/provisional-derivations/current_cash_yield.derived-proxy-evidence.json +76 -0
  290. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_cathie_wood/provisional-derivations/market_capitalisation.derived-proxy-evidence.json +76 -0
  291. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_dalio/components/tools.json +58 -32
  292. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_dalio/provisional-derivations/policy_real_rate.derived-proxy-evidence.json +76 -0
  293. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_dalio/provisional-derivations/real_curve_slope.derived-proxy-evidence.json +76 -0
  294. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_damodaran/components/tools.json +56 -30
  295. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_damodaran/provisional-derivations/implied_equity_risk_premium.derived-proxy-evidence.json +76 -0
  296. 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
  297. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_druckenmiller/components/tools.json +57 -31
  298. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_druckenmiller/provisional-derivations/liquidity_curve_impulse.derived-proxy-evidence.json +76 -0
  299. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_druckenmiller/provisional-derivations/policy_real_rate.derived-proxy-evidence.json +76 -0
  300. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_duan_yongping/components/tools.json +84 -32
  301. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_duan_yongping/provisional-derivations/five_year_opportunity_cost.derived-proxy-evidence.json +102 -0
  302. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_duan_yongping/provisional-derivations/margin_retention.derived-proxy-evidence.json +76 -0
  303. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_fisher/components/tools.json +60 -34
  304. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_fisher/provisional-derivations/margin_retention.derived-proxy-evidence.json +76 -0
  305. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_fisher/provisional-derivations/reinvestment_spread.derived-proxy-evidence.json +76 -0
  306. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_forensic_short/components/tools.json +55 -29
  307. 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
  308. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_forensic_short/provisional-derivations/cash_cover_of_leverage.derived-proxy-evidence.json +76 -0
  309. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_graham/components/tools.json +69 -30
  310. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_graham/provisional-derivations/defensive_hurdle_base.derived-proxy-evidence.json +89 -0
  311. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_graham/provisional-derivations/half_normalised_earnings_yield.derived-proxy-evidence.json +76 -0
  312. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_jhunjhunwala/components/tools.json +56 -30
  313. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_jhunjhunwala/provisional-derivations/cash_quality_gap.derived-proxy-evidence.json +76 -0
  314. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_jhunjhunwala/provisional-derivations/real_structural_growth.derived-proxy-evidence.json +76 -0
  315. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_klarman/components/tools.json +57 -31
  316. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_klarman/provisional-derivations/downside_asset_coverage.derived-proxy-evidence.json +76 -0
  317. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_klarman/provisional-derivations/market_capitalisation.derived-proxy-evidence.json +76 -0
  318. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_li_lu/components/tools.json +60 -34
  319. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_li_lu/provisional-derivations/cash_backed_decade_return.derived-proxy-evidence.json +76 -0
  320. 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
  321. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_lynch/components/tools.json +69 -30
  322. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_lynch/provisional-derivations/growth_justified_capitalisation.derived-proxy-evidence.json +89 -0
  323. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_lynch/provisional-derivations/market_capitalisation.derived-proxy-evidence.json +76 -0
  324. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_marks/components/tools.json +56 -30
  325. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_marks/provisional-derivations/credit_cycle_position.derived-proxy-evidence.json +76 -0
  326. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_marks/provisional-derivations/equity_over_corporate_debt.derived-proxy-evidence.json +76 -0
  327. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_munger/components/tools.json +54 -28
  328. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_munger/provisional-derivations/debt_service_cushion.derived-proxy-evidence.json +76 -0
  329. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_munger/provisional-derivations/reported_earnings_cash_gap.derived-proxy-evidence.json +76 -0
  330. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_natenberg/components/tools.json +52 -26
  331. 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
  332. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_natenberg/provisional-derivations/round_trip_cost.derived-proxy-evidence.json +76 -0
  333. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_pabrai/components/tools.json +57 -31
  334. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_pabrai/provisional-derivations/downside_floor_coverage.derived-proxy-evidence.json +76 -0
  335. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_pabrai/provisional-derivations/market_capitalisation.derived-proxy-evidence.json +76 -0
  336. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_simons/components/tools.json +45 -32
  337. 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
  338. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_simons/provisional-derivations/session_move_over_implied.derived-proxy-evidence.json +77 -0
  339. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_sinclair/components/tools.json +56 -30
  340. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_sinclair/provisional-derivations/round_trip_cost.derived-proxy-evidence.json +76 -0
  341. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_sinclair/provisional-derivations/volatility_per_unit_of_width.derived-proxy-evidence.json +76 -0
  342. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_soros/components/tools.json +56 -30
  343. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_soros/provisional-derivations/credit_cycle_position.derived-proxy-evidence.json +76 -0
  344. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_soros/provisional-derivations/financing_burden.derived-proxy-evidence.json +76 -0
  345. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_taleb/components/tools.json +52 -26
  346. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_taleb/provisional-derivations/debt_service_cushion.derived-proxy-evidence.json +76 -0
  347. 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
  348. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_thorp/components/tools.json +58 -32
  349. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_thorp/provisional-derivations/edge_per_unit_of_volatility.derived-proxy-evidence.json +77 -0
  350. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_thorp/provisional-derivations/net_edge.derived-proxy-evidence.json +76 -0
  351. package/mcp/lib/breadth.mjs +126 -0
  352. package/mcp/lib/constants.mjs +15 -0
  353. package/mcp/lib/damodaran.mjs +119 -0
  354. package/mcp/lib/fred.mjs +246 -0
  355. package/mcp/lib/fund-holdings-parsers.mjs +297 -0
  356. package/mcp/lib/fund-observations.mjs +152 -0
  357. package/mcp/lib/fundamentals.mjs +806 -0
  358. package/mcp/lib/funds.mjs +785 -0
  359. package/mcp/lib/gates.mjs +71 -4
  360. package/mcp/lib/grounding.mjs +209 -36
  361. package/mcp/lib/index-aggregate.mjs +733 -0
  362. package/mcp/lib/insider-ownership.mjs +149 -0
  363. package/mcp/lib/instrument-facts.mjs +855 -0
  364. package/mcp/lib/instruments.mjs +216 -0
  365. package/mcp/lib/markdown.mjs +216 -43
  366. package/mcp/lib/master-catalog.mjs +4 -0
  367. package/mcp/lib/orchestrator.mjs +173 -29
  368. package/mcp/lib/packets.mjs +59 -6
  369. package/mcp/lib/personas/engine.mjs +23 -10
  370. package/mcp/lib/personas-v3/deterministic-executor.mjs +13 -2
  371. package/mcp/lib/personas-v3/ga-external-evidence.mjs +3 -2
  372. package/mcp/lib/personas-v3/ga-gate.mjs +2 -1
  373. package/mcp/lib/personas-v3/ga-package-evidence.mjs +5 -4
  374. package/mcp/lib/personas-v3/grounding-adapter.mjs +309 -2
  375. package/mcp/lib/personas-v3/production-root.mjs +5 -4
  376. package/mcp/lib/personas-v3/release-formula-evidence.mjs +14 -7
  377. package/mcp/lib/personas-v3/release-source-evidence.mjs +2 -1
  378. package/mcp/lib/personas-v3/releases.mjs +5 -4
  379. package/mcp/lib/personas-v3/runtime-release-integrity.mjs +6 -5
  380. package/mcp/lib/personas-v3/semantic-source-adjudication.mjs +2 -1
  381. package/mcp/lib/personas-v3/semantic-source-extraction.mjs +2 -1
  382. package/mcp/lib/personas-v3/semantic-source-skeptic-review.mjs +2 -1
  383. package/mcp/lib/personas-v3/source-review-operations.mjs +3 -2
  384. package/mcp/lib/personas-v3/staging.mjs +22 -3
  385. package/mcp/lib/prompts.mjs +87 -3
  386. package/mcp/lib/quotes.mjs +5 -0
  387. package/mcp/lib/rpc.mjs +27 -10
  388. package/mcp/lib/run-store.mjs +5 -3
  389. package/mcp/lib/sec.mjs +32 -0
  390. package/mcp/lib/tables.mjs +11 -0
  391. package/mcp/lib/voice.mjs +122 -0
  392. package/mcp/lib/xbrl-aggregates.mjs +153 -0
  393. package/mcp/lib/xbrl-series.mjs +341 -0
  394. package/mcp/lib/xlsx.mjs +155 -0
  395. package/package.json +5 -5
  396. package/personas/masters/masters-value/bogle.md +145 -0
  397. package/schemas/council-evaluation-protocol-v1.schema.json +2 -2
  398. package/schemas/persona-v3-ai-assisted-solo-profile-v1.schema.json +2 -2
  399. package/schemas/persona-v3-ai-machine-simulation-v1.schema.json +1 -1
  400. package/schemas/persona-v3-build-spec-v1.schema.json +3 -3
  401. package/schemas/persona-v3-release-formula-review-evidence-v1.schema.json +3 -3
  402. package/schemas/persona-v3-release-manifest-v1.schema.json +6 -6
  403. package/schemas/persona-v3-release-source-review-evidence-v1.schema.json +3 -3
  404. package/schemas/persona-v3-tool-graph-v1.schema.json +1 -1
  405. package/schemas/source-review-batch-v1.schema.json +9 -9
  406. package/scripts/assemble-persona-v3-release.mjs +3 -2
  407. package/scripts/build-persona-v3-solo-test-packs.mjs +6 -8
  408. package/scripts/check-persona-v3-ga.mjs +1 -1
  409. package/scripts/check-persona-v3-production-candidates.mjs +1 -1
  410. package/scripts/compile-persona-v3-formulas.mjs +19 -18
  411. package/scripts/doctor.mjs +11 -9
  412. package/scripts/export-persona-source-review-batch.mjs +1 -1
  413. package/scripts/generate-persona-v3-drafts.mjs +2 -2
  414. package/scripts/lib/build-profile.mjs +24 -0
  415. package/scripts/lib/council-evaluation-protocol.mjs +7 -6
  416. package/scripts/lib/host-capabilities.mjs +2 -1
  417. package/scripts/lib/packaged-host-parity.mjs +9 -3
  418. package/scripts/lib/persona-v3-ai-assisted-solo-status.mjs +6 -4
  419. package/scripts/lib/persona-v3-ai-formula-review.mjs +6 -5
  420. package/scripts/lib/persona-v3-ai-machine-simulations.mjs +32 -4
  421. package/scripts/lib/persona-v3-build-specs.mjs +3 -2
  422. package/scripts/lib/persona-v3-draft-packs.mjs +2 -2
  423. package/scripts/lib/persona-v3-formula-pipeline.mjs +11 -10
  424. package/scripts/lib/persona-v3-production-candidates.mjs +10 -9
  425. package/scripts/lib/persona-v3-solo-formula-pipeline.mjs +188 -16
  426. package/scripts/lib/persona-v3-solo-test-packs.mjs +112 -11
  427. package/scripts/package-smoke.mjs +2 -1
  428. package/scripts/report-persona-corpus-gaps.mjs +4 -1
  429. package/scripts/review-persona-v3-solo-formulas.mjs +12 -8
  430. package/scripts/scaffold-persona-v3-staging.mjs +1 -1
  431. package/skills/agent-skills-governance/SKILL.md +8 -2
  432. package/skills/alphacouncil-agent/SKILL.md +12 -4
  433. package/skills/public-equity-investing/SKILL.md +17 -0
  434. package/knowledge/ai-assisted-solo/reviews/persona-v3-ai-formula-reviews/master_forensic_short/reviews/borrow_catalyst.ai-review.json +0 -277
  435. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_ackman/provisional-derivations/change_value_bridge.derived-proxy-evidence.json +0 -64
  436. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_ackman/provisional-derivations/power_map.derived-proxy-evidence.json +0 -64
  437. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_aschenbrenner/provisional-derivations/compute_power_bridge.derived-proxy-evidence.json +0 -64
  438. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_aschenbrenner/provisional-derivations/timeline_reverse_valuation.derived-proxy-evidence.json +0 -64
  439. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_asness/provisional-derivations/crowding_cost_stress.derived-proxy-evidence.json +0 -64
  440. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_asness/provisional-derivations/factor_decomposer.derived-proxy-evidence.json +0 -64
  441. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_buffett/provisional-derivations/incremental_returns.derived-proxy-evidence.json +0 -64
  442. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_buffett/provisional-derivations/owner_earnings_rebuilder.derived-proxy-evidence.json +0 -64
  443. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_burry/provisional-derivations/capital_structure_reader.derived-proxy-evidence.json +0 -64
  444. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_burry/provisional-derivations/mispricing_carry.derived-proxy-evidence.json +0 -64
  445. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_cathie_wood/provisional-derivations/capture_valuation_bridge.derived-proxy-evidence.json +0 -64
  446. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_cathie_wood/provisional-derivations/cost_adoption_curve.derived-proxy-evidence.json +0 -64
  447. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_dalio/provisional-derivations/debt_driver_stress.derived-proxy-evidence.json +0 -64
  448. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_dalio/provisional-derivations/regime_classifier.derived-proxy-evidence.json +0 -64
  449. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_damodaran/provisional-derivations/story_dcf.derived-proxy-evidence.json +0 -64
  450. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_druckenmiller/provisional-derivations/inflection_payoff.derived-proxy-evidence.json +0 -64
  451. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_druckenmiller/provisional-derivations/liquidity_revision_map.derived-proxy-evidence.json +0 -64
  452. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_duan_yongping/provisional-derivations/opportunity_cost.derived-proxy-evidence.json +0 -64
  453. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_duan_yongping/provisional-derivations/user_value_evidence.derived-proxy-evidence.json +0 -64
  454. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_fisher/provisional-derivations/research_productivity.derived-proxy-evidence.json +0 -64
  455. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_fisher/provisional-derivations/scuttlebutt_graph.derived-proxy-evidence.json +0 -64
  456. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_forensic_short/provisional-derivations/borrow_catalyst.derived-proxy-evidence.json +0 -64
  457. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_graham/provisional-derivations/asset_floor.derived-proxy-evidence.json +0 -64
  458. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_graham/provisional-derivations/normalized_earnings.derived-proxy-evidence.json +0 -64
  459. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_jhunjhunwala/provisional-derivations/penetration_liquidity.derived-proxy-evidence.json +0 -64
  460. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_jhunjhunwala/provisional-derivations/promoter_governance.derived-proxy-evidence.json +0 -64
  461. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_klarman/provisional-derivations/cash_catalyst_compare.derived-proxy-evidence.json +0 -64
  462. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_klarman/provisional-derivations/recovery_waterfall.derived-proxy-evidence.json +0 -64
  463. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_li_lu/provisional-derivations/promise_integrity_ledger.derived-proxy-evidence.json +0 -64
  464. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_li_lu/provisional-derivations/ten_year_return_bridge.derived-proxy-evidence.json +0 -64
  465. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_lynch/provisional-derivations/category_classifier.derived-proxy-evidence.json +0 -64
  466. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_lynch/provisional-derivations/story_numbers_check.derived-proxy-evidence.json +0 -64
  467. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_marks/provisional-derivations/cycle_temperature.derived-proxy-evidence.json +0 -64
  468. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_marks/provisional-derivations/implied_expectations.derived-proxy-evidence.json +0 -64
  469. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_munger/provisional-derivations/failure_path_graph.derived-proxy-evidence.json +0 -64
  470. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_munger/provisional-derivations/incentive_map.derived-proxy-evidence.json +0 -64
  471. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_pabrai/provisional-derivations/discrete_payoff.derived-proxy-evidence.json +0 -64
  472. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_pabrai/provisional-derivations/downside_floor.derived-proxy-evidence.json +0 -64
  473. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_simons/provisional-derivations/leakage_audit.derived-proxy-evidence.json +0 -64
  474. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_simons/provisional-derivations/oos_cost_test.derived-proxy-evidence.json +0 -64
  475. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_sinclair/provisional-derivations/net_edge_sizer.derived-proxy-evidence.json +0 -64
  476. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_sinclair/provisional-derivations/realized_vol_forecast.derived-proxy-evidence.json +0 -64
  477. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_soros/provisional-derivations/reflexivity_graph.derived-proxy-evidence.json +0 -64
  478. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_soros/provisional-derivations/reversal_monitor.derived-proxy-evidence.json +0 -64
  479. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_taleb/provisional-derivations/payoff_ruin.derived-proxy-evidence.json +0 -64
  480. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_thorp/provisional-derivations/edge_recalculator.derived-proxy-evidence.json +0 -64
  481. package/knowledge/solo-test/persona-v3-solo-test-formulas/master_thorp/provisional-derivations/fractional_kelly.derived-proxy-evidence.json +0 -64
@@ -0,0 +1,487 @@
1
+ # AlphaCouncil 升级方案 v0.9.5 → v1.0(第二版)
2
+
3
+ 制定日期:2026-07-28
4
+ 基线:`agent/etf-index-master-voices` @ `6ec9ca0`(PR #5,draft,未合并)
5
+ 本版推翻第一版的 P2-2「把弃权渲染成太难那一堆」——那个方案回避了真问题。
6
+
7
+ ---
8
+
9
+ ## 0. 真实诊断:三层全空,不是一层
10
+
11
+ 用户的质疑是对的:如果巴菲特看 QQQ 的回复是「这不归我管」,产品就没有意义。
12
+ 把三层拆开看,问题比"缺数据"严重:
13
+
14
+ ### 第一层:事实供给(缺 92%)
15
+
16
+ `mcp/lib/personas-v3/grounding-adapter.mjs` 是全仓库唯一产 typed facts 的地方,只能产 13 个 `fact_id`:
17
+ quote 2 个、options 4 个、SEC screen 7 个。26 席的 `required_fact_types` 大部分不在其中。
18
+
19
+ ```
20
+ 可在当前适配器下执行的席位: 1 / 26 (只有 master_natenberg)
21
+ ```
22
+
23
+ **换 AAPL 跑结果一样。**这不是 ETF 特例,是全局缺口。
24
+
25
+ ### 第二层:方法模型(是空壳,这是更根本的问题)
26
+
27
+ 把 26 个 `decision_policy.json` 全量对比,**26/26 完全一致**:
28
+
29
+ ```
30
+ eligibility=0 条 | hard_vetoes=0 条 | rules=2 条 | score_bands=3 档 | native_output_fields=2
31
+ ```
32
+
33
+ 巴菲特那一席的"方法"逐字展开是:
34
+
35
+ ```jsonc
36
+ // tools.json:两个工具,operation 都是 identity
37
+ { "id": "master_buffett.owner_earnings_rebuilder",
38
+ "inputs": [{"fact_id": "financial.owner_earnings"}],
39
+ "operation": "identity",
40
+ "output_id": "financial.owner_earnings" } // 自己复制给自己
41
+ { "id": "master_buffett.incremental_returns",
42
+ "inputs": [{"fact_id": "financial.owner_earnings"}],
43
+ "operation": "identity",
44
+ "output_id": "financial.incremental_return_on_capital" } // 所有者盈余"就是"增量ROIC?
45
+
46
+ // decision_policy.json:两条规则
47
+ owner_earnings > 0 → 1 分
48
+ incremental_roic > 0 → 1 分 (其实是同一个数)
49
+ 2/2 → cautious
50
+ ```
51
+
52
+ 生成器里 `derivation_policy` 字段写得很老实:`"first_declared_input_to_first_declared_output_identity_v1"`。
53
+
54
+ **所以即使把数据全补上,巴菲特也只会输出"所有者盈余大于零 → cautious"。** 这不是巴菲特,
55
+ 这是脚手架。用户问"客户用它还有啥意义"——在第二层修好之前,诚实的答案是:没有意义。
56
+
57
+ 好消息:**方法设计已经写完了**,在 `data/persona-v3-build-specs.v1.mjs` 里。巴菲特那条有
58
+ 6 个 `required_fact_types`、4 个 native states、3 条 `veto_families`(能力圈外 / 杠杆依赖 /
59
+ 所有者盈余不可重建)、明确的 `fail_closed_reasons`。生成器
60
+ (`scripts/lib/persona-v3-solo-test-packs.mjs:299-348`)把这些**全部丢掉**,硬编码
61
+ `eligibility: { all: [] }`、`hard_vetoes: []`。缺的是把 spec 变成真策略,不是重新设计方法。
62
+
63
+ ### 第三层:表达(机器诊断文案)
64
+
65
+ `巴菲特视角临时操作视角无法评估 QQQ:no_required_fact_types_present`
66
+
67
+ ---
68
+
69
+ ## 1. 关键洞察:穿透聚合是巴菲特自己的发明,而且必须做在事实层
70
+
71
+ ### 1.1 "Look-through earnings" 是巴菲特 1990 年致股东信里的原创概念
72
+
73
+ 他持有一堆公司的部分股权,会计利润只体现分红,于是他自己定义了「穿透盈余」:
74
+ 按持股比例把被投公司的留存收益加回来看。**用穿透法评估 QQQ 不是把方法硬套在 ETF 上,
75
+ 就是他本人处理"我拥有一百家生意的一部分"的标准做法。**这解决了合规和方法论正当性两个问题。
76
+
77
+ ### 1.2 聚合只能做在事实层(DSL 层做不了,这反而是好消息)
78
+
79
+ 决策 DSL 的算子白名单是
80
+ `eq/neq/gt/gte/lt/lte/date_*` + `exists` + `all/any/not`,操作数只能是
81
+ `{fact_id}` / `{output_id}` / `{literal}`(`literal` 必须是标量,数组直接拒),
82
+ 条件层不支持算术。工具层的 `sum/mean` 吃的是固定 arity 的操作数列表,不是集合。
83
+
84
+ **结论:DSL 永远不可能对 N 个持仓做加权聚合。**
85
+ 所以聚合必须在 `grounding-adapter` / 新的 `funds.mjs` 里做,产出**一个**
86
+ `financial.owner_earnings` 事实(带 `derivation: "rederived"` + `calculation_hash` + `coverage_weight`)。
87
+
88
+ **而这正是好消息:** 一旦事实层把 QQQ 的穿透 `financial.owner_earnings` 供上,
89
+ **26 个 pack 一个字节都不用改就能在 ETF 上执行。** 不需要 instrument 条件化的 pack 变体,
90
+ 不需要动 schema,不需要重签 hash,不需要动选席回执的 pack_hash 审计链。
91
+
92
+ (我评估过四种 instrument 条件化方案:pack 内多份 policy 8-10 天 / `required_fact_types` 改 map
93
+ 10-14 天 / 平行包集 15-20 天且撕裂审计链 / `research_model` 做成 typed fact 走 eligibility 3-4 天。
94
+ 但做完事实层之后,前三种都不需要了,第四种只在"某方法必须显式拒绝某类标的"时才用。)
95
+
96
+ ---
97
+
98
+ ## 2. 终点长什么样(用今天抓到的真实数字)
99
+
100
+ 已验证可取的真实数据(2026-07-27/28 实测):
101
+
102
+ | 数据 | 值 | 来源(已验证可用) |
103
+ |---|---|---|
104
+ | QQQ 持仓 | 108 只,AAPL 权重 8.264548% | `dng-api.invesco.com` daily |
105
+ | NDX 滚动 P/E | **33.05** → 盈利收益率 **3.03%** | WSJ `mdc_peAndYields` |
106
+ | NDX 前瞻 P/E | 25.12 → 3.98% | 同上 |
107
+ | NDX 股息率 | 0.58% | 同上 |
108
+ | 10 年期国债 | **4.69%** | FRED `fredgraph.csv?id=DGS10` |
109
+ | QQQ 费率 | 0.20% | Invesco |
110
+
111
+ **巴菲特席位应该输出的东西(Tier A 原生判断):**
112
+
113
+ > **巴菲特方法** — 立场:`opposed` | 置信度:medium | 意向:`would_pass`
114
+ >
115
+ > 我看到的是:这一百零八家公司的穿透盈余收益率是 **3.03%**(滚动口径,覆盖权重 100%),
116
+ > 十年期国债给我 **4.69%**。我还要为持有它每年付 0.20%。
117
+ >
118
+ > 用我的标准来衡量:我在 1999 年那篇文章里说过,股票的价值最终要和利率比。
119
+ > 现在这个篮子的盈利收益率比无风险利率还低 **1.66 个百分点**,而且我承担的是
120
+ > 一个前十大占五成、集中在少数几家公司的波动组合。前瞻口径好一些(3.98%),
121
+ > 但那要靠分析师的预测兑现,那不是我的安全边际。
122
+ >
123
+ > 所以我会不会买:**不会,现在不会。** 这不是说纳斯达克的生意不好——里面确实有几家
124
+ > 我很喜欢的公司。是这个价格不给我任何余地。我推荐给我太太的是更宽的标普 500 篮子,
125
+ > 而且是在任何价格上定投;作为一次性配置决策,我在这个价格上会等。
126
+ >
127
+ > 什么会让我改主意:盈利收益率回到国债之上 200 个基点(对应 NDX 滚动 P/E 约 15),
128
+ > 或者利率降到 3% 以下而盈利没有同步下滑。
129
+ >
130
+ > 我和谁分歧:德鲁肯米勒方法看的是流动性脉冲而不是估值,他可能在我说贵的时候继续持有——
131
+ > 这是方法差不是信息差,我们看的是同一份数据。
132
+ >
133
+ > *(本段为方法模型的第一人称推演,非本人言论或授权观点。数据源 ID:wsj:ndx_pe:2026-07-24、
134
+ > fred:DGS10:2026-07-24、invesco:qqq_holdings:2026-07-27)*
135
+
136
+ **格雷厄姆席位**(同样是 Tier A):盈利收益率 3.03% vs AAA 公司债收益率,
137
+ 他的防御型投资者判据要求前者 ≥ 后者的 2 倍 → 明显不通过,`opposed`,理由是一个数。
138
+
139
+ **芒格席位**(Tier B 穿透):不评组合,评前十大占 51% 权重的那几家的激励结构与失败路径,
140
+ 按权重汇总"我对其中 X% 的权重有信心"。
141
+
142
+ **这才是产品的意义。**每个数字有 source_id,每个判断可证伪,每一席的分歧是真分歧。
143
+
144
+ ---
145
+
146
+ ## 3. 三根支柱
147
+
148
+ ### 支柱 A — 事实供给层(不碰 pack,零 hash 风险,破 0 个测试)
149
+
150
+ 这是唯一"改了立刻见效且不会引发重签风暴"的一层。先做完这层再动任何 pack。
151
+
152
+ #### A1. macro → typed facts(最高 ROI,零新数据源)
153
+
154
+ `macro.mjs` 已经在抓五组市场定价序列,但快照没写 `public_at`,
155
+ 适配器整块跳过(`grounding-adapter.mjs:370` 记 `not_converted`)。
156
+
157
+ - `macro.mjs` 每 block 输出 `public_at`(取组内最早 `quote_time`)+ `source_ids`
158
+ - 新增 `macroFacts()`:`macro.liquidity_impulse`、`macro.growth_regime`、
159
+ `macro.real_rate`、`macro.credit_spread`、`macro.term_structure_slope`
160
+ - 补 FRED keyless 通道(**已验证**:`fredgraph.csv?id=` 免密钥,
161
+ `DGS10 DGS2 DGS3MO T10Y2Y T10Y3M DFII10 T5YIE DFF SOFR BAMLH0A0HYM2 VIXCLS` 全部 200;
162
+ `api.stlouisfed.org` 才需要 key。多 series 会返回 ZIP,逐个拉)
163
+
164
+ **解锁**:`master_druckenmiller`、`master_dalio`。约 150 行 + 单测。
165
+
166
+ #### A2. `mcp/lib/funds.mjs` — ETF 持仓与穿透聚合
167
+
168
+ **已验证可用的发行商端点(全部免密钥,四条 URL 都是新路径,网上流传的旧地址已失效):**
169
+
170
+ ```bash
171
+ # iShares(IVV/IWM/EFA/AGG/TLT/HYG…)日度 T-1
172
+ https://www.ishares.com/us/products/239726/x/latest-holdings.csv
173
+ # State Street(SPY/XLK…)日度,必须 -L 跟 301
174
+ https://www.ssga.com/us/en/intermediary/library-content/products/fund-data/etfs/us/holdings-daily-us-en-spy.xlsx
175
+ # Invesco(QQQ/QQQM…)日度
176
+ https://dng-api.invesco.com/cache/v1/accounts/en_US/shareclasses/46090E103/holdings/fund?idType=cusip&interval=daily&productType=ETF
177
+ # Vanguard(VOO/VTI…)仅月末,每页 500 条
178
+ https://investor.vanguard.com/investment-products/etfs/profile/api/VOO/portfolio-holding/stock
179
+ ```
180
+
181
+ **必须写进代码的反爬陷阱(每条都是实测的,漏一条就静默出错):**
182
+
183
+ 1. **iShares 旧 `.ajax` 路径是静默陷阱** —— 仍返回 `HTTP 200` + `Content-Type: text/csv`,
184
+ 但 body 是 2.2MB 的 HTML 产品页,换任何 UA 都一样。**必须校验首行内容,不能只看状态码。**
185
+ 2. **Invesco 的 UA 逻辑是反的** —— `www.invesco.com` 发 Chrome UA 或空 UA → `HTTP 406` 零字节;
186
+ 发默认 `curl/8.x` 或 `node-fetch` → 200。**千万别伪装浏览器。**
187
+ 3. **Invesco 参数陷阱** —— 漏 `interval=daily` 拿到 3 天前的旧数据;误加 `loadType=initial`
188
+ 静默截断成前 10 条;`idType=ticker` 只对 QQQ 有效,统一用 CUSIP。
189
+ 4. Vanguard 响应里的 `next` 指向已废弃的 `api.vanguard.com`,翻页要自己拼
190
+ `?start=501&count=500` 打在 `investor.vanguard.com`。
191
+ 5. SEC 任何请求必须带 `User-Agent: app contact@email`,否则 403。
192
+
193
+ **费率 / AUM / NAV / 份额:**
194
+ - iShares product-screener 一次拿 532 只基金的 `fees` / `navAmount` / `totalNetAssets` / `cusip`
195
+ - SSGA fundfinder 一次拿 180 只 SPDR 的 `ter` / `nav` / `aum`(份额 = aum/nav)
196
+ - **Vanguard 和 Invesco 没有 AUM/份额端点**(Invesco 的 `/nav`、`/profile` 全 501)→
197
+ 用持仓市值求和,或 SEC N-PORT 的 `netAssets` 兜底
198
+
199
+ **资金流(无免费直接源,必须推导):** `flow = Δshares_outstanding × NAV`。
200
+ 实测验证过:IVV 份额 2026-07-24 的 1,167,300,000 → 07-27 的 1,167,700,000,
201
+ Δ+400,000 股 × NAV 741.66 ≈ 净流入 $296.7M。
202
+ **局限**:只有 iShares 和 SSGA 有日度份额,Vanguard/Invesco 没有 → 那两家的 flow 记为 gap,不许估。
203
+
204
+ **SEC N-PORT 兜底(重要更正:是季度不是月度):**
205
+ 表单名叫 "Monthly Portfolio Investments Report",但公开披露实际**季度**,滞后 50-59 天。
206
+ 另一个坑:`company_tickers.json` 里**查不到 IVV 和 VOO**(它们是信托下的 series),
207
+ 必须用 `company_tickers_mf.json`(IVV→CIK 1100663/S000004310,VOO→CIK 36405/S000002839)。
208
+
209
+ **新增 typed facts:**
210
+ ```
211
+ fund.holdings_as_of fund.top_ten_weight fund.sector_concentration_hhi
212
+ fund.expense_ratio fund.aum fund.shares_outstanding
213
+ fund.flow_20d fund.premium_discount fund.tracking_difference(nullable)
214
+ fund.lookthrough_coverage_weight
215
+ ```
216
+
217
+ **穿透聚合(本方案的核心):** 对前 N 大持仓(覆盖权重 ≥60%)批量取基本面,
218
+ 按权重聚合成**单个**经营公司事实:`financial.owner_earnings`、
219
+ `financial.return_on_equity_10y`、`valuation.revenue_growth` 等。
220
+ 每个聚合事实必带 `lineage.calculation_hash` + `fund.lookthrough_coverage_weight`。
221
+
222
+ **硬规则写进代码,不是写进 prompt:** 覆盖权重 < 50% 时**不生成**任何 look-through 派生事实,
223
+ 只记 diagnostics。现在这条只是 prompt 里一句话,模型可以无视。
224
+
225
+ **绝不做的事:** 把成分股财报相加成"ETF 营收/EPS"。加权只允许出现在比率型指标,
226
+ 且 `ratio_denominator` 必须写明加权口径。
227
+
228
+ #### A3. `mcp/lib/index-aggregate.mjs` — 指数
229
+
230
+ **成分来源(法务上唯一稳妥的免费路径):用跟踪 ETF 的持仓做代理**,
231
+ ^GSPC→IVV/SPY,^NDX→QQQ,^DJI→DIA,并在 fact 的 `derivation` 和报告里**显式声明是 ETF 代理**。
232
+ 理由:S&P 500 / DJIA 的成分与权重是 S&P Dow Jones Indices 的授权资产,
233
+ datahub / stockanalysis / Finviz 都是无授权转载;Wikipedia 是唯一有明确开放许可(CC BY-SA)的,
234
+ 但产品化仍有风险。发布"基金持仓"而非"指数成分名单"是业界标准规避做法。
235
+ (`api.nasdaq.com/api/quote/list-type/nasdaq100` 实测可用且与 QQQ 持仓完全对上,
236
+ 但**必须带非默认 UA**,默认 curl UA 会 HTTP/2 INTERNAL_ERROR。)
237
+
238
+ **估值 / 广度 / 期权(已验证端点):**
239
+ ```bash
240
+ # 指数滚动+前瞻 PE(一次拿 SP500/NDX/Russell2000)
241
+ https://www.wsj.com/market-data/stocks/peyields?...&type=mdc_peAndYields
242
+ # 涨跌家数/新高新低/TRIN
243
+ https://www.wsj.com/market-data/stocks/marketsdiary?...&type=mdc_marketsdiary
244
+ # CBOE put/call(日期必须是交易日,非交易日 403,需回退查找)
245
+ https://cdn.cboe.com/data/us/options/market_statistics/daily/YYYY-MM-DD_daily_options
246
+ https://cdn.cboe.com/api/global/us_indices/daily_prices/VIX_History.csv
247
+ ```
248
+ WSJ 的 `mdc_*` 是未公开内部 API,**必须加 schema 校验和降级路径,不能当契约用**。
249
+
250
+ **Damodaran 数据集(可机读):**
251
+ `pages.stern.nyu.edu/~adamodar/pc/implprem/ERPbymonth.xlsx`(月度 ERP,注意在 `/pc/implprem/`
252
+ 而**不在** `/pc/datasets/`),`/pc/datasets/histimpl.xls`(年度)。
253
+ `.xls` 是老 BIFF 格式要用 `xlsx` 包;xlsx 空单元格会被省略,**必须按列字母对齐,不能按位置取**。
254
+
255
+ **唯一的硬缺口:广度(% above 200dma)。** Finviz 的 screener 组合参数在 robots.txt 里被
256
+ `Disallow: /screener?*` 明确禁止(白名单不含所需参数),自建 dashboard 可以,产品化不建议。
257
+ 自己算需要 503 只 × 260 天日线 ≈ 13 万点,而没有验证到免密钥的批量日线源。
258
+ **这块要预算一个行情商,或者用 WSJ marketsdiary 的涨跌家数做低保真代理并标注口径。**
259
+
260
+ **⚠️ 口径警告(必须写进代码注释):** 同一天的 S&P 500 滚动 P/E,
261
+ WSJ 报 25.17、multpl 报 28.53、iShares IVV 报 29.80 —— 三种不同盈利口径
262
+ (WSJ 基准 / GAAP as-reported TTM / 组合调和平均)。**混用会让面板看起来像坏了。**
263
+ 一个 fact 只能有一个口径,`ratio_denominator` 必须写死来源。
264
+
265
+ **新增 typed facts:**
266
+ ```
267
+ index.constituent_count index.aggregate_pe_ttm index.aggregate_pe_forward
268
+ index.aggregate_earnings_yield index.dividend_yield index.breadth_advance_decline
269
+ cycle.valuation_percentile expectations.consensus_dispersion
270
+ factor.value_exposure positioning.crowding options.put_call_ratio
271
+ macro.aaa_corporate_yield macro.long_bond_yield valuation.implied_erp
272
+ ```
273
+
274
+ #### A4. SEC 派生(经营公司侧)
275
+
276
+ 从已有 CompanyFacts 机械派生,全部带 `calculation_hash` + 显式假设:
277
+
278
+ | fact_id | 算法 | 解锁 |
279
+ |---|---|---|
280
+ | `financial.owner_earnings` | 净利 + D&A − 维持性资本开支(维持性用 3 年 capex 中位数 × 0.7 代理) | **buffett** |
281
+ | `financial.net_current_asset_value` | 流动资产 − 全部负债 | graham |
282
+ | `valuation.downside_asset_value` | 有形账面 + 现金 − 债务 | klarman |
283
+ | `valuation.downside_floor` | min(NCAV, 有形账面, 5 年最低 EV/EBIT 对应价) | pabrai |
284
+ | `valuation.revenue_growth` | 5 年 CAGR + 最近 4 季 YoY | damodaran |
285
+ | `short.borrow_cost` | 无免费源 → **不做,记为已知缺口** | forensic_short 继续弃权 |
286
+
287
+ ---
288
+
289
+ ### 支柱 B — 真方法模型("有没有意义"的分水岭)
290
+
291
+ #### B0. 操作纪律(不遵守每次都会红)
292
+
293
+ pack 是 100% 机器生成的,**手改无效**——生成器会在内存里重建全部文件逐字节比对。
294
+ 唯一合法路径:改 `data/persona-v3-build-specs.v1.mjs` + `knowledge/solo-test/persona-v3-solo-test-formulas/`
295
+ + 生成器,然后:
296
+
297
+ ```bash
298
+ npm run persona:solo-test:build # 26 个 pack 全量重生成
299
+ npm run persona:ai-simulations:write # 8 个仿真 run 重生成
300
+ npm run check # selfcheck 三道闸 + 全测试
301
+ ```
302
+
303
+ 另外:动 `runtime.mjs` / `deterministic-executor.mjs` / `typed-facts.mjs` / `registry.mjs`
304
+ 这四个文件中的任何一个,都必须重跑机器仿真(它们的字节 hash 被绑进仿真树)。
305
+
306
+ #### B1. 生成器改造:让 spec 里的设计真正落地
307
+
308
+ `scripts/lib/persona-v3-solo-test-packs.mjs:299-348` 现在硬编码
309
+ `eligibility: { all: [] }`、`hard_vetoes: []`,把 build-spec 里已经写好的
310
+ `veto_families` 和 `native_decision_contract.eligibility_facts` 全丢了。改成从 spec 生成。
311
+
312
+ **一个必须绕开的陷阱:** 当前 `scoring.min_coverage = 1`,
313
+ **任何一条规则 uncomputable → 整席直接 `out_of_scope`**。
314
+ 所以方法判据要走 `eligibility` / `hard_vetoes`(它们有独立的 uncomputable 出口),
315
+ 不要全塞进 scoring rules,否则缺一个字段就整席哑火——这正是现在 25 席弃权的机制。
316
+
317
+ #### B2. 写真公式,替换 identity 桩
318
+
319
+ DSL 条件层不支持算术,所以每个判据要拆成"工具算数 + 条件比数"两步。
320
+ 可用算子:`add subtract multiply divide sum mean min max abs negate clamp`(标量,固定 arity)。
321
+ 条件层支持 **fact vs fact 直接比较**(实测通过),这是关键——
322
+ "盈利收益率 > 国债收益率" 可以直接写成两个 fact 的 `gt`,不需要先算差值。
323
+
324
+ **首批 8 席(在个股和 ETF/指数上都能出真判断,优先做):**
325
+
326
+ | 席位 | 核心判据(可直接用现有数据实现) |
327
+ |---|---|
328
+ | `master_buffett` | 穿透盈余收益率 vs 10y 国债;集中度;费率拖累;杠杆依赖 veto |
329
+ | `master_graham` | 盈利收益率 ≥ 2 × AAA 债收益率(防御型投资者判据);NCAV |
330
+ | `master_marks` | 估值分位 + 风险偏好读数 → 周期温度计 |
331
+ | `master_damodaran` | implied ERP vs 历史分位(他自己每月发布这个数) |
332
+ | `master_dalio` | 增长/通胀四象限 + 当前 regime → 股票指数暴露建议 |
333
+ | `master_druckenmiller` | 流动性脉冲方向 + 拐点 |
334
+ | `master_asness` | 价值利差分位 + 因子暴露 |
335
+ | **`master_bogle`(新增)** | 期望收益 = 股息率 + 盈利增长 ± 估值变化;成本至上 |
336
+
337
+ **为什么必须新增博格:** 26 席里**没有一个是为指数设计的方法**,而这是 ETF 用户唯一最想要的一席。
338
+ 博格的收益分解(投资回报 vs 投机回报)能直接给出 QQQ 的十年期望回报数字,
339
+ 所有输入(股息率 0.58%、盈利增长、P/E 33.05 的均值回归)都已经在 A3 里备齐。
340
+ 新增一席要改 `CANONICAL_MASTER_COUNT` 26→27 及若干处硬编码 26 的断言
341
+ (`runtime-release-integrity.mjs:288,352-361`、`staging.mjs`、几个 release 测试),
342
+ 以及 profile 里的 `physical_solo_packs` / `ai_formula_cross_reviews` 数字。
343
+ **这是全案唯一值得付"改 26 常量"代价的改动。**
344
+
345
+ **第二批 12 席(Tier B,走穿透):** munger / li_lu / fisher / duan_yongping / lynch /
346
+ klarman / pabrai / burry / ackman / cathie_wood / forensic_short / aschenbrenner。
347
+ 它们的方法是单公司的,在 ETF 上跑前十大持仓再按权重汇总,输出
348
+ "我对其中 X% 的权重有信心 / 有疑虑"。
349
+
350
+ **第三批 6 席:** simons / soros / thorp / taleb / natenberg / sinclair —— 量化与波动率方法,
351
+ 指数是它们最好的场景,需要的是 A3 的分布与期权数据。
352
+
353
+ **诚实弃权保留:** `master_jhunjhunwala`(印度市场方法)在美国科技指数上真的不适用。
354
+ 弃权应该是少数且有具体理由的,不是默认状态。
355
+
356
+ #### B3. AI 交叉复核的连锁成本
357
+
358
+ `data/persona-v3-ai-assisted-solo-profile.v1.json` 写死
359
+ `ai_formula_cross_reviews: 52`(26 席 × 2 工具,每份 3 个独立角色)。
360
+ 每席从 2 个工具加到 3 个 → 需要 78 份复核,profile 数字和全部 index/manifest hash 要同步更新。
361
+ **排期时把这块算进去,它比写公式本身更花时间。**
362
+
363
+ ---
364
+
365
+ ### 支柱 C — 表达层
366
+
367
+ #### C1. 五段式第一人称(`voice_mode`)
368
+
369
+ `masterVoicePrompt`(`prompts.mjs:249`)的输出契约改成读者视角:
370
+
371
+ ```json
372
+ {
373
+ "master": "master_buffett",
374
+ "acknowledged_stance": "<必须等于冻结立场>",
375
+ "position_intent": "would_buy | would_add | would_hold | would_pass | not_in_my_circle",
376
+ "voice": {
377
+ "what_i_see": "…(只引用 evidence 里的事实 + source_id)",
378
+ "how_my_method_reads_it": "…(把 typed facts 映射到自己的判据,给出具体数字)",
379
+ "would_i_buy": "…(明确、可证伪)",
380
+ "what_changes_my_mind": "…(给出触发阈值,不是空话)",
381
+ "where_i_disagree": "…(说明是信息差还是方法差)"
382
+ },
383
+ "source_ids": [...], "confidence": "high|medium|low"
384
+ }
385
+ ```
386
+
387
+ `position_intent` **由冻结立场机械派生**:建 `stance → allowed intents` 表,
388
+ 模型只能在允许集合里选,选错直接拒(复用现有拒绝 stance 不符的机制)。
389
+ 冻结立场的安全性不降级。
390
+
391
+ #### C2. 报告结尾三层递进
392
+
393
+ ```
394
+ ## 大师席位怎么看
395
+ ### 有判断的(N 席) ← 每席一个小节,完整五段式,按 intent 强度排序
396
+ ### 分歧点 ← 只列真正立场相反的两席对撞 + 是信息差还是方法差
397
+ ### 说这不归我管的(M 席) ← 合并成一段散文,不是 25 行表格
398
+ ```
399
+
400
+ `method_statement_coverage` 门相应改成"每个 ID 出现在文中"而非"每席独立一行"。
401
+
402
+ #### C3. 相关性警告保留并前置
403
+
404
+ `masterCorrelationNote`("这些席位不是独立样本,立场分布不能当票数")必须留在最前面。
405
+ 第一人称化会天然诱导读者把它当 N 个独立意见,**警告比现在更重要,不是更不重要。**
406
+
407
+ #### C4. 命名与合规
408
+
409
+ - 标签从 `巴菲特视角临时操作视角` 简化为 **`巴菲特方法`**
410
+ ("临时操作视角"是内部成熟度术语,塞进 metadata 括号,不该出现在读者面前)
411
+ - 章节一次性声明:`以下为方法模型的第一人称推演,非本人言论或授权观点`
412
+ - 文案永远说"这套方法会……",不说"巴菲特现在认为……"
413
+ - **真人第一人称断言不做**——"沃伦·巴菲特认为 QQQ 该买"这句话事实上就是假的。
414
+ 第一人称写的是方法的口吻,这个边界可辩护。
415
+
416
+ ---
417
+
418
+ ## 4. P0 — 合并前必修(与三根支柱独立,1 天)
419
+
420
+ 1. **分类器 fail-open → fail-closed**(`instruments.mjs`)。实测:无 Yahoo 元数据时
421
+ `SPY/QQQ/VOO` 全部 `plain_us_ticker_fallback → equity, secFacts=true`;
422
+ `IVV` 因 `iShares Trust` SIC 6726 走 `sec_filer_sic → equity`;
423
+ `VOO` 因 `Vanguard Index Funds` 走名称启发式 → `index`,期权链被误关。
424
+ 改:SIC 6722/6726/6770 前置判基金;`index fund`/`mutual fund` 排在裸 `index` 前;
425
+ `plain_us_ticker_fallback` 返回 `unknown`。
426
+ 2. **ja/ko 永久 `needs_revision` 死锁**。用已有的
427
+ `<!-- alphacouncil:recorded-master-bench:v1:sha256... -->` 锚点定位系统段,别靠标题别名匹配。
428
+ 3. **陈词能劫持章节**。`normalizeMasterVoice` 出口统一转义行首 `#`。
429
+ 4. **`not_applicable` 英文硬编码**渗进多语报告 → 走 `localized()`,
430
+ `instrumentResearchChecklist` 补 ja/ko。
431
+ 5. **状态口径不一致**(`status.json` 说 complete、辩论门说缺席)→ 抽共用判定函数。
432
+ 6. **性能回退**:`orchestrator.mjs:397` 只对立场可判定的席位起 voice worker。
433
+ 0.9.4 里 26 席是零模型调用的确定性完成,0.9.5 每席加一次生成 + 一次 MCP 写入,
434
+ 在没有 spawn 能力的 Codex 上全部串行 → 墙钟时间从 15-28 分钟涨到 28-55 分钟。
435
+
436
+ ---
437
+
438
+ ## 5. 排期与验收
439
+
440
+ **1.0.0 的定义**:26 席在任何标的(含 ETF/指数)上都给出可证伪的真实判断。
441
+ 客户端/终端/API 不是 1.0 的门槛,它们是 1.1 之后的分发问题 —— 一个说不出话的委员会,
442
+ 包装成桌面应用也还是说不出话。
443
+
444
+ | 里程碑 | 内容 | 工期 | 验收标准 | 状态 |
445
+ |---|---|---|---|---|
446
+ | **1.0.0-a** | P0 六项 | 1 天 | CI 绿 + 四语报告门 + 无元数据分类矩阵 | ✅ 已完成 `6840d38` |
447
+ | **1.0.0-b** | 支柱 A1 macro→typed facts | 1 天 | 可执行席位 1/26 → 3/26 | ✅ 已完成 `229f2e9` |
448
+ | **1.0.0-c** | 支柱 A2 `funds.mjs` 持仓穿透 | 3-4 天 | QQQ 产出穿透 `financial.owner_earnings`,覆盖权重 ≥60% | |
449
+ | **1.0.0-d** | 支柱 A3 指数聚合 + A4 SEC 派生 | 3-4 天 | 适配器 fact id 从 22 → ≥35 | |
450
+ | **1.0.0-e** | 支柱 B 首批 8 席 + 新增博格 | 7-10 天 | QQQ ≥8 席非 out_of_scope 且每条判据有 source_id | |
451
+ | **1.0.0-f** | 支柱 B 第二三批(穿透 + 量化波动率) | 5-7 天 | QQQ ≥20 席有实质输出,弃权 ≤3 席且各有具体理由 | |
452
+ | **1.0.0** | 支柱 C 表达层 + 发布 | 3-5 天 | 巴菲特席位对 QQQ 输出第 2 节那段话的结构,数字全部带 source_id | |
453
+ | 1.1.0 | 引擎抽离 + 终端版 | 5-7 天 | 终端版与 MCP 版报告字节级一致 | |
454
+ | 1.2.0 | HTTP API + Web + OAuth | 10-14 天 | 无 key 落盘/进前端;配额熔断可验证 | |
455
+
456
+ **1.0.0 总计约 4-6 周。**
457
+
458
+ ### 已完成部分的实测结果
459
+
460
+ `1.0.0-a`:782 → 792 测试全绿,`npm run check` EXIT=0,Integrity passed,8/8 机器仿真无漂移。
461
+ 分类器矩阵实测:无元数据时 SPY/QQQ/VOO 由 `equity, secFacts=true` 改为 `unknown, secFacts=false`;
462
+ IVV(iShares Trust, SIC 6726)由 `equity` 改为 `etf`;VOO(Vanguard Index Funds)由 `index`
463
+ 改为 `fund_lookthrough`,期权链恢复。
464
+
465
+ `1.0.0-b`:9 个宏观事实进入 fact pack,零 diagnostics。2026-07-28 实测值 ——
466
+ 10y 国债 4.69%、AAA 公司债 5.52%、HY OAS 2.79%(3 年期分位 18.9%)、
467
+ 净流动性 $5.92T(91 天 +3.80%)、regime = `rising_growth_falling_inflation`。
468
+ `macro.aaa_corporate_yield` 和 `macro.long_bond_yield` 正是 1.0.0-e 里格雷厄姆和巴菲特判据要用的基准。
469
+
470
+ ### 客户端 / 终端版(简述,细节见前一版方案)
471
+
472
+ 先抽引擎:`mcp/lib/engine/runCouncil(symbol, opts, onEvent)` 发结构化事件流,
473
+ `adapters/{mcp,http,cli}.mjs` 三个壳共用。终端版用 Ink 渲染 N 席位状态灯 + 进度。
474
+ v1.0 的 OAuth 分两层:用户登录用 GitHub/Google(`openid-client`,httpOnly cookie);
475
+ 数据源侧 Tiingo/Polygon 用 API key,券商侧 Schwab/IBKR 走真 OAuth。
476
+ **key 一律服务端环境变量,绝不进前端、绝不进 run artifacts;现有 keyless 路径保留为默认降级。**
477
+ 多用户后 run-store 从 `linkSync` 文件锁换 SQLite。token 配额熔断第一天就要有。
478
+
479
+ ---
480
+
481
+ ## 6. 一句话
482
+
483
+ 当前 26 席里只有 1 席能执行,而那 1 席的"方法"是 `identity(x) > 0`。
484
+ **三层都是空的:事实层缺 92%,方法层是脚手架,表达层是机器诊断。**
485
+ 顺序不能反 —— 先补事实(不碰 pack,零风险),再写真方法(这是"有没有意义"的分水岭),
486
+ 最后做表达。做完前两层,巴菲特看 QQQ 会说"盈利收益率 3.03%,国债 4.69%,我不会买",
487
+ 而不是"这不归我管"。