Python代码:计算和可视化期权收益函数
这段代码使用Python的NumPy和Matplotlib库来计算和可视化一个期权的收益函数。
首先,定义了一个名为'payoff'的NumPy数组,代表不同情况下的收益。然后,使用np.dot函数计算了log_normal_samples与payoff的点积,得到目标分布下的预期收益ep。接下来,使用np.dot函数计算了y(训练后的分布)与payoff的点积,得到训练分布下的预期收益ep_trained。
接着,使用给定的values数组创建了一个NumPy数组x,并计算了y_strike数组,它表示在给定的行权价下的收益(最大为0)。
最后,使用Matplotlib库绘制了图表,其中x轴为x数组的值,y轴为y_strike数组的值,以及一些标题和标签。
代码解析:
payoff = np.array([0, 0, 0, 1, 2, 3, 4, 5])
ep = np.dot(log_normal_samples, payoff)
print('Analytically calculated expected payoff w.r.t. the target distribution: %.4f' % ep)
ep_trained = np.dot(y, payoff)
print('Analytically calculated expected payoff w.r.t. the trained distribution: %.4f' % ep_trained)
x = np.array(values)
y_strike = np.maximum(0, x - strike_price)
plt.plot(x, y_strike, 'ro-')
plt.grid()
plt.title('Payoff Function', size=15)
plt.xlabel('Spot Price', size=15)
plt.ylabel('Payoff', size=15)
plt.xticks(x, size=15, rotation=90)
plt.yticks(size=15)
plt.show()
代码解释:
payoff = np.array([0, 0, 0, 1, 2, 3, 4, 5]):定义一个NumPy数组,代表不同情况下的收益。ep = np.dot(log_normal_samples, payoff):计算目标分布下的预期收益,使用点积计算log_normal_samples与payoff的点积。ep_trained = np.dot(y, payoff):计算训练分布下的预期收益,使用点积计算y(训练后的分布)与payoff的点积。x = np.array(values):使用给定的values数组创建一个NumPy数组x。y_strike = np.maximum(0, x - strike_price):计算y_strike数组,它表示在给定的行权价下的收益(最大为0)。plt.plot(x, y_strike, 'ro-'):使用Matplotlib绘制图表,其中x轴为x数组的值,y轴为y_strike数组的值。plt.grid(), plt.title(), plt.xlabel(), plt.ylabel(), plt.xticks(), plt.yticks(), plt.show():设置图形的网格、标题、轴标签、刻度、以及显示图形。
总结:
这段代码展示了如何使用Python的NumPy和Matplotlib库来计算和可视化期权的收益函数。代码展示了如何使用点积计算目标分布和训练分布下的预期收益,以及如何使用Matplotlib绘制收益函数的图形。
原文地址: https://www.cveoy.top/t/topic/qAmx 著作权归作者所有。请勿转载和采集!