Portfolio Risk Analyzer
Complete investment portfolio risk management system. Analyze positions, calculate risk metrics, stress test scenarios, optimize allocations, and generate institutional-grade risk reports — all without external APIs.
1. Portfolio Intake
When the user shares their portfolio (positions, tickers, amounts), structure it into this format:
portfolio:
name: "User Portfolio"
currency: USD
as_of: "2026-02-15"
positions:
- ticker: AAPL
shares: 50
avg_cost: 185.00
current_price: 228.50 # Look up via web search
asset_class: US_EQUITY
sector: Technology
- ticker: BTC
units: 0.5
avg_cost: 42000
current_price: 97500
asset_class: CRYPTO
sector: Digital Assets
- ticker: VOO
shares: 100
avg_cost: 410.00
current_price: 535.00
asset_class: US_EQUITY_ETF
sector: Broad Market
cash:
amount: 15000
currency: USD
Price Lookup
For each position, use web search to find current price:
- Search:
[TICKER] stock price today - For crypto:
[COIN] price USD today - Record source and timestamp
Portfolio Summary Table
| Position | Shares | Cost Basis | Current Value | Weight | P&L | P&L % |
|---|---|---|---|---|---|---|
| AAPL | 50 | $9,250 | $11,425 | 18.2% | +$2,175 | +23.5% |
| ... | ... | ... | ... | ... | ... | ... |
| TOTAL | $XX,XXX | $XX,XXX | 100% | ±$X,XXX | ±X.X% |
2. Risk Metrics Calculator
Calculate ALL of the following for every portfolio analysis:
2.1 Concentration Risk
Position Concentration:
- Any single position >20% of portfolio = HIGH RISK ⚠️
- Any single position >10% = MODERATE RISK
- Top 3 positions >50% = CONCENTRATED
Sector Concentration:
- Any sector >30% = OVERWEIGHT
- Count unique sectors — fewer than 4 = UNDER-DIVERSIFIED
Asset Class Breakdown:
- Equities: X%
- Fixed Income: X%
- Crypto: X%
- Cash: X%
- Alternatives: X%
2.2 Value at Risk (VaR) — Parametric Method
Calculate the maximum expected loss at given confidence levels:
Daily VaR Calculation:
1. Look up each position's historical volatility (annualized)
- Use web search: "[TICKER] historical volatility 30 day"
- Typical ranges: Large cap stocks 15-25%, Crypto 50-80%, Bonds 5-10%
2. Convert to daily volatility:
Daily Vol = Annual Vol / √252
3. Position VaR (95% confidence):
Position VaR = Position Value × Daily Vol × 1.645
4. Position VaR (99% confidence):
Position VaR = Position Value × Daily Vol × 2.326
5. Portfolio VaR (simplified — assumes correlation ≈ 0.5 for stocks):
Portfolio VaR ≈ √(Σ(Position VaR²) + 2×0.5×Σ(VaR_i × VaR_j))
Report:
- 1-Day 95% VaR: $X,XXX (X.X% of portfolio)
- 1-Day 99% VaR: $X,XXX (X.X% of portfolio)
- 10-Day 95% VaR: $X,XXX (= 1-Day VaR × √10)
- Monthly 95% VaR: $X,XXX (= 1-Day VaR × √21)
2.3 Maximum Drawdown Estimation
Based on asset class historical max drawdowns:
- US Large Cap: -50% (2008-09), typical correction -20%
- US Small Cap: -55%, typical correction -25%
- International Equity: -55%, typical -25%
- Emerging Markets: -65%, typical -30%
- Investment Grade Bonds: -15%, typical -5%
- High Yield Bonds: -30%, typical -10%
- REITs: -70%, typical -25%
- Crypto (BTC): -85%, typical -50%
- Gold: -45%, typical -15%
- Cash: 0%
Portfolio Max Drawdown Estimate:
= Σ(Position Weight × Asset Class Max Drawdown)
Report:
- Estimated worst-case drawdown: -$XX,XXX (XX.X%)
- Estimated typical correction: -$XX,XXX (XX.X%)
- Recovery time estimate: X-X months (based on historical averages)
2.4 Beta & Market Sensitivity
For each equity position:
- Look up beta via web search: "[TICKER] beta"
- Portfolio Beta = Σ(Position Weight × Position Beta)
Interpretation:
- Beta > 1.2: Portfolio is AGGRESSIVE (amplifies market moves)
- Beta 0.8-1.2: Portfolio is NEUTRAL
- Beta < 0.8: Portfolio is DEFENSIVE
- Negative beta positions: HEDGE value
Market Impact:
- If S&P 500 drops 10%, portfolio expected to move: Beta × -10%
2.5 Sharpe Ratio Estimation
Portfolio Expected Return = Σ(Weight × Expected Return)
Where Expected Return by asset class:
- US Large Cap: 8-10% annually
- US Small Cap: 9-11%
- International Developed: 6-8%
- Emerging Markets: 8-12%
- Investment Grade Bonds: 4-5%
- High Yield: 6-7%
- Crypto: highly variable (use 0% for conservative estimate)
- REITs: 7-9%
- Cash: current money market rate (~4.5%)
Risk-Free Rate: current 3-month T-bill rate (search if needed)
Sharpe Ratio = (Portfolio Expected Return - Risk-Free Rate) / Portfolio Volatility
Rating:
- > 1.0: EXCELLENT risk-adjusted returns
- 0.5-1.0: GOOD
- 0-0.5: MEDIOCRE — consider rebalancing
- < 0: POOR — return doesn't justify risk
2.6 Income Analysis
For dividend-paying positions:
- Look up dividend yield: "[TICKER] dividend yield"
- Annual Income = Shares × Annual Dividend per Share
- Portfolio Yield = Total Annual Dividends / Portfolio Value
Report:
- Monthly estimated income: $XXX
- Annual estimated income: $X,XXX
- Yield on cost: X.X%
- Current yield: X.X%
3. Stress Testing
Run these scenarios against the portfolio and report impact:
3.1 Standard Scenarios
scenarios:
market_crash_2008:
name: "2008 Financial Crisis"
impacts:
US_EQUITY: -0.50
INTL_EQUITY: -0.55
EMERGING: -0.60
BONDS: +0.05
HIGH_YIELD: -0.30
REITS: -0.70
CRYPTO: -0.80 # projected based on risk profile
GOLD: +0.10
CASH: 0
covid_crash_2020:
name: "COVID-19 Crash (Feb-Mar 2020)"
impacts:
US_EQUITY: -0.34
INTL_EQUITY: -0.35
EMERGING: -0.35
BONDS: +0.03
HIGH_YIELD: -0.20
REITS: -0.40
CRYPTO: -0.50
GOLD: -0.05
CASH: 0
dot_com_2000:
name: "Dot-Com Bust (2000-2002)"
impacts:
US_EQUITY: -0.45
TECH: -0.75 # Apply to technology sector specifically
INTL_EQUITY: -0.40
BONDS: +0.15
CASH: 0
rate_hike_shock:
name: "Rapid Rate Hike (+300bps)"
impacts:
US_EQUITY: -0.15
BONDS: -0.15
HIGH_YIELD: -0.10
REITS: -0.25
CRYPTO: -0.20
GOLD: -0.10
CASH: +0.01 # higher yields
inflation_surge:
name: "Stagflation (persistent 8%+ inflation)"
impacts:
US_EQUITY: -0.20
BONDS: -0.20
CRYPTO: -0.10 # debatable hedge
GOLD: +0.15
REITS: -0.05
COMMODITIES: +0.20
CASH: -0.03 # real value erosion
crypto_winter:
name: "Crypto Winter (80% drawdown)"
impacts:
CRYPTO: -0.80
US_EQUITY: -0.05 # minor contagion
3.2 Stress Test Report Format
For each scenario:
📉 SCENARIO: [Name]
| Position | Current Value | Stressed Value | Loss |
|----------|--------------|----------------|------|
| AAPL | $11,425 | $5,713 | -$5,712 |
| ... | ... | ... | ... |
| TOTAL | $XX,XXX | $XX,XXX | -$XX,XXX (-XX.X%) |
Could you survive this? [YES/NO based on cash reserves and income needs]
Recovery estimate: X-X months
3.3 Custom Scenario Builder
If user describes a specific worry, build a custom scenario:
User: "What if tech crashes 40% but bonds rally?"
→ Build custom impact map, apply to portfolio, report results
4. Portfolio Optimization
4.1 Current Allocation Assessment
Compare current allocation to standard models:
AGGRESSIVE (Age <35, high risk tolerance):
Equities: 80-90%, Bonds: 5-10%, Alternatives: 5-10%, Cash: 2-5%
GROWTH (Age 35-50):
Equities: 60-75%, Bonds: 15-25%, Alternatives: 5-10%, Cash: 5%
BALANCED (Age 50-60):
Equities: 40-60%, Bonds: 30-40%, Alternatives: 5-10%, Cash: 5-10%
CONSERVATIVE (Age 60+, income focus):
Equities: 20-40%, Bonds: 40-50%, Alternatives: 5%, Cash: 10-20%
Current allocation matches: [MODEL] profile
Recommended adjustments: [specific moves]
4.2 Risk Parity Analysis
Risk Parity Target: Each asset class contributes EQUAL risk to portfolio
Steps:
1. Calculate each position's risk contribution:
Risk Contribution = Weight × Volatility × Correlation_with_portfolio
2. For equal risk contribution:
Target Weight_i = (1/Vol_i) / Σ(1/Vol_j)
3. Report:
Current vs Risk-Parity weights
Trades needed to rebalance
Expected impact on Sharpe Ratio
4.3 Rebalancing Recommendations
Check rebalancing triggers:
- Any position drifted >5% from target? → REBALANCE
- Any asset class drifted >10% from target? → REBALANCE
- Last rebalance >6 months ago? → REVIEW
Rebalancing Method:
1. Calculate target weights
2. Calculate current weights
3. Determine trades needed (minimize transactions)
4. Tax-lot optimization: sell highest-cost lots first (minimize tax)
5. Consider wash sale rules if harvesting losses
Output trade list:
| Action | Ticker | Shares | Est. Value | Reason |
|--------|--------|--------|-----------|--------|
| SELL | AAPL | 15 | $3,428 | Overweight tech |
| BUY | BND | 25 | $1,850 | Underweight bonds |
4.4 Correlation Analysis
Assess diversification quality:
HIGH correlation pairs (>0.7) — these DON'T diversify each other:
- Tech stocks with each other
- US equity ETFs with each other
- High yield bonds with equities
LOW correlation pairs (<0.3) — TRUE diversifiers:
- Stocks vs Treasury bonds
- US vs Gold
- Equities vs Managed Futures
NEGATIVE correlation — HEDGES:
- Long equity + Put options
- Stocks + VIX products
- Growth + Value in some regimes
Grade portfolio diversification: A/B/C/D/F
5. Risk Score Card (0-100)
Generate a single risk score:
risk_scorecard:
concentration_risk:
weight: 20
score: X # 100 = well diversified, 0 = single stock
details: "Top position is X%, X sectors represented"
volatility_risk:
weight: 20
score: X # 100 = low vol, 0 = extremely volatile
details: "Portfolio annualized vol: X%"
drawdown_risk:
weight: 20
score: X # 100 = minimal drawdown exposure, 0 = could lose 50%+
details: "Max estimated drawdown: X%"
liquidity_risk:
weight: 15
score: X # 100 = all highly liquid, 0 = illiquid positions
details: "X% in liquid large-cap, X% in illiquid"
income_resilience:
weight: 10
score: X # 100 = strong income, 0 = no yield
details: "Portfolio yield: X%, X% from reliable dividend payers"
market_sensitivity:
weight: 15
score: X # 100 = low beta/defensive, 0 = highly aggressive
details: "Portfolio beta: X.XX"
overall_score: X/100
rating: "[CONSERVATIVE|MODERATE|AGGRESSIVE|SPECULATIVE]"
recommendation: "[Key action item]"
Score Interpretation
- 80-100: FORTRESS — Well-protected, may be too conservative for growth
- 60-79: SOLID — Good risk management, minor improvements possible
- 40-59: MODERATE — Reasonable but has notable risk exposures
- 20-39: ELEVATED — Significant vulnerabilities, rebalancing recommended
- 0-19: DANGER ZONE — Extreme concentration or volatility, urgent action needed
6. Monitoring & Alerts
Daily Check Template (for cron/heartbeat use)
For each portfolio position:
1. Check price vs previous close (web search)
2. Flag if any position moved >3% in a day
3. Flag if any position hit stop-loss level
4. Check for earnings/events in next 7 days
Alert Thresholds:
- Single position -5% in a day → ALERT
- Portfolio -3% in a day → ALERT
- Position hits 52-week low → WATCH
- VIX > 25 → ELEVATED CAUTION
- VIX > 35 → HIGH ALERT — review hedges
Weekly Review Template
## Portfolio Weekly Review — [Date]
### Performance
- Portfolio value: $XX,XXX (±X.X% week)
- Best performer: [TICKER] +X.X%
- Worst performer: [TICKER] -X.X%
- vs S&P 500: [outperformed/underperformed] by X.X%
### Risk Changes
- VaR change: $X,XXX → $X,XXX
- Any new concentration issues? [Y/N]
- Rebalancing needed? [Y/N]
### Upcoming Events
- Earnings: [tickers and dates]
- Ex-dividend dates: [tickers and dates]
- Fed/macro events: [list]
### Action Items
1. [Specific recommendation]
2. [Specific recommendation]
7. Tax-Loss Harvesting Scanner
For each position with unrealized losses:
1. Calculate unrealized loss: (Current Price - Avg Cost) × Shares
2. Check if loss >$500 (worth harvesting)
3. Identify tax-efficient replacement:
- Same sector ETF (avoids wash sale)
- Similar factor exposure
- Hold replacement 31+ days before switching back
Report:
| Ticker | Unrealized Loss | Replacement | Wash Sale Clear Date |
|--------|----------------|-------------|---------------------|
| XYZ | -$2,500 | Similar ETF | [date + 31 days] |
Estimated tax savings: $X,XXX (at X% marginal rate)
8. Special Asset Classes
Crypto Portfolio Risk
Additional crypto-specific metrics:
- Bitcoin dominance correlation
- Exchange risk (centralized vs self-custody)
- Protocol risk for DeFi positions
- Stablecoin exposure and depeg risk
- Tax implications of staking/yield
Real Estate (REITs/Property)
- FFO yield vs dividend yield
- Interest rate sensitivity
- Geographic concentration
- Property type diversification (residential/commercial/industrial)
Options Positions
If portfolio includes options:
- Delta exposure (equivalent stock position)
- Theta decay (daily time value loss)
- Implied volatility vs historical
- Max loss calculation
- Breakeven prices
9. Report Generation
Full Risk Report (on request)
Generate a complete PDF-ready markdown report:
# Portfolio Risk Report
## Prepared: [Date]
## Portfolio: [Name]
### Executive Summary
[2-3 sentence overview: total value, risk rating, top recommendation]
### 1. Holdings Summary
[Position table from Section 1]
### 2. Risk Metrics
[All calculations from Section 2]
### 3. Stress Test Results
[All scenarios from Section 3]
### 4. Optimization Recommendations
[From Section 4]
### 5. Risk Scorecard
[From Section 5]
### 6. Action Plan
[Prioritized list of recommended changes]
### Disclaimer
This analysis is for informational purposes only and does not constitute
financial advice. Past performance and historical data do not guarantee
future results. Consult a qualified financial advisor before making
investment decisions.
10. Quick Commands
Respond to these natural language requests:
| User Says | Action |
|---|---|
| "Analyze my portfolio" | Full Section 1-5 analysis |
| "What's my risk?" | Risk Scorecard (Section 5) |
| "Stress test my portfolio" | All scenarios (Section 3) |
| "What if the market crashes?" | 2008 + COVID scenarios |
| "How should I rebalance?" | Section 4 optimization |
| "Tax loss harvest" | Section 7 scanner |
| "Weekly review" | Section 6 weekly template |
| "Add [position]" | Update portfolio YAML, recalculate |
| "Remove [position]" | Update portfolio YAML, recalculate |
| "What's my VaR?" | Value at Risk calculation (Section 2.2) |
| "Compare to S&P 500" | Benchmark comparison |
| "How diversified am I?" | Concentration + correlation analysis |
| "What's my Sharpe ratio?" | Section 2.5 |
| "Set alert for [ticker] at [price]" | Add to monitoring (Section 6) |
Edge Cases
Small Portfolios (<$10K)
- Skip VaR (not meaningful for small amounts)
- Focus on concentration risk and savings rate
- Recommend index-first approach
Single Stock Portfolios (e.g., company RSUs)
- ALWAYS flag extreme concentration risk
- Model collar strategies (protective put + covered call)
- 10b5-1 plan reminder for insiders
- Calculate how much to diversify per quarter
Crypto-Heavy (>50% crypto)
- Apply crypto winter scenario prominently
- Flag exchange counterparty risk
- Recommend cold storage percentage
- Note tax complexity of DeFi/staking
International Portfolios
- Currency risk calculation
- Country risk premium
- Withholding tax impact on dividends
- ADR vs local share considerations
Leveraged Positions (margin/options)
- Calculate margin call price
- Stress test at 2x normal drawdown
- Flag if margin utilization >50%
- Model forced liquidation scenarios
Retirement Accounts (IRA/401k)
- Different tax treatment (no tax-loss harvesting needed)
- RMD impact for traditional IRA
- Roth conversion opportunity analysis
- Sequence of returns risk for near-retirees