蒙特卡洛模拟期权python
时间: 2023-10-28 18:58:59 浏览: 159
蒙特卡洛模拟是一种用于估计金融衍生品价格的方法,其中期权定价是其中的一个应用。在Python中,可以使用numpy库来生成随机数,并使用这些随机数进行蒙特卡洛模拟。
下面是一个简单的示例代码,演示如何使用蒙特卡洛模拟来估计欧式期权的价格:
```python
import numpy as np
def monte_carlo_option(S, K, r, sigma, T, num_simulations):
"""
使用蒙特卡洛模拟估计欧式期权价格
S: 标的资产当前价格
K: 期权行权价
r: 无风险利率
sigma: 标的资产的波动率
T: 期权到期时间
num_simulations: 模拟次数
"""
np.random.seed(0) # 设置随机种子,以便结果可重复
# 计算模拟路径中每一步的标的资产价格
dt = T / 252 # 假设一年有252个交易日
S_path = np.zeros((num_simulations, int(T/dt)+1))
S_path[:, 0] = S
for i in range(1, int(T/dt)+1):
epsilon = np.random.randn(num_simulations)
S_path[:, i] = S_path[:, i-1] * np.exp((r - 0.5 * sigma**2) * dt + sigma * np.sqrt(dt) * epsilon)
# 计算期权到期时的价值
option_payoff = np.maximum(S_path[:, -1] - K, 0)
# 计算期权当前的折现价值
discount_factor = np.exp(-r * T)
option_price = discount_factor * np.mean(option_payoff)
return option_price
# 示例用法
S = 100 # 标的资产当前价格
K = 100 # 期权行权价
r = 0.05 # 无风险利率
sigma = 0.2 # 标的资产的波动率
T = 1 # 期权到期时间
num_simulations = 1000000 # 模拟次数
option_price = monte_carlo_option(S, K, r, sigma, T, num_simulations)
print("Monte Carlo估计的欧式期权价格为:", option_price)
```
请注意,这只是一个简单的示例代码,未考虑股息、美式期权等情况。在实际应用中,可能需要根据具体情况进行修改和调整。
阅读全文