Curve knots (zero rates):
  BASE:         [0.02, 0.025, 0.035, 0.04, 0.045]
  PARALLEL+100: [0.03, 0.035, 0.045, 0.05, 0.055]
  KEYRATE+50:   [0.02, 0.03, 0.035, 0.04, 0.045]

PV Net Cashflow — Three-Scenario Comparison
(BASE: non-flat curve | PARALLEL+100: all knots +100bps | KEYRATE+50: 5y knot +50bps)

shape: (4, 4)
┌──────────┬────────────────┬───────────────────────┬─────────────────────┐
│ point_id ┆ pv_net_cf_base ┆ pv_net_cf_parallel100 ┆ pv_net_cf_keyrate50 │
│ ---      ┆ ---            ┆ ---                   ┆ ---                 │
│ i64      ┆ f64            ┆ f64                   ┆ f64                 │
╞══════════╪════════════════╪═══════════════════════╪═════════════════════╡
│ 1        ┆ 393072.301156  ┆ 385877.270586         ┆ 388886.515582       │
│ 2        ┆ 205109.200413  ┆ 195879.052223         ┆ 203017.602365       │
│ 3        ┆ 714502.180263  ┆ 718681.961813         ┆ 721951.019996       │
│ 4        ┆ 366506.99478   ┆ 353820.425684         ┆ 360623.644778       │
└──────────┴────────────────┴───────────────────────┴─────────────────────┘

PV Impact (vs BASE):
shape: (4, 3)
┌──────────┬────────────────┬───────────────┐
│ point_id ┆ delta_parallel ┆ delta_keyrate │
│ ---      ┆ ---            ┆ ---           │
│ i64      ┆ f64            ┆ f64           │
╞══════════╪════════════════╪═══════════════╡
│ 1        ┆ -7195.03057    ┆ -4185.785574  │
│ 2        ┆ -9230.14819    ┆ -2091.598048  │
│ 3        ┆ 4179.78155     ┆ 7448.839733   │
│ 4        ┆ -12686.569095  ┆ -5883.350002  │
└──────────┴────────────────┴───────────────┘
