Main Content

Create `ReplicatingVarianceSwap`

pricer object for
`VarianceSwap`

instrument using `ratecurve`

object

Create and price a `VarianceSwap`

instrument object with a
`ratecurve`

object and a `ReplicatingVarianceSwap`

pricing method using this workflow:

Use

`fininstrument`

to create a`VarianceSwap`

instrument object.Use

`ratecurve`

to specify a curve model for the`VarianceSwap`

instrument.Use

`finpricer`

to specify a`ReplicatingVarianceSwap`

pricer object for the`VarianceSwap`

instrument.

For more information on this workflow, see Get Started with Workflows Using Object-Based Framework for Pricing Financial Instruments.

For more information on the available pricing methods for a
`VarianceSwap`

instrument, see Choose Instruments, Models, and Pricers.

creates an `ReplicatingVarianceSwapPricerObj`

= finpricer(`PricerType`

,'`DiscountCurve`

',ratecurve_obj,'`VolatilitySmile`

',volatilitysmile_value,'`SpotPrce`

',spotprice_value)`ReplicatingVarianceSwap`

pricer object by
specifying `PricerType`

and sets properties
using the required name-value pair arguments
`DiscountCurve`

,
`VolatilitySmile`

, and
`SpotPrice`

.

sets optional properties
using additional name-value pairs in addition to the required arguments in
the previous syntax. For example, `ReplicatingVarianceSwapPricerObj`

= finpricer(___,`Name,Value`

)```
ReplicatingVarianceSwapPricerObj
=
finpricer("ReplicatingVarianceSwap",'DiscountCurve',ratecurve_obj,'VolatilitySmile',smiletable,'SpotPrice',1000,'CallPutBoundary',"forwardprice",'InterpMethod',"cubic")
```

creates a `ReplicatingVarianceSwap`

pricer object. You can
specify multiple name-value pair arguments.

`price` | Compute price for equity instrument with `ReplicatingVarianceSwap`
pricer |

The fair value of the future variance *K**var* is
approximated in terms of the following portfolio of options
ᴨ_{CP}:

$$\begin{array}{l}{K}_{\mathrm{var}}=\frac{2}{T}\left\{rT-\left(\frac{{S}_{0}}{{S}_{*}}{e}^{rT}-1\right)-\mathrm{log}\frac{{S}_{*}}{{S}_{0}}+{e}^{rT}{\pi}_{CP}\right\}\\ {\pi}_{CP}={\displaystyle \sum _{i}w({K}_{ip})P(S,{K}_{ip})+}{\displaystyle \sum _{i}w({K}_{ic})C(S,{K}_{ic})}\end{array}$$

Here:

Call option strikes — The call option strike are

*K*_{0}<*K*_{1c}<*K*_{2c}<*K*_{3c}… <*K*_{nc}.Put option strikes — The put option strikes are

*K*_{mp}< … <*K*_{3p}<*K*_{2p}<*K*_{1p}<*K*_{0}=*S*_{*}.*K*_{var}— is the fair value of future varianceᴨ

_{CP}— is the portfolio of call and put options*S*_{0}— is the current asset price*S*_{*}— is the boundary between the call and put option strikes (for example, the spot price*S*_{0}or forward price*S*_{0}*e*^{rT})*P*(*K*) — is the current put option price with strike*K**C*(*K*) — is the current call option price with strike*K*

If the options portfolio ᴨ_{CP} has an infinite
number of options with continuously varying strikes, it has the following payoff
function at maturity:

$$f({S}_{T})=\frac{2}{T}\left[\frac{{S}_{T}-{S}_{*}}{{S}_{*}}-\mathrm{log}\frac{{S}_{T}}{{S}_{*}}\right]$$

Since it is not possible to construct such a portfolio with an infinite number of
options and continuously varying strikes, the appropriate weights
w(*K*_{ip}) and
w(*K*_{ic}) for a portfolio
with a finite number of options and discretely varying strikes can be computed by
approximating the continuous payoff function
*f*(*S*_{T}) in a piecewise
linear fashion. Starting with the strike at
*K*_{0}, the first call option weight can be
computed as the slope of the first piecewise linear function:

$${w}_{c}({K}_{0})=\frac{f({K}_{1c})-f({K}_{0})}{{K}_{1c}-{K}_{0}}$$

The next call option weight with the strike
*K*_{1c} is computed as
the slope of the next piece-wise linear function minus the previous weight:

$${w}_{c}({K}_{1c})=\frac{f({K}_{2c})-f({K}_{1c})}{{K}_{2c}-{K}_{1c}}-{w}_{c}({K}_{0})$$

This procedure is continued for the remaining call option strikes:

$${w}_{c}({K}_{n,c})=\frac{f({K}_{n+1,c})-f({K}_{nc})}{{K}_{n+1,c}-{K}_{n,c}}-{\displaystyle \sum _{i=0}^{n-1}{w}_{c}({K}_{i,c})}$$

To compute the put option weights, a similar procedure can be used in the opposite
direction (starting from *K*_{0}):

$${w}_{p}({K}_{m,p})=\frac{f({K}_{m+1,p})-f({K}_{mp})}{{K}_{m,p}-{K}_{m+1,p}}-{\displaystyle \sum _{i=0}^{m-1}{w}_{p}({K}_{i,p})}$$

Once the fair variance is computed, the actual price paid in the market at time
*t* for the variance swap with a StartDate at time 0 is computed as
follows:

$$VarianceSwap(t)=Notional\times Disc(t,T)\times \left[\frac{t}{T}\mathrm{Re}alizedVariance(0,t)+\frac{T-t}{T}FairVariance(t,T)-StrikeVariance\right]$$

Here:

*t*is the time from the start date of the variance swap to the settle date.*T*is the time from the start date to the maturity date of the variance swap.*Disc*(*t*,*T*) is the discount factor from settle to the maturity date.*RealizedVariance*(0,*t*) is the realized variance from start date to the settle date, in basis points.*FairVariance*(*t*,*T*) is the fair variance for the remaining life of the contract as of the settle date, in basis points.*StrikeVariance*is the strike variance predetermined at inception (start date), in basis points.

[1] Demeterfi, K., Derman, E., Kamal, M., and J. Zou. “More
Than You Ever Wanted To Know About Volatility Swaps.” *Quantitative Strategies
Research Notes.* Goldman Sachs, 1999.