在点之间绘制高斯图

时间:2015-07-07 14:24:37

标签: python pandas matplotlib

嗨我实际上有一个点列表,我想在这些点之间绘制高斯曲线以生成某种时间序列。

例如,我在这里使用日期范围

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"等等。

我不知道如何做到这一点。

谢谢

2 个答案:

答案 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()

Basic Gauss Random Walk

答案 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])

enter image description here