From wealth-management
Generates accurate performance reports for investment portfolios with benchmarks, attribution, risk dashboards, and GIPS summaries. Useful for return calculations, quarterly reports, and client presentations.
npx claudepluginhub joellewis/finance_skills --plugin wealth-managementThis skill uses the workspace's default tool permissions.
Generate clear, accurate, and contextually rich performance reports for investment portfolios. This skill covers return calculation and presentation, benchmark comparison, attribution analysis, risk dashboards, goal progress tracking, and visualization best practices — all with an emphasis on honest, plain-language communication that serves the reader.
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Guides building MCP servers enabling LLMs to interact with external services via tools. Covers best practices, TypeScript/Node (MCP SDK), Python (FastMCP).
Generates original PNG/PDF visual art via design philosophy manifestos for posters, graphics, and static designs on user request.
Generate clear, accurate, and contextually rich performance reports for investment portfolios. This skill covers return calculation and presentation, benchmark comparison, attribution analysis, risk dashboards, goal progress tracking, and visualization best practices — all with an emphasis on honest, plain-language communication that serves the reader.
8 — Reporting & Communication
retrospective
Accurate and consistent return calculation is the foundation of all performance reporting.
Period returns: Report standard time periods — MTD (month-to-date), QTD (quarter-to-date), YTD (year-to-date), 1Y, 3Y, 5Y, 10Y, and since inception. Always state the exact inception date.
Cumulative vs annualized: Annualize returns only for periods greater than 1 year. Annualizing a 3-month return is misleading because it implies the rate is sustainable for a full year. For periods under 1 year, report cumulative (total) returns only.
(1 + cumulative_return)^(1/years) - 1Gross vs net of fees: Always specify whether returns are gross or net of management fees, advisory fees, and transaction costs. Net-of-fee returns are what the investor actually experiences and should be the primary presentation. If showing gross returns, also show the fee drag.
GIPS (Global Investment Performance Standards): For institutional reporting, follow GIPS requirements — composite construction, full disclosure, verified calculations, and standardized presentation. Even for non-GIPS reports, the principles of fair representation and full disclosure apply.
Time-weighted vs money-weighted returns:
A return number in isolation is meaningless. Context requires a benchmark.
Appropriate benchmark selection: The benchmark must match the portfolio's investment style, geography, capitalization, and asset class mix. A US large-cap equity portfolio should be compared to the S&P 500 or Russell 1000, not the MSCI Emerging Markets Index.
Active return (alpha): Portfolio return minus benchmark return. Positive alpha indicates outperformance; negative alpha indicates underperformance.
Tracking error: The standard deviation of active returns (portfolio return minus benchmark return) over time. Measures the consistency of active management.
Information ratio: Alpha divided by tracking error. Measures the efficiency of active management — how much excess return is generated per unit of active risk. An IR above 0.5 is generally considered good; above 1.0 is exceptional.
Complement return reporting with risk metrics to give a complete picture.
Current snapshot metrics:
Rolling metrics: Show how risk evolves over time, not just a point-in-time estimate.
Risk exposure breakdown:
Explain why the portfolio outperformed or underperformed.
Brinson attribution (allocation vs selection):
Factor contribution decomposition: Decompose returns into contributions from market beta, size, value, momentum, quality, and other factors. The residual is the manager's idiosyncratic alpha.
Top/bottom contributors (holdings-level):
For goal-based investors, frame performance in terms of progress toward their specific objectives.
On-track assessment: Is the portfolio on track, behind, or ahead relative to the financial plan?
Probability of success: Use Monte Carlo simulation to estimate the probability of reaching the goal given current assets, savings rate, time horizon, and expected return/risk assumptions. Express as a percentage (e.g., "82% probability of funding retirement at age 65").
Projected vs required return: Compare the return needed to reach the goal with the expected return of the current portfolio. If the required return exceeds what is reasonable, flag this as a planning gap.
Milestone tracking: Express progress as percentage of goal funded. For example: "Retirement goal: $2,000,000. Current portfolio: $850,000. 42.5% funded with 15 years remaining."
Charts communicate faster than tables. Choose the right chart for the message.
Growth of $10,000 chart: Shows cumulative wealth growth of portfolio vs benchmark over time. Intuitive for all audiences. Use log scale for long time periods to avoid visual distortion from compounding.
Rolling return chart: Shows trailing 12-month or 36-month returns over time. Reveals consistency and regime changes. More informative than a single annualized number.
Drawdown chart: Shows peak-to-trough declines over time. Viscerally communicates risk in a way that volatility numbers cannot.
Asset allocation pie/bar chart: Current allocation vs target/benchmark. Use a grouped bar chart to show both side by side.
Risk-return scatter plot: Plot portfolio and benchmark (and possibly peer group) on an annualized return vs annualized volatility plane. Positions in the upper-left (high return, low risk) are desirable.
The most important reporting skill is translating numbers into meaning.
Given: A balanced portfolio (60% equity / 40% fixed income) returned 3.2% in Q3 (benchmark: 2.8%). YTD the portfolio returned 8.1% vs 7.5% for the benchmark. The portfolio Sharpe ratio is 0.85 over the trailing 12 months. Equity selection in technology (+0.3%) and an underweight in energy (-0.1%) were the main attribution drivers.
Analysis:
Headline: The portfolio outperformed its benchmark by 0.4 percentage points in Q3 and 0.6 percentage points YTD, driven by strong stock selection in technology.
Return summary table:
| Period | Portfolio | Benchmark | Active Return |
|---|---|---|---|
| Q3 | +3.2% | +2.8% | +0.4% |
| YTD | +8.1% | +7.5% | +0.6% |
Attribution highlights:
Risk context:
Plain-language summary for the client: "Your portfolio gained 3.2% this quarter, beating the benchmark by about half a percent. Year-to-date, you are ahead of the benchmark by a similar margin. The main driver was our technology stock picks, which outperformed the broader tech sector. We remain on track relative to your long-term financial plan."
Given: A client has a retirement goal of $2,000,000 in today's dollars. Current portfolio value is $850,000. Time horizon is 15 years. Current annual contribution is $30,000 (increasing 3% per year). Portfolio expected return is 7% nominal, expected volatility is 12%. Inflation assumption is 2.5%.
Analysis:
Current status:
Projection (deterministic):
Projection (Monte Carlo, 10,000 simulations):
Interpretation: While the deterministic projection shows the client is on track, the Monte Carlo analysis reveals a 68% probability of success — reasonable but not highly confident. The gap between the deterministic and probabilistic views is driven by sequence-of-returns risk and volatility drag.
Recommendations to improve probability of success:
Client-facing summary: "You have $850,000 saved toward your $2,000,000 retirement goal, which is 42.5% of the way there with 15 years to go. Based on our projections, you have roughly a 68% chance of reaching your goal with your current savings plan. This is a reasonable position, but we can improve your odds by increasing your annual contribution or building in some flexibility on your retirement date."
See scripts/performance_reporting.py for computational helpers.