Solving the Floating-Leg Spread for a Par Total Return Swap
Summary
The answer describes how to choose the floating-leg spread that makes a swap’s initial value zero when the fixed leg’s value is known. It values each floating coupon using its discount factor and accrual fraction, with the coupon rate equal to the reference rate plus a constant spread. Setting that leg value equal to the fixed-leg value gives an equation that can be solved for the spread.
Because the spread enters each coupon linearly, the equation can be rearranged directly once the schedule, discount factors, reference rates, and accrual fractions are specified. The document does not explain how to configure the spread field in the RQuantLib instrument mentioned in the question. It also warns that valuing a total return swap’s fixed leg may require accounting for default probability, potentially using credit default swap market information. No worked numerical example or detailed treatment of total-return cash flows is provided.
Key ideas
- The floating leg consists of discounted accrual-weighted reference rates plus a constant spread.
- The par spread equates the present value of the floating leg to the value of the fixed leg.
- The spread can be solved from the coupon valuation equation once market inputs and payment dates are set.
- Fixed-leg valuation for a total return swap may require incorporating default risk, informed by CDS data.
- The answer does not give RQuantLib-specific instructions or a worked example.
Tags
Full text
# Valuing Total Return Swaps
# Valuing Total Return Swaps
In my quest for simulated data, I am trying to generate prices for Total Return Swaps by calculating the NPVs of the fixed and floating leg. My problem: Given the fixed leg, how do I set the spread on the floating leg so that the value of the swap at the beginning equals Zero?
On a more technical side: Using RQuantLib, I use FloatingRateBond to calculate the NPV. How exactly do I set the spread there? The documentation is a bit unclear at that point.
## Answer by ldnquant (score 4, accepted)
https://quant.stackexchange.com/a/1142
Not sure I understand your question. If I have a fixed stream of payments it has some value $V_{fixed}$ I can always solve for a spread to LIBOR by simply adding the spread $S$ to my calculated stream of LIBOR.
That is the value of the LIBOR + spread leg is $$ V_{LIBOR}(S) = \sum_{n=1}^{N} D(t_{n}) \alpha(t_{n-1},t_{n}) [L(t_{n-1},t_{n}) + S] $$ where $D(t_{n})$ is the discount factor, $\alpha$ is the day count fraction, and $L$ is the LIBOR rate. I just solve $$ V_{LIBOR}(S) = V_{fixed} $$ for S.
Computing the value of the fixed leg for a TRS might be tricky, as you have to factor in the default probability. But you can hopefully get that from the CDS market.Shown 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.