我正在寻找谷歌股票数据的季节性。我已经用R
成功地做到了library(quantmod)
library(TSA)
a=getYahooData("GOOGL",start=20130101,end=20160127,freq="daily")
a=log(a$Close)-lag(log(a$Close))
a=na.exclude(a)
periodogram(a)
现在我想用Python来做,因为我已经找到了更好的支持算法交易。 这是我的代码
import numpy as np
from scipy import signal
import matplotlib.pyplot as plt
import pandas_datareader.data as web
import datetime
start = datetime.datetime(2013, 1, 1)
end = datetime.datetime(2016, 1, 27)
df = web.DataReader("GOOGL", 'yahoo', start, end)
# import data from yahoo finance
z=np.array(df)
# convert data to array in order to manipulate with numpy
y=z[:,5]
# column with close prices
logR=np.diff(np.log(y))
# logarithmic returns
periodgram = signal.periodogram(logR)
plt.plot(periodgram)
plt.show()
# periodgram graph
我的Python代码有什么问题?为什么我的周期图看起来如此不同?
答案 0 :(得分:0)
periodogram
会返回一对(f, Pxx)
。你应该使用:
...
f, Pxx = signal.periodogram(logR)
plt.plot(f, Pxx)
...
它看起来仍然与R输出完全不同;也许你想要一个不同的专栏?
请注意,您可以使用以下方法直接访问pandas数据框的列:
logR = np.diff(np.log(df["Adj Close"]))
或者如果您想要关闭,请使用:
logR = np.diff(np.log(df.Close))