Seite 1 von 1

Lokale Volatilität [Monte-Carlo-Simulation]

Verfasst: Sonntag 6. September 2020, 14:51
von doki1994
Hey Leute kann mir vielleicht jemand helfen ?
Ich habe die Standard Monte-Carlo-Simulation implementiert und muss dies durch die lokale Volatilität ersetzen.
Ich hatte eine feste volatilität die ich mit stdev gesetzt habe.
Ich muss aber jetzt die konstante volatilität durch (stdev+ 0.001*S_{t}) ersetzen S_{t} sind die Werte aus data.

import numpy as np
import pandas as pd
from pandas_datareader import data as wb
import matplotlib as mlp
import matplotlib.pyplot as plt
from scipy.stats import norm
import statsmodels.api as sm
import pylab

ticker = 'LHA.DE'
data = pd.DataFrame()
data[ticker] = wb.DataReader(ticker, data_source='yahoo', start='2018-4-1', end='2019-4-1')['Adj Close']

log_returns = np.log(1 + data.pct_change())
log_returns.tail()

u = log_returns.mean()
u

var = log_returns.var()
var

drift = u - (0.5 * var)
drift

stdev = log_returns.std()
stdev

type(drift)
type(stdev)

np.array(drift)

drift.values
stdev.values

norm.ppf(0.95)

x = np.random.rand(10, 2)
x
norm.ppf(x)

Z = norm.ppf(np.random.rand(10,2))
Z

## m=1000
t_intervals = 252
iterations = 1000

daily_returns = np.exp(drift.values + stdev.values * norm.ppf(np.random.rand(t_intervals, iterations)))
daily_returns

S0 = data.iloc[-1]
S0

price_list = np.zeros_like(daily_returns)
price_list
price_list[0]
price_list[0] = S0
price_list

for t in range(1, t_intervals):
price_list[t] = price_list[t - 1] * daily_returns[t]

price_list