我进行月份效应的检验,输入代码如下:
月份效应
获取数据
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.patches as mpatches
#正常显示画图时出现的中文和负号
from pylab import mpl
mpl.rcParams['font.sans-serif']=['SimHei']
mpl.rcParams['axes.unicode_minus']=False
def get_daily_ret(security,start_date,end_date):
df=get_price(security, start_date,end_date, frequency='daily', fields=['open','close','high','low','volume','money'])
df.index=pd.to_datetime(df.index)
计算收益率
daily_ret=df['close'].pct_change()
删除缺失值
daily_ret=daily_ret.dropna()
return daily_ret
月度收益情况
def plot_monthly_ret(security,title):
daily_ret=get_daily_ret(security,start_date,end_date)
monthly_ret=daily_ret.resample('M').apply(lambda x:((1+x).prod()-1))
plt.rcParams['figure.figsize']=[20,5]
monthly_ret.plot()
start=monthly_ret.index[0]
end=monthly_ret.index[-1]
#显示月收益率大于3/4分位数的点
dates=monthly_ret[monthly_ret>monthly_ret.quantile(0.75)].index
for i in range(0,len(dates)):
plt.scatter(dates[i], monthly_ret[dates[i]],color='r')
labs = mpatches.Patch(color='red',alpha=.5, label="月收益率高于3/4分位")
plt.title(title+'月度收益率',size=15)
plt.legend(handles=[labs])
plt.xlabel('时间')
plt.ylabel('收益率')
plt.show()
security='000300.XSHG'
start_date='2012-01-01'
end_date='2022-04-01'
plot_monthly_ret(security,'沪深300指数')
最后Python报错:name ’get_price’ is not defined
,请问要怎么解决呀,前面已经对get_price定义了呀