@@ -120,7 +120,7 @@ class SabrCondDistABC(sabr.SabrABC, abc.ABC):
120
120
fwd_cv = False
121
121
122
122
@abc .abstractmethod
123
- def fwd_vol_eff (self , fwd , texp ):
123
+ def cond_spot_sigma (self , fwd , texp ):
124
124
# return (fwd, vol, weight) each 1d array
125
125
pass
126
126
@@ -134,7 +134,7 @@ def price(self, strike, spot, texp, cp=1):
134
134
#else:
135
135
kk = strike / fwd
136
136
137
- fwd_eff , vol_eff , ww = self .fwd_vol_eff (fwd , texp )
137
+ fwd_eff , vol_eff , ww = self .cond_spot_sigma (fwd , texp )
138
138
# print(f'E(F) = {np.sum(fwd_eff*ww)}')
139
139
if self .fwd_cv :
140
140
fwd_eff /= np .sum (fwd_eff * ww )
@@ -203,9 +203,7 @@ def zhat_weight(self, vovn):
203
203
ww = ww [:, None ]
204
204
return zhat , ww
205
205
206
- def cond_int_var (self , vovn , zhat , fwd ):
207
- betac = 1.0 - self .beta
208
- alpha = self .sigma / np .power (fwd , betac ) #if self.beta > 0.0 else self.sigma
206
+ def cond_int_var (self , vovn , zhat ):
209
207
210
208
m1 = self .condvar_m1 (zhat , vovn )
211
209
m2 = self .condvar_m2 (zhat , vovn )
@@ -232,12 +230,12 @@ def cond_int_var(self, vovn, zhat, fwd):
232
230
assert r_var .shape == w2 .shape
233
231
return r_var , r_vol , w2
234
232
235
- def fwd_vol_eff (self , fwd , texp ):
233
+ def cond_spot_sigma (self , fwd , texp ):
236
234
alpha , betac , rhoc , rho2 , vovn = self ._variables (fwd , texp )
237
235
rho_alpha = self .rho * alpha
238
236
239
237
zhat , w0 = self .zhat_weight (vovn ) # column vectors
240
- r_var , r_vol , w123 = self .cond_int_var (vovn , zhat , fwd )
238
+ r_var , r_vol , w123 = self .cond_int_var (vovn , zhat )
241
239
w0123 = w0 * w123
242
240
243
241
r_vol *= rhoc # matrix
0 commit comments