git clone https://github.com/vibeforge1111/vibeship-spawner-skills
finance/portfolio-optimization/skill.yamlid: portfolio-optimization name: Portfolio Optimization category: finance description: Use when constructing portfolios, implementing mean-variance optimization, factor models, risk parity, or Black-Litterman allocation - covers modern portfolio theory and practical enhancements
patterns: golden_rules: - rule: "1/N often wins" reason: "Simple allocation beats complex models out-of-sample" - rule: "Shrink covariance" reason: "Raw sample covariance is unstable" - rule: "Constrain weights" reason: "Unconstrained = concentrated bets" - rule: "Regularize" reason: "Prevents corner solutions" - rule: "Backtest carefully" reason: "In-sample optimal ≠ out-of-sample optimal"
method_selection: strong_return_views: "Black-Litterman" want_diversification: "Risk Parity / HRP" trust_estimates: "Mean-Variance (with shrinkage)" want_simplicity: "1/N Equal Weight" have_factor_exposures: "Factor Model"
markowitz_optimization: | Maximize: w'μ - (λ/2)*w'Σw Subject to: w'1 = 1, w >= 0
Where: - w = weights - μ = expected returns - Σ = covariance matrix - λ = risk aversion
risk_parity_concept: | Equal risk contribution from each asset: RC_i = w_i * (Σw)_i / σ_p Target: RC_1 = RC_2 = ... = RC_n
hrp_steps: - "Tree clustering on correlation distance" - "Quasi-diagonalize correlation matrix" - "Recursive bisection allocation"
black_litterman: | Prior: π = δΣw_mkt (equilibrium returns) Views: P*μ = Q + ε Posterior: μ_bl = [(τΣ)^-1 + P'Ω^-1P]^-1 * [(τΣ)^-1π + P'Ω^-1Q]
anti_patterns:
- pattern: "No shrinkage" problem: "Unstable covariance estimates" solution: "Ledoit-Wolf or similar"
- pattern: "Unconstrained optimization" problem: "Extreme positions" solution: "Max weight constraints"
- pattern: "Single optimization" problem: "Ignores estimation error" solution: "Resampling or robust methods"
- pattern: "In-sample only" problem: "Overfits to historical data" solution: "Walk-forward validation"
- pattern: "Ignoring turnover" problem: "High transaction costs" solution: "Turnover constraints"
- pattern: "No rebalancing rules" problem: "Drift from target" solution: "Regular or threshold-based"
implementation_checklist: optimization: - "Choose appropriate optimization method for your beliefs" - "Apply shrinkage to covariance matrix" - "Set sensible weight constraints (min/max)" - "Consider transaction costs and turnover" validation: - "Backtest with walk-forward validation" - "Compare to simple benchmarks (1/N)" - "Monitor for concentration risk" production: - "Set rebalancing schedule" - "Document assumptions and limitations" - "Stress test with historical scenarios"
handoffs:
- skill: risk-modeling trigger: "portfolio VaR and stress testing"
- skill: algorithmic-trading trigger: "rebalancing execution"
- skill: derivatives-pricing trigger: "options overlay strategies"
ecosystem: optimization: - "PyPortfolioOpt - Full optimization library" - "skfolio - Scikit-learn style portfolio" - "cvxpy - Convex optimization" data: - "yfinance - Price data" - "pandas-datareader - Multiple sources" risk: - "sklearn.covariance - Shrinkage estimators" - "riskfolio-lib - Risk measures"
sources: tutorials: - "PyPortfolioOpt Documentation" - "skfolio Library Guide" books: - "Advances in Financial ML - Lopez de Prado" - "Expected Returns - Ilmanen"