对于广大股民来说,看图是最直观的,尤其是大家很关心的什么时候进场和离场,也就是常说的牛市和熊市什么时候来到,好提前做准备,那就需要用到一个指标:股债利差,这个指标也是所有基金公司都特别关注的重要指标,股债利差简单来说就是沪深300的收益率 - 十年国债的收益率,或者中证500也行,如果利差越大说明买股票的收益很高,那就可以进场买股票,利差越小,说明买国债更安全一点。【股市有风险,投资需谨慎】
由于国债的收益率比较稳定,基本在3%左右,所以我就直接画沪深300的收益率即可观察出哪些年是牛市与熊市了。其中需要说明的是收益率怎么计算,一般都使用对数收益率:LN(收盘价)-LN(上一次的收盘价) 或者 LN(收盘价/上一次的收盘价)
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
data=pd.read_csv('399300.csv',encoding='gb2312')
data.rename(columns={'日期':'Date','开盘价':'Open','最高价':'High','最低价':'Low','收盘价':'Close','成交量':'Volume'},inplace=True)#把中文改英文
data=data[['Date','Close']]
data.sort_values(by=['Date'],inplace=True)#日期升序排序
date=data['Date']
date=list(map(lambda x1:x1.replace('/',''),date))
close=data['Close']
x=np.array(date)
y=np.array(np.log(close).shift(-1)-np.log(close))
plt.rcParams['font.family']=['STFangsong']
plt.rcParams['axes.unicode_minus'] = False
plt.title('Exponential Function(沪深300的收益率)')
bins=np.linspace(int(date[0]),int(date[999]),10)
plt.xticks(bins)
plt.plot(x,y,color='red')
plt.show()
其中399300.csv是沪深300的历史数据,可以在网易财经免费下载
沪深300http://quotes.money.163.com/trade/lsjysj_zhishu_399300.html
关于画图我的其余两篇文章,有兴趣的伙伴们可以看看
Python画图(直方图、多张子图、二维图形、三维图形以及图中图)https://blog.csdn.net/weixin_41896770/article/details/119798960https://blog.csdn.net/weixin_41896770/article/details/119798960
Python画图实战之画K线图【附带自动下载股票数据】https://blog.csdn.net/weixin_41896770/article/details/120634612https://blog.csdn.net/weixin_41896770/article/details/120634612
最后关于代码,map函数顺带讲解下
list(map(lambda x1:x1.replace('/',''),date))
因为日期中含有-或/,需要删除掉,那么直接替换肯定不行,date不是字符串型的,所以不能使用replace,那直接转换成字符串型呢,那也不好,转成字符串替换之后还需要转换成原来的数据类型,所以最好就是使用map函数,可以映射替换掉里面的每一行数据,其中的匿名函数也可以是自定义函数,我喜欢这样写,简洁!