嗨我实际上有一个点列表,我想在这些点之间绘制高斯曲线以生成某种时间序列。
例如,我在这里使用日期范围
import pandas as pd
a=pd.date_range(start="2015-06-16 ",end="2015-06-23 ", freq='H')
我想要一个高斯密度曲线(即正态分布)" 2015-06-16"和" 2015-06-17"。另一个介于" 2015-06-17"和" 2015-06-18"等等。
我不知道如何做到这一点。
谢谢
答案 0 :(得分:0)
假设恒定的音量和无漂移(给定您的短时间范围),以下应该有效:
import pandas as pd
import numpy as np
annualized_vol = 0.30 # i.e. 30%
delta_t = 1 / 252. / 24. # Assuming 252 days in a trading year and 24 hours in a trading day.
initial_price = 100
idx = pd.date_range(start="2015-06-16 ", end="2015-06-23 ", freq='H')
dx = pd.DataFrame(np.random.randn(len(idx)), index=idx) * annualized_vol * delta_t ** .5
(initial_price * dx.cumsum()).plot()
答案 1 :(得分:0)
import pandas as pd
import numpy as np
import scipy.stats as stats
import matplotlib.pyplot as plt
a = pd.date_range(start="2015-06-16 ",end="2015-06-23 ", freq='H')
x = np.linspace(-3, 3, 24)
norm_pdf = stats.norm.pdf(x, 0, 1)
density = np.tile(norm_pdf, (len(a)-1)/24)
fig, ax = plt.subplots(figsize=(8,6))
ax.plot(a[1:], density)
ax.set_ylim([0, 1])