Monte Carlo Simulation(计算某个结果的概率)(Jupyter-notebook)

时间:2021-03-21 16:52:51

标签: python pandas jupyter-notebook

我想用我的蒙特卡洛模拟计算一些概率场景,例如,在“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()```

0 个答案:

没有答案