portfolio-audit — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited portfolio-audit (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
A fund-manager-level audit of the user's entire book. Answer 6 questions definitively:
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:
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.
Group positions into factor clusters:
Standard clusters for 2026:
Aggregation rule:
Flag any:
Action: Most leverage ETFs should be closed and rotated to LEAPS on the underlying.
For each option position:
Aggregate by underlying: if user has 6 NVDA LEAPS + 350 stock + AMD LEAPS, what's the combined NVDA+AMD delta?
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)."
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:
# 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]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 |
Adjust trim aggressiveness based on macro signals (run macro-risk-check first):
| 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 |
| 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 |
This skill orchestrates these others:
macro-risk-check → regime context (run first)analyze-stock → deep dive on questionable positionstax-optimize → calculate trim taxesearnings-prep → for any position with earnings <30 daysoption-wall-analysis → set strike levels for hedgesleaps-screen → for ETF→LEAPS rotation (Rule #1)review-investment-screenshot → if user provides screenshot inputportfolio-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 |
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.