欧式看涨期权的蒙特卡洛估值
import math
import numpy as np
#定义模型并设定参数值
S0 = 100.
K = 105.
T = 1.0
r = 0.05
sigma = 0.2
#随机数生成器种子值固定
I = 100000
np.random.seed(1000)
#提取标准正态分布随机数
z = np.random.standard_normal(I)
#模拟期末价值
ST = S0*np.exp((r-sigma**2/2)*T+sigma*math.sqrt(T)*z)
#计算期权到期收益
hT = np.maximum(ST-K,0)
#计算蒙特卡洛估算函数
C0 = math.exp(-r*T)*np.mean(hT)
print('Value of the European call option: {:5.3f}.'.format(C0))
绘制标普500指数水平数据和波动性图表
import numpy as np
import pandas as pd
from pylab import plt,mpl
plt.style.use('seaborn')
mpl.rcParams['font.family'] = 'serif'
%matplotlib inline
data = pd.read_csv('../../source/tr_eikon_edo_data.csv',
index_col=0, parse_dates=True)
data = pd.Dateframe(data['.SPX'])
data.dropna(inplace=True) #删除NaN值
data.info()
#计算对数收益率
data['rets'] = np.log(data/data.shift(1))
#得出滚动年波动率
data['vola']=data['rets'].rolling(252).std()*np.sqrt(252)
#绘制时间序列
data[['.SPX','vola']].plot(subplots=True, figsize=(10,6))
读取苹果公司某日一个小时的分比交易数据
import eikon as ek
#读取分比交易数据
data = ek.get_timeseries('AAPL.O',fields='*',
start_date='2018-10-18 16:00:00',
end_date='2018-20-18 17:00:00',
interval='tick')
data.info()
#显示最后5行数据
data.tail()