@@ -406,7 +406,7 @@ def moments_vsk(self, texp=1):
406
406
407
407
class BsmDisp (smile .OptSmileABC , Bsm ):
408
408
"""
409
- Displaced Black-Scholes-Merton model for option pricing. Displace price,
409
+ Displaced Black-Scholes-Merton model for option pricing. Displaced price,
410
410
411
411
D(F_t) = beta*F_t + (1-beta)*A
412
412
@@ -449,7 +449,7 @@ def __init__(self, sigma, beta=1, pivot=0, *args, **kwargs):
449
449
450
450
@property
451
451
def sigma (self ):
452
- return self .sigma_disp * self .beta
452
+ return self .sigma_disp * self .beta
453
453
454
454
@sigma .setter
455
455
def sigma (self , sigma ):
@@ -463,7 +463,7 @@ def disp_spot(self, spot):
463
463
spot: spot (or forward) price
464
464
465
465
Returns:
466
- Displaces spot
466
+ Displaced spot
467
467
"""
468
468
return self .beta * spot + (1 - self .beta )* self .pivot
469
469
@@ -476,7 +476,7 @@ def disp_strike(self, strike, texp):
476
476
texp: time to expiry
477
477
478
478
Returns:
479
- Displace strike
479
+ Displaced strike
480
480
"""
481
481
return self .beta * strike + (1 - self .beta )* self .forward (self .pivot , texp )
482
482
@@ -540,13 +540,7 @@ def vol_smile(self, strike, spot, texp, cp=1, model="bsm"):
540
540
kkd = self .disp_strike (strike , texp )/ fwdd
541
541
lnkd = np .log (kkd )
542
542
# self.sigma actually means self.beta * self._sigma
543
- vol = (
544
- self .sigma_disp
545
- * fwdd
546
- * np .sqrt (kkd )
547
- * (1 + lnkd ** 2 / 24 )
548
- / (1 + self .sigma ** 2 * texp / 24 )
549
- )
543
+ vol = self .sigma_disp * fwdd * np .sqrt (kkd ) * (1 + lnkd ** 2 / 24 ) / (1 + self .sigma ** 2 * texp / 24 )
550
544
elif model .lower () == "bsm-approx" :
551
545
fwd = self .forward (spot , texp )
552
546
kk = strike / fwd
@@ -558,12 +552,7 @@ def vol_smile(self, strike, spot, texp, cp=1, model="bsm"):
558
552
559
553
# self.sigma actually means self.beta * self.sigma_disp
560
554
vol = self .sigma_disp * (fwdd / fwd )* np .sqrt (kkd / kk )
561
- vol *= (
562
- (1 + lnkd ** 2 / 24 )
563
- / (1 + lnk ** 2 / 24 )
564
- * (1 + vol ** 2 * texp / 24 )
565
- / (1 + self .sigma ** 2 * texp / 24 )
566
- )
555
+ vol *= (1 + lnkd ** 2 / 24 ) / (1 + lnk ** 2 / 24 ) * (1 + vol ** 2 * texp / 24 ) / (1 + self .sigma ** 2 * texp / 24 )
567
556
else :
568
557
vol = super ().vol_smile (strike , spot , texp , model = model , cp = cp )
569
558
0 commit comments