agent-instructions
Use when writing project instructions for a coding agent (CLAUDE.md, AGENTS.md, or equivalent). Covers what belongs in them, what does not, structure, and…
Use when reviewing a portfolio's construction and exposure. Covers concentration, correlation, factor and sector exposure, hidden bets, and whether the portfolio expresses the intended view.
$ npx -y skills add nimadorostkar/Claude-Skills-collection --skill portfolio-review --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/portfolio-reviewContext preview
The summary Claude sees to decide when to auto-load this skill.
Use when reviewing a portfolio's construction and exposure. Covers concentration, correlation, factor and sector exposure, hidden bets, and whether the portfolio expresses the intended view.
name: portfolio-review description: Use when reviewing a portfolio's construction and exposure. Covers concentration, correlation, factor and sector exposure, hidden bets, and whether the portfolio expresses the intended view. metadata: category: finance version: 1.0.0 tags: [portfolio, correlation, exposure, diversification, factors]
Determine what a portfolio is actually betting on, which is frequently not what its owner thinks. A portfolio of twenty names can be a single concentrated bet, and the position list will not tell you that.
1. **Compute the effective number of positions** — Twenty names with a 0.85 average correlation is not twenty bets. The effective number tells you how many independent bets you actually hold, and it is usually far lower than the count. 2. **Aggregate by sector and by factor** — Sector exposure is visible. Factor exposure — a portfolio that is entirely long-duration growth, whatever the sector labels say — usually is not. 3. **Find the hidden bet** — Ten names in different sectors that all depend on the same input (interest rates, the price of oil, one customer) is one bet. This is what a correlation matrix reveals and a position list conceals. 4. **Attribute the return** — What actually drove performance? If the portfolio is up 12% and 11 points came from one position, the strategy has not been validated; one position has. 5. **Compare with the thesis** — Does the portfolio express the intended view? A portfolio built on a "value" thesis whose factor exposure is momentum has drifted. 6. **Stress it** — What does this portfolio do in a 20% market decline, a 200bp rate move, or a sector rotation?
**What a portfolio is actually betting on:**
def review(portfolio: Portfolio, returns: pd.DataFrame) -> PortfolioReview:
weights = portfolio.weights
corr = returns[portfolio.symbols].corr()
# The effective number of independent bets. A position count is a fiction
# when correlations are high.
w = weights.values
portfolio_variance = w @ returns[portfolio.symbols].cov().values @ w
weighted_avg_variance = (w**2 @ returns[portfolio.symbols].var().values)
effective_n = float(weighted_avg_variance / portfolio_variance) if portfolio_variance else 0
# Groups of positions that move together: these are ONE bet, not several.
clusters = cluster_by_correlation(corr, threshold=0.70)
# Factor exposure via regression against factor returns.
factor_betas = regress(portfolio.returns, FACTORS[["mkt", "size", "value", "momentum", "quality"]])
return PortfolioReview(
position_count=len(weights),
effective_positions=effective_n,
clusters=clusters,
factor_betas=factor_betas,
top_5_weight=float(weights.nlargest(5).sum()),
sector_exposure=portfolio.by_sector(),
)**A review that finds the bet nobody placed deliberately:**
Portfolio: 22 positions, "diversified across sectors".
Position count : 22
Effective positions : 3.4 <- this is the real number
Correlation clusters (rho > 0.70):
Cluster 1 (58% of book): NVDA, AMD, AVGO, TSM, ASML, MU, ARM, MRVL
Labelled: Technology, Semiconductors
Actual bet: AI capital expenditure. One bet, eight ways.
Cluster 2 (21%): PLTR, SNOW, DDOG, NET, CRWD
Labelled: Software, Technology
Actual bet: also AI capital expenditure, plus long-duration growth.
Correlation with cluster 1: 0.74. It is not a separate bet.
Cluster 3 (14%): JPM, BAC
Cluster 4 (7%): XOM, CVX
Factor exposure:
Market beta : 1.42 <- 42% more market risk than the index
Momentum : +0.71 <- a large, unintended momentum bet
Value : -0.58 <- short value
Quality : +0.12
Attribution, trailing 12 months (+31%):
NVDA alone : +19 points
Everything else: +12 points across 21 positions
Findings:
1. This is a leveraged bet on AI capex, wearing the costume of a diversified
22-position portfolio. 79% of the book is in two clusters that correlate
at 0.74 with each other.
2. Beta of 1.42 means a 20% market decline implies roughly -28% before any
idiosyncratic damage.
3. The return is one position. The process has not been validated.
4. The stated tA curated library of 137 production-grade skills for Claude and other AI coding agents. Every skill follows one structure, speaks with one voice, and earns its place by changing what the agent does.
Repo: nimadorostkar/Claude-Skills-collection
Use when writing project instructions for a coding agent (CLAUDE.md, AGENTS.md, or equivalent). Covers what belongs in them, what does not, structure, and…
Use when an agent needs state that survives a session or a context compaction. Covers what to persist, file-based memory, structuring notes for retrieval, and…
Use when automating agent behavior with lifecycle hooks. Covers hook events, deterministic enforcement of rules the model should not be trusted to remember,…
Use when packaging skills, commands, hooks, and MCP servers into a distributable plugin. Covers manifest structure, bundling, versioning, testing, and…
Use when writing a new skill for an AI agent. Covers scoping, description writing for reliable triggering, progressive disclosure, and the difference between a…
Use when reviewing or improving an existing agent skill. Covers triggering accuracy, content quality, redundancy with the base model, and measuring whether the…