掉期

為什麼變異數交換長期偏斜?

  • July 30, 2018

我可以欣賞數學推導,但任何人都可以更直覺地解釋這一點嗎?

我經常錯誤地認為,由於複製投資組合的下行合約多於上行合約,變異數互換是長期偏斜的。但這是不正確的,這些權重只是為了確保 $vega 的風險敞口在下行和上行中是相等的。

是否與 volga 有關,即較高 vol 下行合約的 vega 將比較低 vol 合約的 vega 減少更快(由於偏斜增加)?

如果你把 Quantuple 的東西再深入一點,你就可以真正看出你是否長歪了。您也可以很容易地看到對凸性的依賴性(儘管很明顯您是長凸性)。

所以首先,我們需要一些微笑參數化,讓我們輕鬆控制凸度和傾斜度。我只是帶著一個編造的;

$$ \mathrm{convexity} = \mathrm{C} = \left. \frac{\partial^2 \sigma}{\partial K^2} \right|{K=F} \ \mathrm{skew} = \mathrm{S} = \left. \frac{\partial \sigma}{\partial K} \right|{K=F} \ \sigma_{\mathrm{atm}} = \sigma(F) $$ 這使:

$$ \frac{1}{2} C (K-F)^2 + S(K-F) + \sigma_\mathrm{atm} $$ *請注意,我理解這不是一個正確的微笑,我只是將其用作一個簡單的例子。

然後,如果您看起來非常極端的微笑;

$$ -0.001 \leqslant \mathrm{S} \leqslant 0.001\ 0 \leqslant \mathrm{C} \leqslant 0.0001\ \sigma_\mathrm{atm} = 20% $$ 在另一個答案中,您會得到一堆像 Quantuple 的圖像:

在此處輸入圖像描述 在此處輸入圖像描述 在此處輸入圖像描述 在此處輸入圖像描述

但是,我們可以做得更好:

在此處輸入圖像描述

所以,是的,你是長期偏斜的。但只有很小的一部分——你的凸度要長得多。

如果你想弄亂它,這裡是 python 程式碼。

import numpy as np

def CND(X):
 a1,a2,a3,a4,a5 = 0.31938153, -0.356563782, 1.781477937, -1.821255978, 1.330274429
 L = np.abs(X)
 K = 1.0 / (1.0 + 0.2316419 * L)
 w = 1.0 - 1.0 / np.sqrt(2*np.pi)*np.exp(-L*L/2.) * (a1*K + a2*K*K + a3*np.power(K,3) + a4*np.power(K,4) + a5*np.power(K,5))
 if X<0:
   w = 1.0-w
 return w

def BlackSholes(cp,S,X,T,r,v):
 d1 = (np.log(S/X)+(r+v*v/2.)*T)/(v*np.sqrt(T))
 d2 = d1-v*np.sqrt(T)
 if cp=='c':
   return S*CND(d1)-X*np.exp(-r*T)*CND(d2)
 else:
   return X*np.exp(-r*T)*CND(-d2)-S*CND(-d1)

def C(S,X,T,r,v):
   return BlackSholes("c", S, X, T, r, v)
def P(S,X,T,r,v):
   return BlackSholes("p", S, X, T, r, v)

def B(r,t):
   return np.exp(-r*t)

def vol(k, vol_atm, convexity, skew, atm=100, max_vol=1):
   v = 0.5*convexity*k**2 + (skew - convexity*atm)*k + vol_atm + 0.5*convexity*atm**2 - skew*atm
   return max(1e-5,min(v, max_vol))

import scipy.integrate as integrate
import scipy.special as special
def var_swap(S,T,r,atm_vol, convexity, skew):
   F = S/B(r,T)
   return np.sqrt((2 / (T*B(r,T))) * (integrate.quad(lambda k: P(S, k, T, r, vol(k, atm_vol, convexity, skew, atm=F)) * k**-2, 0, F)[0] + integrate.quad(lambda k: C(S, k, T, r, vol(k, atm_vol, convexity, skew, atm=F)) * k**-2, F, F*5)[0]))


r = 0.0
T = 1.0
S = 100.0
F = S/B(r,T)
print F
atm_vol = 0.2
convexity = 0.0001
skew = 0.001


ks = [k for k in range(1, int(F*2))]

n_scenarios = 20
skews = np.linspace(-skew, skew, n_scenarios)
convexities = np.linspace(0, convexity, n_scenarios)

plot_smiles = False

if plot_smiles:

 import colorsys
 blues = [colorsys.hsv_to_rgb(h, 1, 1) for h in np.linspace(0.5, 0.65, n_scenarios)]
 reds = [colorsys.hsv_to_rgb(h, 1, 1) for h in np.linspace(0.0, 0.15, n_scenarios)]

 from matplotlib import pyplot
 fig = pyplot.figure()
 ax_smiles = fig.add_subplot(1,1,1)
 ax_opts = ax_smiles.twinx()

 for i, (convexity, skew) in enumerate(zip(convexities, skews)):
   vols = [vol(k, atm_vol, convexity, skew, atm=F) for k in ks]
   opts = [BlackSholes("p" if k < F else "c", S, k, T, r, vol(k, atm_vol, convexity, skew, atm=F)) * k**-2 for k in ks]

   ax_smiles.plot(ks, vols, color=blues[i])
   ax_opts.plot(ks, opts, color=reds[i])

 pyplot.show()

else:

 CC = np.linspace(0, convexity,n_scenarios)
 SS = np.linspace(-skew, skew,n_scenarios)

 CC, SS = np.meshgrid(CC, SS)

 VV = np.empty(CC.shape)
 for i in range(CC.shape[0]):
   for j in range(CC.shape[1]):
     VV[i,j] = var_swap(S, T, r, atm_vol, CC[i,j], SS[i,j])

 from mpl_toolkits.mplot3d import Axes3D
 from matplotlib import cm
 from matplotlib.ticker import LinearLocator, FormatStrFormatter
 import matplotlib.pyplot as plt

 fig = plt.figure()
 ax = fig.gca(projection='3d')
 surf = ax.plot_surface(CC, SS, VV, rstride=1, cstride=1, cmap=cm.jet, linewidth=0, antialiased=True)

 ax.set_xlabel("Convexity")
 ax.set_ylabel("Skew")
 ax.set_zlabel("Var. Swap par rate")
 ax.set_ylim(ax.get_ylim()[::-1])

 plt.show()

不過這裡有一個警告——這是變異數交換的理論值。市場不會根據理論值交易這些,存在差異,我還沒有看到一種解釋方法。對此的解決方案是您儲存一個 varswap par rate spread 表,可以在相應的開始和結束日期對其進行插值並應用於 varswap。

這種價差並非來自隨機波動率,在我看來,這似乎是某種保險,可以在發生某些事情時應對令人不快的巨額成本。另一種選擇是交易走廊變異數掉期(即僅當指數在走廊內時才會產生變異數),以限制這種下行的可能性。

但是,您可以通過上述交易輕鬆獲得偏斜敞口,如果僅在底層證券高於/低於某個水平時才會產生差異,那麼當底層證券接近障礙時您將做多/空頭偏斜 - 因為當您只看點的一側,歪斜和凸度有類似的效果。

正如我在評論中提到的那樣,認為輸入變異數交換具體等於“長期偏斜”是錯誤的。

但是,您可以說的是,在沒有跳躍的情況下(即在純擴散框架中,請參閱此處此處以獲取更多資訊),公平變異數罷工 $ K_{var} $ 與名義上的變異數交換 $ N $ 和回報

$$ N \times ( \sigma^2_{\text{realised}}(0,T) - K_{var} ) $$ 應以以下票面利率(或變異數罷工)進行交易

$$ K_{var} = \frac{2}{B(0,T)T} \left[ \int_0^{F(0,T)} \frac{P(K,T)}{K^2} dK + \int_{F(0,T)}^\infty \frac{C(K,T)}{K^2} dK \right] $$ 在哪裡 $ T $ 計算契約的到期日, $ \sigma^2_{\text{realised}}(0,T) $ 將在地平線上實現的對數回報的變異數 $ [0,T] $ , $ B(0,T) $ 折扣係數, $ P(K,T) $ 和 $ C(K,T) $ 有執行權的歐式期權價格 $ K $ 和成熟 $ T $ 和 $ F(0,T) $ 遠期價格。 因此,變異數掉期的價格只是 OTMF 價格曲線的比例積分:

$$ K_{var} \propto \int_0^\infty \frac{V(K,T)}{K^2} dK $$ $$ V(K,T) = \begin{cases} P(K,T) & \text{if } K < F(0,T) \ C(K,T) & \text{otherwise} \end{cases} $$ 現在,假設以下情況, $ S_0=100 $ , $ r=q=0 $ (無風險中性漂移), $ T=1 $ 以及 3 種隱含波動率形狀 $ T $ :平坦,純歪斜,純凸度。如果您計算公平變異數罷工 $ K_{var} $ 在這些不同的配置下,您會看到負偏斜正凸度都有積極的影響,而不是像您似乎指出的那樣特別偏斜。請參閱下面的模擬,其中我將“變異數價格”表示為 $ \sqrt{K_{var}}\times 100 $ 類似於對波動率指數(如 VIX)所做的事情。

在此處輸入圖像描述

引用自:https://quant.stackexchange.com/questions/27539