##// END OF EJS Templates
don't allow gethostbyname(gethostname()) failure to crash ipcontroller...
don't allow gethostbyname(gethostname()) failure to crash ipcontroller In some weird situations, socket.gethostbyname_ex(socket.gethostname()) can fail. Don't let this error raise, instead assume localhost and warn in these cases.

File last commit:

r3621:afabc88a
r4239:9a4de00d
Show More
mcpricer.py
45 lines | 1.5 KiB | text/x-python | PythonLexer
MinRK
update parallel demos for newparallel
r3621
def price_options(S=100.0, K=100.0, sigma=0.25, r=0.05, days=260, paths=10000):
"""
Price European and Asian options using a Monte Carlo method.
Parameters
----------
S : float
The initial price of the stock.
K : float
The strike price of the option.
sigma : float
The volatility of the stock.
r : float
The risk free interest rate.
days : int
The number of days until the option expires.
paths : int
The number of Monte Carlo paths used to price the option.
Returns
-------
A tuple of (E. call, E. put, A. call, A. put) option prices.
"""
MinRK
remove kernel examples already ported to newparallel
r3675 import numpy as np
from math import exp,sqrt
MinRK
update parallel demos for newparallel
r3621 h = 1.0/days
const1 = exp((r-0.5*sigma**2)*h)
const2 = sigma*sqrt(h)
stock_price = S*np.ones(paths, dtype='float64')
stock_price_sum = np.zeros(paths, dtype='float64')
for j in range(days):
growth_factor = const1*np.exp(const2*np.random.standard_normal(paths))
stock_price = stock_price*growth_factor
stock_price_sum = stock_price_sum + stock_price
stock_price_avg = stock_price_sum/days
zeros = np.zeros(paths, dtype='float64')
r_factor = exp(-r*h*days)
euro_put = r_factor*np.mean(np.maximum(zeros, K-stock_price))
asian_put = r_factor*np.mean(np.maximum(zeros, K-stock_price_avg))
euro_call = r_factor*np.mean(np.maximum(zeros, stock_price-K))
asian_call = r_factor*np.mean(np.maximum(zeros, stock_price_avg-K))
return (euro_call, euro_put, asian_call, asian_put)