# `zfin review`

A per-holding performance and risk dashboard, with automated findings.

```
Usage: zfin review [opts]
```

One row per holding: sector, tax status, trailing returns
(1Y/3Y/5Y/10Y month-end total return), risk metrics (3Y+10Y
volatility/Sharpe, 5Y max drawdown), and a correlation-aware totals
row. A findings section flags concentration, sector dominance,
volatility outliers, and tiny positions. Reads
[`metadata.srf`](../config/metadata-srf.md) and
[`accounts.srf`](../config/accounts-srf.md).

## Options

| Flag            | Effect                                                                                                                       |
|-----------------|------------------------------------------------------------------------------------------------------------------------------|
| `--sort FIELD`  | Sort by `sector`, `symbol`, `weight`, `tax`, `1y`/`3y`/`5y`/`10y`, `3y-vol`/`10y-vol`, `3y-sharpe`/`10y-sharpe`, `5y-maxdd`. |
| `--asc`         | Sort ascending (default is descending for numeric fields).                                                                   |
| `--checks=MODE` | Findings engine: `all` (default), `fast` (skip long checks), `none`.                                                         |
| `--show-acked`  | Include already-acknowledged findings.                                                                                       |

Default sort groups by sector, then weight descending within each.

## Example

```bash
ZFIN_HOME=examples/pre-retirement-both zfin review
```

```
  Symbol   Sector                   Wt%       1Y       3Y  ...   3Y-SR   5Y-MaxDD    Tax%
  VTI      Diversified            66.9%   +30.2%   +23.3%  ...    1.29      24.8%   10.9%
  QQQ      Technology              3.5%   +43.1%   +29.3%  ...    1.41      32.6%    0.0%

  Findings (2 active, 0 acked, 0 resolved)
  ⚠️ VTI at 66.9% of liquid (warn at 50.0%, flag at 70.0%)
  ❌️ Diversified sector at 85.7% (warn at 60.0%, flag at 75.0%)
```

## Findings and acknowledgments

The findings header counts findings by state -- `(2 active, 0 acked, 0
resolved)`:

- **active** -- live; shown by default.
- **acked** -- you acknowledged it; hidden unless `--show-acked`.
- **resolved** -- the condition no longer holds; set by the engine.

Acknowledging a finding records your reasoning and drops it from the
active list. **That is a TUI action** -- `zfin review` only *displays*
findings and never writes acknowledgments. In the
[interactive TUI](../tui.md) Review tab, put the cursor on a finding and
press `a` to acknowledge (with an optional note), `U` to un-acknowledge,
and `v` to toggle showing acked findings. The decisions persist in
[`acknowledgments.srf`](../config/acknowledgments-srf.md) beside your
portfolio.

## See also

- [Read your portfolio](../../guides/read-your-portfolio.md#review-per-holding-performance-and-risk)
- [`acknowledgments.srf`](../config/acknowledgments-srf.md) -- where acknowledged findings persist.
- [Returns and performance](../../explanation/returns-and-performance.md) -- the metric definitions.
- [`analysis`](analysis.md) -- portfolio-level breakdowns.

---

[CLI command reference](index.md)
