
Python for Finance

From the previous sections, we know that for a set of input variables—S
(the present stock price), X
(the exercise price), T
(the maturity date in years), r
(the continuously compounded risk-free rate), and sigma
(the volatility of the stock, that is, the annualized standard deviation of its returns)—we could estimate the price of a call option based on the Black-Scholes-Merton option model. Recall that to price a European call option, we have the following Python code of five lines:
def bs_call(S,X,T,r,sigma): from scipy import log,exp,sqrt,stats d1=(log(S/X)+(r+sigma*sigma/2.)*T)/(sigma*sqrt(T)) d2 = d1-sigma*sqrt(T) return S*stats.norm.cdf(d1)-X*exp(-r*T)*stats.norm.cdf(d2)
After entering a set of five values, we can estimate the call price as follows:
>>>bs_call(40,40,0.5,0.05,0.25) 3.3040017284767735
On the other hand, if we know S
, X
, T
, r
, and c
, how can we estimate sigma? Here, sigma
is our implied volatility. In other words, if we are given...
Change the font size
Change margin width
Change background colour