Skip to content
Development
Skill

/portfolio-review

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.

From plugin
claude-skills-collection
27137 skills
Install
$ npx -y skills add nimadorostkar/Claude-Skills-collection --skill portfolio-review --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/portfolio-review

Context 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.

SKILL.md

portfolio-review.SKILL.md
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]

Portfolio Review

Purpose

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.

When to Use

  • Periodic review of holdings and exposure.
  • After a drawdown, to understand what actually drove it.
  • Before adding a position, to see what it does to the whole.
  • Assessing whether diversification is real or nominal.

Capabilities

  • Concentration analysis: position, sector, factor.
  • Correlation and effective number of positions.
  • Factor exposure: size, value, momentum, quality, volatility.
  • Hidden-bet identification.
  • Attribution: what actually drove the return.

Inputs

  • Holdings, weights, and cost basis.
  • Return history for correlation and factor analysis.
  • The stated investment thesis, so the portfolio can be checked against it.

Outputs

  • What the portfolio is actually exposed to.
  • Divergences between the intended and the actual bet.
  • Concentration risks that are not visible in the position list.

Workflow

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?

Best Practices

  • Correlation rises in a crisis. A portfolio that appears diversified in normal conditions can become a single position at the worst possible moment, and that is when it matters.
  • The effective number of bets is the honest diversification measure. Position count is not.
  • Attribution matters more than the total return. A profitable quarter driven entirely by one position tells you nothing about whether the process works.
  • Factor exposure is the most common hidden bet. Every high-growth name is a bet on rates, regardless of what sector it is classified in.
  • A position you have not reviewed in a year is a position you have forgotten why you own. Re-derive the thesis or exit.
  • Compare against a relevant benchmark. Beating the market by taking three times its risk is not skill.

Examples

**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 t
Read more
Ships withclaude-skills-collection

A 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.

Get the whole plugin
Stats
27
Stars
3
Forks
Maintained
Maintenance
Python
Language
MIT
License
1mo ago
Last commit
2mo ago
Created

Repo: nimadorostkar/Claude-Skills-collection

Other skills on claude-skills-collection.