Portfolio Manager

Stress-Testing Our Portfolio Against 2008, 2020, and 2022

crypto+equity correlation spiked in every crisis β€” diversification evaporatedFinance & Trading4 min read

Key Takeaway

We ran our current portfolio through three historical crises β€” GFC 2008, COVID crash 2020, and crypto winter 2022 β€” and discovered our crypto allocation would have wiped 34% of total portfolio value in the worst scenario.

The Problem

"Our portfolio is diversified."

That's what every fund manager says right before a crisis proves they weren't. Diversification doesn't mean owning different tickers. It means owning assets that behave differently when everything goes wrong.

I hold US equities (TSLA, NVDA, PLTR, GOOGL), Japanese equities, French equities, crypto, DeFi positions, and cash. On paper, that's diversified across geographies, asset classes, and risk profiles. In reality, I'd never tested what happens when the world falls apart.

The board at PyratzLabs doesn't want "trust me, we're diversified." They want math. They want to see: if 2008 happened again tomorrow, what's the damage? If COVID hit next month, which positions survive? If crypto winters again, how deep is the hole?

That's not a conversation. That's a simulation.

The Solution

The Backtest Expert and Risk Metrics skills, working together. We feed in our exact current allocation, replay historical crisis periods, and measure the destruction. Max drawdown, recovery time, correlation spikes, and β€” most importantly β€” which positions saved the portfolio and which killed it.

This isn't backtesting a strategy. It's stress-testing a portfolio. Different exercise. We're not asking "would this have been profitable?" We're asking "would we have survived?"

The Process

Portfolio input:

yamlShow code
# portfolio allocation for stress test
portfolio:
  us_equities:
    weight: 35%
    holdings:
      - TSLA: 10%
      - NVDA: 10%
      - PLTR: 8%
      - GOOGL: 7%
  japanese_equities:
    weight: 12%
    proxy: EWJ  # iShares MSCI Japan
  french_equities:
    weight: 10%
    proxy: EWQ  # iShares MSCI France
  crypto:
    weight: 18%
    holdings:
      - BTC: 10%
      - ETH: 8%
  defi_yield:
    weight: 10%
    proxy: USDC_yield  # stable, modeled as fixed 6% APY
  cash:
    weight: 15%
    proxy: EUR_cash

Scenario definitions:

pythonShow code
scenarios = {
    "GFC_2008": {
        "period": ("2008-09-01", "2009-03-09"),
        "description": "Lehman collapse to market bottom",
        "duration_months": 6
    },
    "COVID_2020": {
        "period": ("2020-02-19", "2020-03-23"),
        "description": "Peak to trough, fastest 30% drop in history",
        "duration_months": 1.1
    },
    "CRYPTO_WINTER_2022": {
        "period": ("2022-04-01", "2022-12-31"),
        "description": "Luna collapse through FTX, full crypto contagion",
        "duration_months": 9
    }
}

The agent runs each scenario by applying historical returns of each asset (or proxy) to our current weights, measuring daily portfolio value, and computing risk metrics:

pythonShow code
def stress_test(portfolio, scenario):
    daily_returns = fetch_historical_returns(
        portfolio.holdings,
        scenario.start,
        scenario.end
    )
    portfolio_returns = (daily_returns * portfolio.weights).sum(axis=1)
    cumulative = (1 + portfolio_returns).cumprod()

    max_drawdown = (cumulative / cumulative.cummax() - 1).min()
    recovery_days = calculate_recovery_time(cumulative)
    var_95 = np.percentile(portfolio_returns, 5)
    cvar_95 = portfolio_returns[portfolio_returns <= var_95].mean()

    # Per-position attribution
    position_impact = {}
    for asset in portfolio.holdings:
        position_impact[asset] = {
            "drawdown": daily_returns[asset].min(),
            "contribution_to_loss": (daily_returns[asset] * portfolio.weights[asset]).sum(),
            "correlation_to_spy": daily_returns[asset].corr(daily_returns["SPY"])
        }

    return StressResult(max_drawdown, recovery_days, var_95, cvar_95, position_impact)

The Results

MetricGFC 2008COVID 2020Crypto Winter 2022
Portfolio Max Drawdown-41.2%-29.7%-34.1%
Recovery Time14 months5 months11 months
Worst PositionTSLA (-72%)PLTR (-58%)ETH (-74%)
Best PositionCash (+0.3%)Cash (+0.1%)DeFi Yield (+3%)
VaR (95%, daily)-4.8%-6.2%-3.1%
CVaR (95%, daily)-7.1%-8.9%-4.6%
Correlation spike (equity-crypto)N/A*0.820.71

*BTC barely existed in 2008 β€” proxy used.

Key finding: In every scenario, the crypto+equity correlation spiked during crisis. The "diversification" between tech stocks and crypto evaporated exactly when we needed it most. DeFi yield and cash were the only true hedges.

Agent recommendation: Reduce combined equity+crypto from 53% to 45%. Increase cash/stablecoin buffer to 20%. Consider adding a gold or commodity allocation (historically negative equity correlation in stress).

Try It Yourself

Install the backtest-expert and risk-metrics-calculation skills on Mr.Chief. Feed in your allocation. Pick your nightmare scenarios. Let the math tell you what your gut won't.

Run this annually, or after any major allocation change. The board doesn't want your confidence. They want your contingency plan.


Diversification is a theory. Stress testing is a proof. We run the proof quarterly now.

stress-testingportfolio-riskdrawdownbacktestingcrisis-scenarios

Want results like these?

Start free with your own AI team. No credit card required.

Stress-Testing Our Portfolio Against 2008, 2020, and 2022 β€” Mr.Chief