我想用我的蒙特卡洛模拟计算一些概率场景,例如,在“Z”天内,动作“X”等于或大于 $“Y”的概率是多少?
我已经生成了蒙特卡罗模拟,但我卡住了,我不知道如何获得一些赔率。
到目前为止我的代码:
import numpy as np
import pandas as pd
from pandas_datareader import data as wb
import matplotlib.pyplot as plt
from scipy.stats import norm
from pandas import Series, DataFrame
%matplotlib inline
ticker = "JBSS3.SA"
data = pd.DataFrame()
data[ticker] = wb.DataReader(ticker, data_source='yahoo', start='2007-1-1')['Adj Close']
log_returns = np.log(1 + data.pct_change())
u = log_returns.mean()
var = log_returns.var()
drift = u - (0.5 * var)
stdev = log_returns.std()
np.array(drift)
drift.values
stdev.values
Z = norm.ppf(np.random.rand(10,2))
t_intervals = 30
iterations = 1000
daily_returns = np.exp(drift.values + stdev.values * norm.ppf(np.random.rand(t_intervals, iterations)))
S0 = data.iloc[-1]
price_list = np.zeros_like(daily_returns)
price_list[0] = S0
for t in range(1, t_intervals):
price_list[t] = price_list[t-1] * daily_returns[t]
data.plot (figsize = (10, 6))
log_returns.plot(figsize = (10, 6))
target = 35
plt.figure(figsize=(10,6))
plt.plot(price_list);
plt.axhline(y = target, color = 'g', linestyle = '--')
plt.xlabel('Day')
plt.ylabel('Price')
plt.show()```