《python数据分析与应用》 课件 第11章 股票数据分析可视化_第1页
《python数据分析与应用》 课件 第11章 股票数据分析可视化_第2页
《python数据分析与应用》 课件 第11章 股票数据分析可视化_第3页
《python数据分析与应用》 课件 第11章 股票数据分析可视化_第4页
《python数据分析与应用》 课件 第11章 股票数据分析可视化_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第11章股票数据分析可视化Python数据分析与应用1CONTENTS11.1知识准备11.2任务介绍11.3代码演示11.4代码补全和知识拓展目录11.5实训任务2知识准备132312知识准备11.1.1股价对数收益率11.1.2国内外金融数据接口任务介绍2511.2.1任务一绘制六只股票的K线图本章任务中将直接提取网站(/)提供的免费股票交易数据进行数据分析。当然,也可以间接提取和使用数据。即第一步从任何其他数据源下载数据保存为数据表格式(excel或csv等格式),第二步再进行读取使用。任务介绍A公司是总部位于北京的一家公募基金管理公司,在公司对外发行的全部基金产品中,有一只名为“新金融股票型”基金,该基金在投资策略上是精选具有核心竞争优势、持续增长潜力且估值水平相对合理的A股市场金融股票。从2014年1月2日到2019年9月30日,该基金重仓的股票包括浦发银行、招商银行、中信证券、海通证券、中国平安以及中国太保这6只股票。11.2.2任务二计算持仓期间的年化平均收益率和年化收益波动率代码演示372312代码演示程序通过apitoken从tusharepro网站提取数据,因此必须申请自己的apitoken才能获得授权连接并获取数据。如果申请不成功,也可以使用下载的Excel数据文件来替代。读取数据源并循环打印股票数据11.3.1读取数据1importnumpyasnp2importpandasaspd34stock_codes=['600000.SH','600036.SH','600837.SH','601688.SH','601318.SH','601601.SH']5#从tushare读取6importtushareasts7api_key=open('tushare_api_key.txt').read()8pro=_api(api_key)9foriinrange(0,6):10#读取数据11df=pro.daily(ts_code=stock_codes[i],start_date='20140102',end_date='20190930')12df=df.loc[:,['trade_date','open','high','low','close','vol']]#选取需要的列13print(df.head)2312代码演示1importnumpyasnp2importpandasaspd34stock_codes=['600000.SH','600036.SH','600837.SH','601688.SH','601318.SH','601601.SH']5#从tushare读取6importtushareasts78api_key=open('tushare_api_key.txt').read()9pro=_api(api_key)10foriinrange(0,6):11#读取数据12df=pro.daily(ts_code=stock_codes[i],start_date='20190802',end_date='20190930')13df=df.loc[:,['trade_date','open','high','low','close','vol']]#选取需要的列14df.rename(15columns={'trade_date':'Date','open':'Open','high':'High',16'low':'Low','close':'Close','vol':'Volume'},17inplace=True)#把小写改首字母大写18#改变时间次序19df['Date']=pd.to_datetime(df['Date'])#转换日期列的格式,便于作图20df.set_index(['Date'],inplace=True)#将日期列作为行索引21df=df.sort_index()#倒序,因为Tushare的数据是最近的交易日数据显示在DataFrame上方,22#倒序后方能保证作图时X轴从左到右时间序列递增。2324#绘图125#importmatplotlib.pyplotasplt26#27#plt.title(stock_codes[i])28#plt.ylabel('price')29#plt.plot(df)30#plt.show()31#绘图232importmplfinanceasmpf33importmatplotlibasmpl3435mpl.use('Tkagg')36mpf.plot(df,type='candle',style='blueskies',ylabel="price",title=stock_codes[i],37mav=(5,10),volume=True,ylabel_lower="volume(shares)")11.3.2绘制图形2312代码演示11.3.3计算年化收益率省略部分与上页相同32#计算33stock_price=df['Close']34stock_price=stock_price.dropna()#删除缺失值的行353637stock_return=np.log(stock_price/stock_price.shift(1))#计算股票的日收益率38stock_return=stock_return.dropna()#删除缺失值所在的行3940print(f'{stock_codes[i]}:================================')41return_mean=stock_return.mean()*252#计算股票的平均年化收益率42print('2014年至2019年9月的年化平均收益率\n',round(return_mean,6))#保留小数点后6位4344return_volatility=stock_return.std()*np.sqrt(252)#计算股票的年化收益波动率45print('2014年至2019年9月的年化收益波动率\n',round(return_volatility,6))1importnumpyasnp2importpandasaspd............29mpf.plot(df,type='candle',style='blueskies',ylabel="price",title=stock_codes[i],30mav=(5,10),volume=True,ylabel_lower="volume(shares)")31代码补全和知识拓展411231211.4.1代码补全将所有股票的价格归一化并画在同一张图上。所谓归一化,就是每只股票的价格都与自身2014年的价格相比较,即将股票每日价格除以2014年1月2日的价格再绘图,从而可以直观观察到股价的涨跌情况。30#所有价格归一化画在同一张图上,每只股票都与自己2014年的价格相比较31importmatplotlibasmpl32mpl.use('Tkagg')33importmatplotlib.pyplotasplt34plt.rcParams['font.sans-serif']=['MicrosoftYaHei']#支持中文35fig,ax=plt.subplots()#为了画在一张图上,就必须定义ax36foriinrange(6):37plt.legend()#自动加入legend38#将股价按照2014年首个交易日进行归1处理并且可视化39#“

”\40.plot(ax=ax,figsize=(10,5),41label='%s_归一价格'%list(stock_codes.values())[i],42linestyle='-')43plt.show()1importnumpyasnp2importpandasaspd............27df=df.sort_index()#倒序,因为Tushare的数据是最近的交易日数据显示在DataFrame上方,倒序后方能保证作图时X轴从左到右时间序列递增。28df_stock_price[i]=df29231211.4.2知识拓展:投资组合的年化收益率已有的6只股票也可以视为一个投资组合,投资者通常出于规避风险的原因持有多样化的投资组合,从而可以把投资风险分散到不同的股票中去。那么该投资组合的收益率是多少呢?41#计算42stock_price=df['Close']43stock_price=stock_price.dropna()#删除缺失值的行4445stock_return=np.log(stock_price/stock_price.shift(1))#计算股票的日收益率46stock_return=stock_return.dropna()#删除缺失值所在的行4748np_stock_price[:,i]=stock_price49np_stock_return[:,i]=stock_return50print('np_stock_return:-----\n',np_stock_return)5152return_mean=stock_return.mean()*252#计算股票的平均年化收益率53return_volatility=stock_return.std()*np.sqrt(252)#计算股票的年化收益波动率5455np_return_mean[i]=return_mean56np_return_volatility[i]=return_volatility5758#arr=np.random.random(10)#创建一个长度为10的数组,值为0~1,不包含首尾59“

”#从均匀分布中随机抽取6个从0到1的随机数60“

”#生成随机权重的一个数组6162#计算每只股票收益率之间的协方差和相关系数63#IfrowvarisTrue(default),theneachrowrepresentsa64#variable,withobservationsinthecolumns.65return_cov=np.cov(np_stock_return,rowvar=False)*252#每列代表一个变量66print('\n\nreturn_cov:------\n',return_cov)67return_corr=np.corrcoef(np_stock_return,rowvar=False)#每列代表一个变量68print('\n\nreturn_corr:------\n',return_corr)6970Rp=np.dot(np_return_mean,w)#计算投资组合的年化收益率71Vp=np.sqrt(np.dot(w,np.dot(return_cov,w.T)))#计算投资组合的年化收益波动率72print('用随机生成的权重计算得到投资组合的年化收益率',round(Rp,6))73print('用随机生成的权重计算得到投资组合的年化收益波动率',round(Vp,6))741importnumpyasnp2importpandasaspd............实训任务:下载股票数据并绘制收盘价时间序列图514要点#从文件读取df=pd.read_csv('600000.csv',encoding='utf_8_sig')(1)练习从tushare网站下载股票数据,并保存为.csv文件。(2)读入.csv文件,利用本章学习的知识,绘制蜡烛图。(3)发现所绘图中时间日期显示有问题,请使日期正常显示。实训任务41#绘制彩色图42fromcyclerimportcycler4344mc=mpf.make_marketcolors(up='red',down='green',edge='i',wick='i',volume='in',inherit=True)45mpfStyle=mpf.make_mpf_style(gridaxis='both',gridstyle='--',y_on_right=False,marketcolors=mc,46rc={'font.family':'SimHei'})47mpl.rcParams['p_cycle']=cycler(4

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论