Appendix B. Call Option Class
Example B-1 contains a class definition for a European call option in the Black-Scholes-Merton (1973) model (cf. Chapter 3, and in particular Example 3-1).
#
# Valuation of European call options in Black-Scholes-Merton Model
# incl. Vega function and implied volatility estimation
# -- class-based implementation
# bsm_option_class.py
#
from
math
import
log
,
sqrt
,
exp
from
scipy
import
stats
class
call_option
(
object
):
''' Class for European call options in BSM model.
Attributes
==========
S0 : float
initial stock/index level
K : float
strike price
T : float
maturity (in year fractions)
r : float
constant risk-free short rate
sigma : float
volatility factor in diffusion term
Methods
=======
value : float
return present value of call option
vega : float
return Vega of call option
imp_vol: float
return implied volatility given option quote
'''
def
__init__
(
self
,
S0
,
K
,
T
,
r
,
sigma
):
self
.
S0
=
float
(
S0
)
self
.
K
=
K
self
.
T
=
T
self
.
r
=
r
self
.
sigma
=
sigma
def
value
(
self
):
''' Returns option value. '''
d1
=
((
log
(
self
.
S0
/
self
.
K
)
+
(
self
.
r
+
0.5
*
self
.
sigma
**
2
)
*
self
.
T
)
/
(
self
.
sigma
*
sqrt
(
self
.
T
)))
d2
=
((
log
(
self
.
S0
/
self
.
K
)
+
(
self
.
r
-
0.5
*
self
.
sigma
**
2
)
*
self
.
T
)
/
(
self
.
sigma
*
sqrt
(
self
.
T
)))
value
=
(
self
.
S0
*
stats
.
norm
.
cdf
(
d1
,
0.0
,
1.0
)
-
self
.
K
*
exp
(
-
self
.
r
*
self
.
T
)
*
stats
.
norm
.
cdf
(
d2
,
0.0
,
1.0
))
return
value
def
vega
(
self
):
''' Returns Vega of ...
Get Python for Finance now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.