Analytic PV01 and Curve-Bump DV01 for Interest Rate Swaps
Summary
The document distinguishes an analytic swap PV01 from a market risk measure calculated by shifting rates. Analytic PV01 measures the value change from moving the fixed coupon by one basis point while holding discount factors unchanged; it is useful for valuing the effect of a fixed spread or margin. A real portfolio sensitivity instead accounts for changes in floating rates and the discount factors that affect swap cash flows. The author notes that PV01 and DV01 terminology is not consistent across providers, so the calculation matters more than the label.
For numerical risk, the explanation describes bumping the curve both up and down and using a central difference. This cancels the second order convexity contribution and approximates the linear sensitivity. A one-sided, very small bump is another option, but it retains a small convexity effect. The derivations rely on simplifying assumptions about rate impacts and schedule alignment; actual curve construction and bump conventions can therefore affect reported values.
Key ideas
- Analytic PV01 changes the fixed coupon while leaving discount factors unchanged.
- Market sensitivity also reflects how rate changes affect floating cash flows and discount factors.
- Provider labels for PV01 and DV01 vary, so users should inspect the bump convention.
- A central up and down curve bump removes the leading convexity effect from the sensitivity estimate.
- A one-sided small bump is faster but retains some convexity contribution.
Tags
Full text
# interest rate swap: PV01 vs DV01
# interest rate swap: PV01 vs DV01
Bloomberg defines `PV01` as PV of adding 1 bps on a fixed coupon , while '`DV01`' as (down - up principal) / 2 * bps shift. The resulting PVs are generally very close but could there be a case where they are significantly different? Also, with the curve shift, do we shift zero rates?
## Answer by Attack68 (score 19, accepted)
https://quant.stackexchange.com/a/49585
In traditional terminology PV01 is 'present value of a basis point' and DV01 is 'dollar value of a basis point' which might technically only different in different currencies. I have also seen it considered that DV01 is 'delta value of a basis point'. Bloomberg / and others has decided to bastardise the terminology for different types of curve bumps so I wouldn't place too much attachment to the name. Regardless..
## Analytic PV01
What I like to call analytic PV01 is when you change the value of the fixed coupon by 1bp and evaluate the impact on the IRS:
$$ P = R \sum_{i=1}^{n_i} d_i v_i - \sum_{j=1}^{n_j} r_j d_j v_j $$ $$ \frac{\partial P}{\partial R} = \underbrace{\sum_{i=1}^{n_i} d_i v_i }_{\text{analytic fixed leg}}$$
where $d$ is day fraction, $v$ the discount factors, and $r$ the floating rates. The notation here is a bit mangled because the i's and the j's might refer to schedules of different frequencies. If fixed leg is annual and float leg is semi-annual then $v_{i=1}$ is equal to $v_{j=2}$, for example.
Note that this is a useful measure for dealers calculating the exact PnL generated by applying a spread (or margin) to a fixed rate away from the mid-market rate.
## Real Portfolio PV01 / Delta / (might be called DV01)
If you transact an IRS an you want to know the (linear) risk if the market actually moves this is a slightly different calculation. Above, the discount factors did not change when the fixed rate was varied, but in the 'real' scenario the fixed rate is, well, fixed and floating rates move, so will so you also have to consider that. If you were to consider what happens if every forecast rate $r_j$ changed in parallel then you might derive the expression:
$$ \frac{\partial P}{\partial r} = \sum_{j=1}^{n_j} \frac{\partial P}{\partial r_j} = - \sum_{j=1}^{n_j} d_j v_j + \sum_{j=1}^{n_j} \left ( R \sum_{i=1}^{n_i} d_i \frac{\partial v_i}{\partial r_j} - \sum_{k=1}^{n_j} r_k d_k \frac{\partial v_k}{\partial r_j} \right )$$
Generally speaking an approximation for $\frac{\partial v_i}{\partial r_j} \approx -d_j v_i$ if the rate $r_j$ impacts $v_i$ (i.e. if the rate is before $v_i$) and zero otherwise. If the schedules were the same frequency ($n_i=n_j$) we can ignore the i,j mangling and state,
$$ \frac{\partial P}{\partial r} \approx \underbrace{- \sum_{j=1}^{n_j} d_j v_j}_{\text{analytic float leg}} +\underbrace{ \sum_{j=1}^{n_j} \left ( -R \sum_{i=j}^{n_i} d_i d_j v_i + \sum_{k=j}^{n_j} r_k d_k d_j v_k \right )}_{\text{effect of curvature and cashflows}}$$
If the curve is flat, i.e. $r_j = R \forall j$ then the curvature component is zero.
## Numerical Calculation
The method Bloomberg uses is to try and estimate the above real PV01, by using a central finite difference method to derive it. Bloomberg knows swaps have convexity so the theory is as follows.
Assume the PnL on a swap is almost its linear pnl plus its convexity:
$$ \Delta P(\Delta r) \approx \frac{\partial P}{\partial r} \Delta r + \frac{1}{2} \frac{\partial^2 P}{\partial r^2} \Delta r^2$$
Then bumping by +1bp and -1bp, dividing by 2 eliminates the convexity element and very accurately approximates the real PV01:
$$ \frac{\Delta P(+1) - \Delta P(-1)}{2} = \frac{\partial P}{\partial r} $$
Another common method of calculation is to use a single bumped curve by, say, $\frac{1}{100}$th of a bp, and scale the result by 100. Although less accurate, since the convexity is marginalised and not eliminated, the calculation is twice as fast, for example:
$$ 100 \Delta P(+\frac{1}{100}) = \frac{\partial P}{\partial r} + \frac{1}{200} \frac{\partial^2 P}{\partial r^2} $$
#### External Link
You can see an example of `rateslib` calculating what it terms `delta` and `analytic_delta` to replicate the Bloomberg values `DV01` and `PV01` respectively, https://rateslib.readthedocs.io/en/latest/z_swpm.htmlShown in full with attribution under the source's licence. Licence: CC BY-SA 4.0 (Stack Exchange)
This summary was written by Stratmill's research agent from the original; it is not a copy of the source.