portfolio

construction_report.md

Phase 3: CONSTRUCT — Multi-Manager Portfolio Construction Report

Date: 2026-03-24 Managers: pareto_diophan, persistent, quantstrat Common observation window: 2023-02-15 to 2024-12-31 (549 daily observations) Optimization method: Equal Risk Contribution (Risk Parity) via riskfolio-lib, Ledoit-Wolf covariance


1. Pre-Optimization Gates

Gate 1: N/T Ratio Validation (Ciliberti-Kondor-Mezard)

ParameterValueThresholdResult
N (managers)3
T (observations)549>= 60PASS
N/T ratio0.0055< 0.50PASS
Min T needed6549 >> 6

Interpretation: N/T = 0.0055 is far below the 0.50 threshold. Covariance estimation is highly feasible. All optimization methods (MVO, CVaR, risk parity) are viable. No need to fall back to HRP for statistical reasons. Anchor: [R5] Ciliberti-Kondor-Mezard — covariance estimation breaks down when N/T approaches 1.

Gate 2: Data Quality

CheckResult
Observations >= 60PASS (549)
Missing values = 0PASS (0 NaN)

2. Manager Return Profiles (Common Window)

Metricpareto_diophanpersistentquantstrat
Ann. return89.38%25.65%28.99%
Ann. volatility34.78%4.20%15.14%
Sharpe ratio2.576.101.92
Max drawdown-19.14%-1.46%-10.08%
Skewness-0.90+3.34-0.09
Excess kurtosis2.5940.7032.35
Cumulative return249.47%46.88%52.00%

Key observations:

  • persistent has the highest risk-adjusted return (Sharpe 6.10) but the lowest absolute return. Its extreme kurtosis (40.7) and positive skew (+3.34) suggest a strategy with frequent small gains and rare larger moves — consistent with a market-neutral or carry strategy.
  • pareto_diophan is the highest absolute returner (89.4% ann.) but carries the most risk (34.8% vol, -19.1% max DD). Negative skew (-0.90) flags left-tail concern.
  • quantstrat sits in the middle on both return and risk, with very high kurtosis (32.3) indicating fat tails despite near-zero skew.

Correlation Matrix

pareto_diophanpersistentquantstrat
pareto_diophan1.0000.0070.048
persistent0.0071.0000.178
quantstrat0.0480.1781.000

Interpretation: Pairwise correlations are very low (all < 0.18). This is excellent — the three managers offer genuinely independent return streams. The diversification ratio of 1.61 confirms meaningful portfolio-level risk reduction.


3. Optimal Weights — Risk Parity (Equal Risk Contribution)

ManagerWeightRisk Contribution
pareto_diophan10.72%33.3% (target)
persistent66.59%33.3% (target)
quantstrat22.69%33.3% (target)
Total100.00%100.0%

Rationale: Risk parity was selected as the default method because (a) we have no strong alpha views to justify mean-variance, and (b) the goal is to equalize marginal risk contributions across managers. The optimizer allocates heavily to persistent (66.6%) because its volatility is 8x lower than pareto_diophan — the only way to equalize risk contributions is to give it proportionally more capital. Anchor: [B5] Risk parity is the default when you don't trust expected returns.

Weight Comparison Across Methods

ManagerRisk ParityHRPEqual Weight
pareto_diophan10.72%1.46%33.33%
persistent66.59%91.49%33.33%
quantstrat22.69%7.05%33.33%
Portfolio MetricRisk ParityHRPEqual Weight
Ann. return33.24%26.82%48.01%
Ann. volatility6.19%4.21%13.05%
Sharpe ratio5.376.373.68
Max drawdown-3.27%-1.32%-6.53%

Interpretation: HRP achieves the highest Sharpe (6.37) and shallowest drawdown (-1.32%) by concentrating even more into persistent (91.5%). Risk parity offers a better balance: Sharpe 5.37 with 33% return and only -3.27% max DD. Equal weight gives the highest return but the worst risk-adjusted performance due to pareto_diophan's volatility dominating.


4. Post-Optimization Diagnostics

D1: Effective Breadth (Inverse Herfindahl)

MetricValueFlag
N_eff1.97CONCENTRATED
N (managers)3
Herfindahl index0.506
Concentration ratio0.66

Interpretation: N_eff = 1.97 means the portfolio behaves as if it holds ~2 independent bets rather than 3. This is structural — with persistent receiving 66.6% weight, the effective number of bets is reduced. However, with only 3 managers in the universe, this is not actionable. N_eff/N = 0.66 is reasonable for a risk-parity allocation with heterogeneous volatilities. Anchor: [B1 Eq 11.2] cc_B1_006 — effective number of stocks.

D2: Diversification Ratio

MetricValueThresholdResult
Weighted avg vol9.96%
Portfolio vol6.19%
Diversification ratio1.61>= 1.2PASS

Interpretation: The portfolio captures a 38% volatility reduction from diversification. This is driven by the near-zero correlations between managers. A DR of 1.61 with only 3 managers is strong.

D3: Component VaR (99%, 252-day annualization)

ManagerWeightMarginal VaRComponent VaR% ContributionFlag
pareto_diophan10.72%0.47620.051053.6%:warning: > 35%
persistent66.59%0.05020.033435.0%borderline
quantstrat22.69%0.04790.010911.4%OK
Portfolio100%0.0953100%

Interpretation: Despite only 10.7% capital weight, pareto_diophan contributes 53.6% of portfolio VaR due to its high volatility (34.8% ann.) and marginal VaR (0.476). This is the key risk concentration in the portfolio. The risk parity optimizer targets equal risk contribution in variance space, but Component VaR (parametric, 99% confidence) uses a different decomposition that highlights pareto_diophan's tail risk more aggressively.

Action item: If CIO is uncomfortable with 53.6% VaR contribution from a 10.7% position, consider (a) reducing pareto_diophan further, (b) switching to CVaR-based risk parity (rm='CVaR'), or (c) overlaying a tail-risk hedge. Anchor: [R3] cc_R3_003 — Component VaR for risk concentration monitoring.

D4: Robustness Check (100 Perturbation Trials)

ManagerOriginalMeanStdMinMaxRange
pareto_diophan10.72%10.70%0.05%10.55%10.83%0.29pp
persistent66.59%66.62%0.13%66.28%66.93%0.65pp
quantstrat22.69%22.68%0.10%22.45%22.90%0.45pp
MetricValueThresholdResult
Max weight range0.65pp< 10ppPASS
Max weight std0.13pp
Successful trials100/100
Covariance condition number70.9well-conditioned

Interpretation: The risk parity allocation is extremely robust. Under 10% noise perturbations to returns, the maximum weight shift is only 0.65 percentage points. This is far below the 10pp fragility threshold. The covariance condition number of 70.9 is well below problematic levels (>1000), confirming a well-conditioned estimation problem. Anchor: [R5, B2] Weight stability under perturbations — fragile if max Δ > 10pp.

D5: Conditional Correlation (Stress vs. Normal)

PairNormal CorrStress Corr (Bottom 25%)Delta
pareto_diophan / persistent+0.007-0.399-0.407
pareto_diophan / quantstrat+0.048-0.094-0.143
persistent / quantstrat+0.178+0.129-0.049

Interpretation: Correlations decrease in stress periods — the opposite of the dangerous pattern. pareto_diophan becomes negatively correlated with persistent during drawdowns (r = -0.40), meaning persistent acts as a natural hedge when pareto_diophan sells off. No pairs show the dangerous pattern of rising correlation in stress. This is a highly favorable diversification profile.


5. Summary Judgment Table

DecisionInputsAssessmentSource
Optimization methodN/T = 0.0055, no alpha viewsRisk parity is appropriate. N/T allows any method but no views → RPR5
DiversificationN_eff = 1.97, DR = 1.61Adequate given N=3. DR > 1.2 confirms benefit. Structural concentration.B1, B2
RobustnessMax Δ = 0.65pp, cond# = 70.9ROBUST — weights are highly stable under perturbationR5, B2
Concentration riskpareto_diophan = 53.6% VaR contributionFLAG — disproportionate tail-risk contribution at 10.7% weightR3
Stress behaviorCorrelations decrease in stressFAVORABLE — natural hedging in drawdownsR3
Transaction costsN/A (initial construction)Monitor at rebalancing; corridor-based rebalancing recommendedR4

6. CIO Recommendations

Recommended Portfolio: Risk Parity Weights

ManagerAllocation
pareto_diophan10.7%
persistent66.6%
quantstrat22.7%

Expected portfolio characteristics (backtest):

  • Annualized return: 33.2%
  • Annualized volatility: 6.2%
  • Sharpe ratio: 5.37
  • Maximum drawdown: -3.27%
  • Calmar ratio: 10.2

Action Items

  1. VaR Concentration (pareto_diophan): The 53.6% VaR contribution from a 10.7% position warrants attention. Consider:

    • Reducing to ~7-8% weight (accept lower return for lower tail risk)
    • Running CVaR-based risk parity (rm='CVaR') to explicitly minimize tail concentration
    • Implementing a stop-loss overlay on pareto_diophan (evaluate via Grossman-Zhou)
  2. persistent Liquidity Check: With 66.6% allocated to persistent, verify that the strategy's liquidity terms (lock-up, gates, redemption frequency) support this concentration. A liquidity mismatch at 2/3 of portfolio would be critical.

  3. Rebalancing Policy: Implement corridor-based rebalancing:

    • pareto_diophan: ±2pp corridor (high vol → narrower band)
    • persistent: ±5pp corridor (low vol → wider band)
    • quantstrat: ±3pp corridor
  4. Ongoing Monitoring: Re-run Phase 3 quarterly. Monitor for:

    • Correlation regime changes (D5)
    • Style drift in individual managers (rolling factor analysis)
    • pareto_diophan drawdown exceeding -25% (stop-loss trigger evaluation)

Artifacts

FileDescription
reports/portfolio/risk_parity_weights.jsonOptimal weights
reports/portfolio/risk_parity_weights.csvOptimal weights (CSV)
reports/portfolio/diagnostics.jsonPortfolio-level diagnostics
reports/portfolio/robustness_check.jsonPerturbation test results
reports/portfolio/nt_ratio_gate.jsonN/T gate result
reports/portfolio/component_var.jsonComponent VaR decomposition
reports/portfolio/effective_breadth.jsonEffective breadth metrics
reports/portfolio/optimization_robustness.jsonMCP robustness check
output/ingest/phase3_merged_returns.csvAligned return series