看看我从https://www.quantopian.com/posts/python-black-and-scholes-pde-finite-difference-method抓取的一些代码-唯一的问题是我不确定为什么图形没有显示出来。我用的是顶棚。代码:
import math
import numpy as np
import pandas as pd
from scipy import stats
import matplotlib as plt
T = 1 #Time to Expiry in Years
E = 100 #Strike
r = .05 #Risk Free Rate
SIGMA = .20 #Volatility
Type = True #Type of Option True=Call False=Put
NAS = 40 #Number of Asset Steps - Higher is more accurate, but more time consuming
ds = 2 * E / NAS #Asset Value Step Size
dt = (0.9/NAS/NAS/SIGMA/SIGMA) #Time Step Size
NTS = int(T / dt) + 1 #Number of
value_matrix = np.zeros((int(NAS+1), int(NTS)))
asset_price = np.arange(NAS*ds,-1,-ds)
value_matrix[:,-1]= np.maximum(asset_price - E,0)
for x in range(1,NTS):
value_matrix[-1,-x-1] = value_matrix[-1,-x]* math.exp(-r*dt)
for x in range(1,int(NTS)):
for y in range(1,int(NAS)):
#Evaluate Option Greeks
Delta = (value_matrix[y-1,-x] - value_matrix[y+1,-x]) / 2 / ds
value_matrix[y+1,-x]
Gamma = (value_matrix[y-1,-x] - (2 * value_matrix[y,-x]) + value_matrix[y+1,-x]) / ds / ds
Theta = (-.5 * SIGMA**2 * asset_price[y]**2 * Gamma) - (r * asset_price[y] * Delta) + (r * value_matrix[y,-x])
value_matrix[y,-x-1] = value_matrix[y,-x] - Theta * dt
value_matrix[0,-x-1] = 2 * value_matrix[1,-x-1] - value_matrix[2,-x-1]
value_df = pd.DataFrame(value_matrix)
value_df = value_df.set_index(asset_price)
print(value_df[0])
plot_df = value_df.sort_index(ascending=True)
plot_df[0].plot()
plot_df[NTS-1].plot()
您已将
matplotlib
本身导入为plt
。一般不这样做。相反,您希望导入matplotlib.pyplot
。这样,您就可以在matplotlib
中执行所有常规的绘图,例如plt.plot()
等,此外还可以显示使用pandas
绘图功能生成的任何图形,这似乎是在问题中使用的解决问题的方法是在代码末尾添加
plt.show()
,并在代码顶部使用正确的模块导入:在python中导入matplotlib时,需要使用pyplot子模块。所以您需要将import语句更改为
import matplotlib.pyplot as plt
然后要查看绘制的内容,必须添加
plt.show()
在你的代码的底部
如果你使用的是jupyter笔记本,你需要添加上面的代码。在
相关问题 更多 >
编程相关推荐