Portfolio Audit — Full Risk Review
Goal
A fund-manager-level audit of the user's entire book. Answer 6 questions definitively:
- Where is concentration risk? (single-name + factor cluster)
- What blows up in -10% SPX day? (correlation unwind paths)
- What's the true equity beta? (incl. leverage ETFs and options delta)
- Where am I over-earning? (positions that have run too far)
- What hedges should I add? (gap protection)
- What trims should I execute today? (with $ amounts + tax considerations)
The 7-Step Workflow
Step 1 — Inventory the book
Get from user (or screenshot via review-investment-screenshot):
Stocks: ticker, qty, avg cost, current price, market value
Options: ticker, strike, expiry, qty, cost, market value
Cash + short-term: $ amount
Compute:
- Total equity value
- Cash %
- Stock %
- Options notional %
- Total leveraged exposure
Step 2 — Single-name concentration check
For each position, compute % of portfolio:
| % of book |
Status |
Action |
| < 3% |
OK |
None |
| 3-7% |
Watching |
Review thesis |
| 7-10% |
Limit |
Don't add |
| 10-15% |
High |
Trim to ≤10% |
| > 15% |
EXTREME |
Force trim to 10% (unless explicit conviction & long-term) |
Exception: User-defined "core hold" with locked thesis (e.g., NOK 19% with 1Y target $20+) — note but don't force trim.
Step 3 — Factor cluster analysis
Group positions into factor clusters:
Standard clusters for 2026:
- AI Semis (NVDA, AMD, AVGO, MU, AMUU, MSFU等杠杆 ETF)
- AI Compute / Cloud (ORCL, CRWV, NBIS, IREN, APLD)
- AI Network (TEL, ANET, CIEN, FN, HPE, NOK)
- AI Power (CEG, VST, EQT, AEP, ETR, LEU)
- AI Materials (HBM, FCX, APD, MP)
- Crypto-adjacent (COIN, HOOD, MSTR)
- Speculative growth (AFRM, SOFI, U)
- Mega-tech (GOOGL, MSFT, META, AAPL, AMZN)
- China (BABA, JD, PDD, BIDU)
- Defense/Aerospace (LMT, CSTM)
Aggregation rule:
- Same factor cluster > 25% = one bet regardless of how many tickers
- Recommend trim or cross-cluster diversification
Step 4 — Leverage / volatility decay check
Flag any:
- Daily-reset 2x/3x ETFs (MSFU, AMUU, GDXU, SOXL, TQQQ, NVDL等)
- Held >2 weeks (vol decay accumulates)
- Up >20% (rotate to LEAPS for cleaner exposure)
Action: Most leverage ETFs should be closed and rotated to LEAPS on the underlying.
Step 5 — Options aggregation (Greeks-aware)
For each option position:
- Delta (estimate): ATM = 0.5, OTM 10% = 0.35, OTM 20% = 0.25, deep ITM = 0.85
- Notional exposure: contracts × 100 × strike (full notional)
- Delta-weighted exposure: notional × delta (true equity equivalence)
- Theta risk: short-dated (< 30 days) = high decay
- IV exposure: post-earnings IV crush risk
Aggregate by underlying: if user has 6 NVDA LEAPS + 350 stock + AMD LEAPS, what's the combined NVDA+AMD delta?
Step 6 — Stress test scenarios
For each scenario, compute estimated portfolio impact:
| Scenario |
What happens |
Impact estimate |
| SPX -5% |
Mild correction |
Use beta × -5% |
| SPX -10% |
Standard pullback |
Beta × -10% + leverage ETF decay |
| NDX -15% (tech rotation) |
Mag7/AI sells off |
Heavy if cluster >30% AI |
| Yen carry unwind (USD/JPY <153) |
-8 to -22% on AI semis |
Compute by sector exposure |
| Single name -30% (e.g., NVDA earnings miss) |
If concentrated |
Show $ loss |
| VIX > 30 (volatility regime change) |
Options IV crush + delta loss |
Compute by options exposure |
| OPEC + 1973 重演 |
Energy spike + risk-off |
Show defensive vs growth |
Output: "In a -10% SPX day, your book loses ~$X (X% of total)."
Step 7 — Generate trim list + hedge recommendations
Trim list (specific orders):
| Ticker |
Qty |
$ proceeds |
Rule fired |
Tax impact |
Hedge recommendations:
| Hedge |
Cost |
Coverage |
Why |
| SPY 6/18 $XXX Put × N |
$X,XXX |
Index gap |
Macro red signal |
| Underlying-specific puts |
|
|
If single name 10%+ |
Cash target:
- Risk-on regime → 5-15% cash
- Late-cycle / yellow → 20-30%
- Yellow + binary events → 30-40%
- Red regime / crisis → 40-60%
Output format
# Portfolio Audit — [Date]
## TL;DR
- Total: $X.XX M (stocks + options + cash)
- Cash %: X% (target Y% based on macro)
- Top 3 risks: [concrete sentences]
- **Action today**: [trim X / hedge Y / hold Z]
## Position Table (top 25 by % of book)
| Ticker | Qty | Mkt Val | % of book | P&L $ | P&L % | Status | Action |
## Cluster Concentration
| Cluster | % of book | Status | Top names |
| AI Semis | XX% | 🔴 Over (>25%) | NVDA, AMD, AVGO |
| AI Power | XX% | 🟢 OK | EQT, CEG, AEP |
## Concentration Flags
- 🔴 Single-name > 15%: [list]
- 🔴 Cluster > 25%: [list]
- 🔴 Leverage ETF > 5%: [list]
## Greeks Aggregation
| Underlying | Stock notional | Options delta-weighted | Total | $ Risk |
## Stress Tests
| Scenario | Impact $ | Impact % |
| -10% SPX | -$XX,XXX | -X.X% |
| Yen carry unwind | -$XX,XXX | -X.X% |
## Trim List (orders to place today)
| Ticker | Qty | ~$ proceeds | Rule | Tax |
## Hedge Recommendations
| Hedge | Cost | Why |
## What's NOT to trim (core holds)
- [List positions to leave alone]
## Tax Considerations
- Proceeds from suggested trims: $X
- Estimated tax (LTCG/STCG mix): $X
- Net to bank: $X
- Better: hedge with puts on [list] to defer tax
## Recommended Cash Target
- Current: X%
- Target (based on macro): Y%
- Action: raise/lower by trimming/buying [list]
Hard rules (the trim ladder)
Run every position through this in order. Call the FIRST rule that fires:
| # |
Condition |
Action |
| 1 |
Daily-reset leveraged ETF held >2 weeks AND up >20% |
Trim 50%+, rotate to LEAPS |
| 2 |
Position up >100% unrealized |
Sell at least 1/3 to recover cost basis |
| 3 |
Position up >50% AND single-name >10% of book |
Trim to ≤10% |
| 4 |
Single factor cluster >25% of book |
Reduce to ≤20% by trimming most-extended in cluster |
| 5 |
At 1-year high AND earnings within 7 days |
Trim 25-50% before print |
| 6 |
Up >30% AND >40% above 200DMA (parabolic) |
Trim 25% OR set hard stop at MA20 |
| 7 |
Portfolio total unrealized >20% AND macro = late-cycle euphoria |
Reduce gross 10-15% via index hedge |
| 8 |
Up >20% but thesis broken (below MA50 in downtrend OR narrative shift) |
Exit 50%+ immediately |
| 9 |
Underwater >15% AND bear case confirmed by price |
Cut. Don't average |
| 10 |
None of above |
Hold. State trailing stop level |
Macro contextual overlays
Adjust trim aggressiveness based on macro signals (run macro-risk-check first):
- Yen carry risk active (USD/JPY < 153): Reduce semi-cluster to <20%
- Pre-major central bank meeting: Cash target 30%+
- Pre-major geopolitical summit: Hold core thesis names for upside optionality
- Energy/oil supply shock active: Defensive + reduce growth allocation
Common pitfalls
| Pitfall |
Example |
Lesson |
| Counting tickers as diversification |
6 AI semis = "diversified" |
One bet |
| Ignoring options notional |
$50K LEAPS = $200K delta |
Use Greeks |
| Trim winners, hold losers |
Sell NVDA +20%, hold INTC -50% |
Reverse — trim losers, ride winners (with stops) |
| Over-trim during stress |
Sell 50% on -3% day |
Wait for trigger or hedge instead |
| No tax plan |
Sell 1000 NOK STCG vs LTCG |
Lose 12-15% to tax |
| Hedge after the move |
Buy puts after -10% drop |
Should be pre-event, not reactive |
Tool cheat-sheet
| Need |
Tool |
| Live prices for all positions |
mcp__yfmcp__yfinance_get_ticker_info (batch) OR quote_pull.py |
| Sector classification |
mcp__yfmcp__yfinance_get_ticker_info → sector field |
| Options Greeks |
Estimate from strike/spot/days. Use mcp__yfmcp__yfinance_get_option_chain for IV |
| Insider check on top positions |
insider_ratio.py "TICKER1,TICKER2,..." --window 90 (openinsider primary; only Form 4 code "P" counts as buy) |
| Macro overlay |
Run macro-risk-check skill first |
| Tax math |
Run tax-optimize skill on each trim candidate |
| Trim execution rules |
This SKILL.md, the 10-rule ladder |
When to invoke
- User asks: "Review my portfolio"
- User asks: "Am I too concentrated"
- User asks: "What should I trim"
- User asks: "Should I hedge"
- After macro-risk-check shows YELLOW or worse
- Monthly (recommended)
- Pre-major event (Fed, BOJ, Trump-Xi, earnings cluster)
- After any position becomes >15% of book (auto-trigger)
Companion skills
This skill orchestrates these others:
macro-risk-check → regime context (run first)
analyze-stock → deep dive on questionable positions
tax-optimize → calculate trim taxes
earnings-prep → for any position with earnings <30 days
option-wall-analysis → set strike levels for hedges
leaps-screen → for ETF→LEAPS rotation (Rule #1)
review-investment-screenshot → if user provides screenshot input
Integration with existing review-investment-screenshot skill
portfolio-audit is the deeper sibling of review-investment-screenshot. Differences:
|
review-investment-screenshot |
portfolio-audit |
| Input |
Screenshot |
Manual list or screenshot |
| Depth |
7-point check |
7 steps + Greeks + clusters + tax |
| Output |
Sell list |
Sell list + hedges + cash target + stress tests |
| When |
Quick review |
Monthly deep dive |
| Audience |
Single review |
Full periodic audit |
1---2name: portfolio-audit3description: Comprehensive portfolio risk audit. Computes single-name concentration, factor cluster exposure, leverage ETF decay risk, options Greeks aggregation, stress test scenarios (-10% SPX, yen carry, single-name miss), hedge effectiveness. Outputs explicit trim list with $ amounts and reasons + cash target. Triggers in English ("review my portfolio", "audit my book", "am I too concentrated", "what should I trim", "portfolio risk check") or Chinese ("审一下我的组合", "我组合风险大吗", "该减什么仓", "组合审计", "我哪里太集中").4---56# Portfolio Audit — Full Risk Review78## Goal910A **fund-manager-level audit** of the user's entire book. Answer 6 questions definitively:11121. **Where is concentration risk?** (single-name + factor cluster)132. **What blows up in -10% SPX day?** (correlation unwind paths)143. **What's the true equity beta?** (incl. leverage ETFs and options delta)154. **Where am I over-earning?** (positions that have run too far)165. **What hedges should I add?** (gap protection)176. **What trims should I execute today?** (with $ amounts + tax considerations)1819## The 7-Step Workflow2021### Step 1 — Inventory the book2223Get from user (or screenshot via `review-investment-screenshot`):2425**Stocks**: ticker, qty, avg cost, current price, market value26**Options**: ticker, strike, expiry, qty, cost, market value27**Cash + short-term**: $ amount2829Compute:30- Total equity value31- Cash %32- Stock %33- Options notional %34- Total leveraged exposure3536### Step 2 — Single-name concentration check3738For each position, compute % of portfolio:3940| % of book | Status | Action |41|---|---|---|42| < 3% | OK | None |43| 3-7% | Watching | Review thesis |44| 7-10% | Limit | Don't add |45| 10-15% | High | Trim to ≤10% |46| > 15% | EXTREME | Force trim to 10% (unless explicit conviction & long-term) |4748**Exception**: User-defined "core hold" with locked thesis (e.g., NOK 19% with 1Y target $20+) — note but don't force trim.4950### Step 3 — Factor cluster analysis5152Group positions into factor clusters:5354**Standard clusters for 2026:**55- **AI Semis** (NVDA, AMD, AVGO, MU, AMUU, MSFU等杠杆 ETF)56- **AI Compute / Cloud** (ORCL, CRWV, NBIS, IREN, APLD)57- **AI Network** (TEL, ANET, CIEN, FN, HPE, NOK)58- **AI Power** (CEG, VST, EQT, AEP, ETR, LEU)59- **AI Materials** (HBM, FCX, APD, MP)60- **Crypto-adjacent** (COIN, HOOD, MSTR)61- **Speculative growth** (AFRM, SOFI, U)62- **Mega-tech** (GOOGL, MSFT, META, AAPL, AMZN)63- **China** (BABA, JD, PDD, BIDU)64- **Defense/Aerospace** (LMT, CSTM)6566**Aggregation rule**:67- Same factor cluster > 25% = **one bet** regardless of how many tickers68- Recommend trim or cross-cluster diversification6970### Step 4 — Leverage / volatility decay check7172Flag any:73- **Daily-reset 2x/3x ETFs** (MSFU, AMUU, GDXU, SOXL, TQQQ, NVDL等)74- **Held >2 weeks** (vol decay accumulates)75- **Up >20%** (rotate to LEAPS for cleaner exposure)7677**Action**: Most leverage ETFs should be **closed and rotated to LEAPS** on the underlying.7879### Step 5 — Options aggregation (Greeks-aware)8081For each option position:82- **Delta** (estimate): ATM = 0.5, OTM 10% = 0.35, OTM 20% = 0.25, deep ITM = 0.8583- **Notional exposure**: contracts × 100 × strike (full notional)84- **Delta-weighted exposure**: notional × delta (true equity equivalence)85- **Theta risk**: short-dated (< 30 days) = high decay86- **IV exposure**: post-earnings IV crush risk8788**Aggregate by underlying**: if user has 6 NVDA LEAPS + 350 stock + AMD LEAPS, what's the combined NVDA+AMD delta?8990### Step 6 — Stress test scenarios9192For each scenario, compute estimated portfolio impact:9394| Scenario | What happens | Impact estimate |95|---|---|---|96| **SPX -5%** | Mild correction | Use beta × -5% |97| **SPX -10%** | Standard pullback | Beta × -10% + leverage ETF decay |98| **NDX -15%** (tech rotation) | Mag7/AI sells off | Heavy if cluster >30% AI |99| **Yen carry unwind (USD/JPY <153)** | -8 to -22% on AI semis | Compute by sector exposure |100| **Single name -30% (e.g., NVDA earnings miss)** | If concentrated | Show $ loss |101| **VIX > 30 (volatility regime change)** | Options IV crush + delta loss | Compute by options exposure |102| **OPEC + 1973 重演** | Energy spike + risk-off | Show defensive vs growth |103104**Output**: "In a -10% SPX day, your book loses ~$X (X% of total)."105106### Step 7 — Generate trim list + hedge recommendations107108**Trim list** (specific orders):109| Ticker | Qty | $ proceeds | Rule fired | Tax impact |110|---|---|---|---|---|111112**Hedge recommendations**:113| Hedge | Cost | Coverage | Why |114|---|---|---|---|115| SPY 6/18 $XXX Put × N | $X,XXX | Index gap | Macro red signal |116| Underlying-specific puts | | | If single name 10%+ |117118**Cash target**:119- Risk-on regime → 5-15% cash120- Late-cycle / yellow → 20-30%121- Yellow + binary events → 30-40%122- Red regime / crisis → 40-60%123124## Output format125126```markdown127# Portfolio Audit — [Date]128129## TL;DR130- Total: $X.XX M (stocks + options + cash)131- Cash %: X% (target Y% based on macro)132- Top 3 risks: [concrete sentences]133- **Action today**: [trim X / hedge Y / hold Z]134135## Position Table (top 25 by % of book)136| Ticker | Qty | Mkt Val | % of book | P&L $ | P&L % | Status | Action |137138## Cluster Concentration139| Cluster | % of book | Status | Top names |140| AI Semis | XX% | 🔴 Over (>25%) | NVDA, AMD, AVGO |141| AI Power | XX% | 🟢 OK | EQT, CEG, AEP |142143## Concentration Flags144- 🔴 Single-name > 15%: [list]145- 🔴 Cluster > 25%: [list]146- 🔴 Leverage ETF > 5%: [list]147148## Greeks Aggregation149| Underlying | Stock notional | Options delta-weighted | Total | $ Risk |150151## Stress Tests152| Scenario | Impact $ | Impact % |153| -10% SPX | -$XX,XXX | -X.X% |154| Yen carry unwind | -$XX,XXX | -X.X% |155156## Trim List (orders to place today)157| Ticker | Qty | ~$ proceeds | Rule | Tax |158159## Hedge Recommendations160| Hedge | Cost | Why |161162## What's NOT to trim (core holds)163- [List positions to leave alone]164165## Tax Considerations166- Proceeds from suggested trims: $X167- Estimated tax (LTCG/STCG mix): $X168- Net to bank: $X169- Better: hedge with puts on [list] to defer tax170171## Recommended Cash Target172- Current: X%173- Target (based on macro): Y%174- Action: raise/lower by trimming/buying [list]175```176177## Hard rules (the trim ladder)178179Run **every position** through this in order. Call the FIRST rule that fires:180181| # | Condition | Action |182|---|---|---|183| 1 | Daily-reset leveraged ETF held >2 weeks AND up >20% | **Trim 50%+**, rotate to LEAPS |184| 2 | Position up >100% unrealized | **Sell at least 1/3** to recover cost basis |185| 3 | Position up >50% AND single-name >10% of book | **Trim to ≤10%** |186| 4 | Single factor cluster >25% of book | **Reduce to ≤20%** by trimming most-extended in cluster |187| 5 | At 1-year high AND earnings within 7 days | **Trim 25-50%** before print |188| 6 | Up >30% AND >40% above 200DMA (parabolic) | **Trim 25%** OR set hard stop at MA20 |189| 7 | Portfolio total unrealized >20% AND macro = late-cycle euphoria | **Reduce gross 10-15%** via index hedge |190| 8 | Up >20% but thesis broken (below MA50 in downtrend OR narrative shift) | **Exit 50%+** immediately |191| 9 | Underwater >15% AND bear case confirmed by price | **Cut.** Don't average |192| 10 | None of above | **Hold.** State trailing stop level |193194## Macro contextual overlays195196Adjust trim aggressiveness based on macro signals (run `macro-risk-check` first):197- **Yen carry risk active (USD/JPY < 153)**: Reduce semi-cluster to <20%198- **Pre-major central bank meeting**: Cash target 30%+199- **Pre-major geopolitical summit**: Hold core thesis names for upside optionality200- **Energy/oil supply shock active**: Defensive + reduce growth allocation201202## Common pitfalls203204| Pitfall | Example | Lesson |205|---|---|---|206| Counting tickers as diversification | 6 AI semis = "diversified" | One bet |207| Ignoring options notional | $50K LEAPS = $200K delta | Use Greeks |208| Trim winners, hold losers | Sell NVDA +20%, hold INTC -50% | Reverse — trim losers, ride winners (with stops) |209| Over-trim during stress | Sell 50% on -3% day | Wait for trigger or hedge instead |210| No tax plan | Sell 1000 NOK STCG vs LTCG | Lose 12-15% to tax |211| Hedge after the move | Buy puts after -10% drop | Should be pre-event, not reactive |212213## Tool cheat-sheet214215| Need | Tool |216|---|---|217| Live prices for all positions | `mcp__yfmcp__yfinance_get_ticker_info` (batch) OR `quote_pull.py` |218| Sector classification | `mcp__yfmcp__yfinance_get_ticker_info` → `sector` field |219| Options Greeks | Estimate from strike/spot/days. Use `mcp__yfmcp__yfinance_get_option_chain` for IV |220| Insider check on top positions | `insider_ratio.py "TICKER1,TICKER2,..." --window 90` (openinsider primary; only Form 4 code "P" counts as buy) |221| Macro overlay | Run `macro-risk-check` skill first |222| Tax math | Run `tax-optimize` skill on each trim candidate |223| Trim execution rules | This SKILL.md, the 10-rule ladder |224225## When to invoke226227- User asks: "Review my portfolio"228- User asks: "Am I too concentrated"229- User asks: "What should I trim"230- User asks: "Should I hedge"231- After macro-risk-check shows YELLOW or worse232- Monthly (recommended)233- Pre-major event (Fed, BOJ, Trump-Xi, earnings cluster)234- After any position becomes >15% of book (auto-trigger)235236## Companion skills237238This skill orchestrates these others:239- `macro-risk-check` → regime context (run first)240- `analyze-stock` → deep dive on questionable positions241- `tax-optimize` → calculate trim taxes242- `earnings-prep` → for any position with earnings <30 days243- `option-wall-analysis` → set strike levels for hedges244- `leaps-screen` → for ETF→LEAPS rotation (Rule #1)245- `review-investment-screenshot` → if user provides screenshot input246247## Integration with existing review-investment-screenshot skill248249`portfolio-audit` is the **deeper sibling** of `review-investment-screenshot`. Differences:250251| | review-investment-screenshot | portfolio-audit |252|---|---|---|253| Input | Screenshot | Manual list or screenshot |254| Depth | 7-point check | 7 steps + Greeks + clusters + tax |255| Output | Sell list | Sell list + hedges + cash target + stress tests |256| When | Quick review | Monthly deep dive |257| Audience | Single review | Full periodic audit |