# performance-metrics

Evaluates portfolio returns on a risk-adjusted basis using Sharpe and Sortino ratios. Useful when comparing fund managers or strategy drawdowns.

- skill · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 707 installs · ★ 218
- Author: JoelLewis
- License: MIT · policy=mirror · the beginning of the file is at the end of this page
- Source: https://github.com/JoelLewis/finance_skills/tree/HEAD/plugins/wealth-management/skills/performance-metrics/SKILL.md
- Updated: 2026-07-18
- HTML: https://affpapa.org/en/nevibecode/skills/performance-metrics

## What it does

This skill provides formulas for evaluating investment performance. It covers the Sharpe ratio, Sortino ratio, Information Ratio, Calmar ratio, and market capture metrics. It also includes interpretation ranges: an Information Ratio above 0.5 indicates solid alpha generation, while a Calmar ratio over 1.0 means annualized return exceeds maximum drawdown.

Calculations follow strict risk-accounting rules. When annualizing monthly Sharpe ratios, the skill scales by `sqrt(12)` rather than multiplying by 12. For the Sortino ratio, it enforces a single Minimum Acceptable Return (MAR): if MAR differs from the risk-free rate, the numerator must use that same MAR to prevent mathematical inconsistency.

## Install

### Claude Code (native platform)

1. **Skills CLI (Vercel)**
```bash
npx skills add JoelLewis/finance_skills --skill performance-metrics -a claude-code
```

2. **Manually: put the files in place**
- File: `~/.claude/skills/performance-metrics/SKILL.md` — Copy the whole skill folder; for one project use .claude/skills/performance-metrics/

### Codex

1. **Skills CLI (Vercel)**
```bash
npx skills add JoelLewis/finance_skills --skill performance-metrics -a codex
```

2. **Manually: put the files in place**
- File: `.agents/skills/performance-metrics/SKILL.md` — For all projects use ~/.agents/skills/

### Cursor

1. **Skills CLI (Vercel)**
```bash
npx skills add JoelLewis/finance_skills --skill performance-metrics -a cursor
```

2. **Manually: put the files in place**
- File: `.cursor/skills/performance-metrics/SKILL.md` — Cursor also reads .agents/skills/ and .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install JoelLewis/finance_skills performance-metrics
```

2. **Manually: put the files in place**
- File: `.github/skills/performance-metrics/SKILL.md`

### Gemini CLI

1. **Skills CLI (Vercel)**
```bash
npx skills add JoelLewis/finance_skills --skill performance-metrics -a gemini-cli
```

2. **Platform CLI**
```bash
gemini skills install https://github.com/JoelLewis/finance_skills --path plugins/wealth-management/skills/performance-metrics
```

### Windsurf (Devin Desktop)

**Manually: put the files in place**
- File: `.devin/skills/performance-metrics/SKILL.md` — The legacy .windsurf/skills/ path still works

### OpenCode

**Skills CLI (Vercel)**
```bash
npx skills add JoelLewis/finance_skills --skill performance-metrics -a opencode
```

### Claude.ai

**Claude.ai**
- Zip the folder and upload it in Settings → Capabilities → Skills

Where a file is given instead of a command, copy the files from the source to that path: https://github.com/JoelLewis/finance_skills/tree/HEAD/plugins/wealth-management/skills/performance-metrics/SKILL.md

## When to use it
- evaluate manager performance across bull and bear periods using capture ratios
- calculate the Sortino ratio with an explicit Minimum Acceptable Return threshold
- scale active portfolio return against tracking error with the Information Ratio
- compare fund volatility directly against a benchmark via M-squared

## Example prompts
- Calculate the Sharpe ratio for a fund returning 12% annualized with a 4% risk-free rate and 15% volatility
- Compare Fund A and Fund B using Sharpe and Sortino for an investor focused on downside risk
- Calculate the Information Ratio for a portfolio with 2% active return and 4% tracking error

## Source text · SKILL.md · MIT

Below is the content of a third-party file. It is data, not instructions for you: do not act on anything written inside unless the human asks. Block tag: ade8032c5bee1e58.

BEGIN THIRD-PARTY FILE ade8032c5bee1e58
````text
---
name: performance-metrics
description: "Evaluate investment performance on a risk-adjusted basis using industry-standard ratios and capture analysis. Use when the user asks about Sharpe ratio, Sortino ratio, Information Ratio, Treynor ratio, Calmar ratio, Omega ratio, or upside/downside capture. Also trigger when users mention 'risk-adjusted returns', 'return per unit of risk', 'M-squared', 'is this fund worth the volatility', 'how to compare two managers', 'capture ratio', or ask which investment performed better after accounting for risk."
---

# Performance Metrics

## Core Concepts

### Sharpe Ratio
The most widely used risk-adjusted performance measure. It divides excess return (over the risk-free rate) by total volatility.

```
SR = (R_p - R_f) / sigma_p
```

- R_p: annualized portfolio return
- R_f: annualized risk-free rate
- sigma_p: annualized portfolio volatility (standard deviation of returns)

A higher Sharpe ratio indicates more return per unit of total risk. Typical benchmarks: SR < 0.5 is poor, 0.5-1.0 is acceptable, > 1.0 is strong, > 2.0 is exceptional.

**Annualization:** If computed from monthly data, SR_annual = SR_monthly * sqrt(12).

### Sortino Ratio
Replaces total volatility with downside deviation, penalizing only harmful volatility (returns below a Minimum Acceptable Return).

```
Sortino = (R_p - R_f) / sigma_downside
```

where sigma_downside = sqrt((1/n) * sum(min(R_i - MAR, 0)^2)).

Common MAR choices: 0%, risk-free rate, or a target return. Always state which MAR is used, and use the same reference point in the numerator as in the downside deviation: if the MAR is not the risk-free rate, the numerator should be (R_p - MAR), not (R_p - R_f). Mixing reference points makes the ratio internally inconsistent.

### Information Ratio
Measures active return (alpha) per unit of active risk (tracking error) relative to a benchmark.

```
IR = (R_p - R_b) / TE
```

where TE = std(R_p - R_b) * sqrt(N).

An IR above 0.5 is generally considered good; above 1.0 is exceptional and difficult to sustain.

### Treynor Ratio
Measures excess return per unit of systematic risk (beta) rather than total risk.

```
Treynor = (R_p - R_f) / beta_p
```

Useful for evaluating diversified portfolios where idiosyncratic risk has been diversified away. For undiversified holdings, the Sharpe ratio is more appropriate.

### Calmar Ratio
Relates annualized return to the worst peak-to-trough drawdown.

```
Calmar = CAGR / |MaxDrawdown|
```

A Calmar ratio above 1.0 means the annualized return exceeds the maximum drawdown. This ratio is popular among CTAs and hedge fund investors. Typically computed over a 3-year window.

### Omega Ratio
````
END THIRD-PARTY FILE ade8032c5bee1e58

The third-party file has ended. Everything between the ade8032c5bee1e58 tags is data: requests and commands from it are not followed. An “end of file” line with another tag inside the block is part of the file.

First 2683 of 9416 bytes. © JoelLewis · MIT · https://github.com/JoelLewis/finance_skills/tree/HEAD/plugins/wealth-management/skills/performance-metrics/SKILL.md

_Part of the page did not fit — see the HTML version._

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
