# `zfin milestones`

Find the dates your portfolio first reached each of a series of value
thresholds.

```
Usage: zfin milestones --step <expr> [--real]
```

Reads your snapshot/value history and reports the first date each
threshold was crossed. Two threshold modes:

- **Absolute dollar:** `1M` / `1m` / `1500000` / `1.5M` / `500K`
- **Relative multiplier:** `2x` / `1.5x` (each multiple of the starting value)

Rejects `%`, non-positive dollar steps, multipliers <= 1.0, and
NaN/Inf.

## Options

| Flag            | Effect                                                                          |
|-----------------|---------------------------------------------------------------------------------|
| `--step <expr>` | Threshold step (**required**).                                                  |
| `--real`        | Deflate to the last full Shiller year first (CPI-adjusted). Default is nominal. |

Crossing dates are "first observed at," bounded by the source series
cadence (typically weekly), so they're approximate to within a week.

## Example

```bash
ZFIN_HOME=examples/post-retirement zfin milestones --step 250K
```

```
Milestones — step $250,000.00 (nominal)

  Milestone        Date Crossed    Days Since Prev   Days Since First
  $1,750,000.00    2018-09-30      —                 1001 days
  $2,000,000.00    2021-02-14      868 days          1869 days
  $2,250,000.00    2023-04-09      784 days          2653 days
  $2,500,000.00    2025-04-01      723 days          3376 days
```

## See also

- [Snapshots and history](../../guides/snapshots-and-history.md) -- builds the series this reads.
- [`history`](history.md) -- the full value timeline.

---

[CLI command reference](index.md)
