第9章 股票数据量化分析_第1页
第9章 股票数据量化分析_第2页
第9章 股票数据量化分析_第3页
第9章 股票数据量化分析_第4页
第9章 股票数据量化分析_第5页
已阅读5页,还剩16页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

第9章股票数据量化分析

本章内容9.1股票数据量化分析背景与功能9.2程序设计思路9.3程序设计的步骤9.1股票数据量化分析背景与功能股票市场在金融投资领域占据越来越重要的地位。随着人工智能及大数据时代的到来,利用先进的计算机技术编写程序创建合适的数学模型快速准确地处理与分析大规模股票市场数据,从数据中洞悉更多事件,减少投资者情绪波动影响,判断市场走势、风险和盈利,从而尽可能作出理性的投资决策。本案例基于Tushare平台利用Python语言对股票市场上证指数及个股进行数据分析、进行盈利率计算,利用Matplotlib及seaborn库对股票数据、走势等进行可视化展示,以消除量化投资技术障碍,更有效专注于市场本身。9.2程序设计思路步骤1:数据获取

本程序数据来源于Tushare大数据开放平台。Tushare是一个开放的,免费的平台。其提供的数据内容包含股票、基金、期货、债券、外汇、行业大数据,同时包括了数字货币行情等区块链数据的全数据品类的金融大数据平台。Tushare返回的数据格式绝大部分都是pandas的DataFrame类型,非常便于使用Pandas、NumPy、Matplotlib、seaborn等进行数据分析和可视化。步骤2:大盘指数分析

本案例使用seaborn库对上证指数及深证指数数据进行可视化展示,直观了解大盘“收盘价”和“成交量”走势。步骤3:个股分析本案例选择了“中国电信”“建业股份”“新华联”及“南山铝业”4支股票对其进行收益计算、风险评估,并对各数据进行可视化展示。9.3程序设计的步骤1.安装tushare库tushare库为第三方库,使用前必须先安装此第三方库,可使用pipinstalltushare命令进行安装。2.导入所需第三方库导入本案例所需第三方数据库,包括Pandas,Numpy,Matplotlib的pyplot库,seaborn库,日期时间datetime库以及tushare库,并为后续统计图中能够正确显示中文及符号进行相关设置。9.3程序设计的步骤3.获取上证及深证指数数据(1)get_k_data接口本案例使用Tushare的get_k_data接口,获取上交所及深交所自1990年开市日至2021年底的所有指数数据、展示数据、了解数据属性。get_k_data,是一个统一的行情数据接口,是tushare最常用的接口之一,目的是为了获取k线数据。get_k_data(code=None,start='',end='',ktype='D',autype='qfq',index=False,retry_count=3,pause=0.001)其常用参数说明如表9-1所示。9.3程序设计的步骤9.3程序设计的步骤3.获取上证及深证指数数据获取数据说明:4.保存数据集至csv文件5.大盘指数数据预处理(1)读取数据集并查看简要信息(2)转换数据类型9.3程序设计的步骤9.3程序设计的步骤6.大盘指数总体分析fig=plt.figure(figsize=(12,5))#创建画布,尺寸为12*5axes1=fig.add_subplot(1,2,1)#添加子图axes1axes2=fig.add_subplot(1,2,2)#添加子图axes2axes1.set_title('1990-2021上证-深证指数每日收盘价走势图')sns.lineplot(x=data.date,y=data.close,hue=data.code,ax=axes1)axes2.set_title('1990-2021上证-深证每日成交量走势图')sns.lineplot(x=data.date,y=data.volume,hue=data.code,ax=axes2)plt.show()9.3程序设计的步骤9.3程序设计的步骤9.3程序设计的步骤sh_2015=data[(data.date.dt.year==2015)&(data.code=='sh')]#提取2015年上证数据sh_2015.set_index(sh_2015.date,inplace=True)#将“交易日期”设为索引#对2015年数据按“月”重采样,并对个数据进行相应聚合统计sh_2015_M=sh_2015.resample('M').agg({'open':np.mean,'close':np.mean,'high':np.max,'low':np.min,'volume':np.sum})sns.lineplot(data=sh_2015_M['volume'])#绘制2015上证月成交量走势图plt.title('2015年上证指数月成交量走势图')plt.show()sns.lineplot(data=sh_2015_M[['open','close','high','low']])#绘制2015上证其余指数走势图plt.title('2015年上证指数开盘价、收盘价、最高价、最低价走势图')plt.show()9.3程序设计的步骤7.个股分析(1)获取股票数据stocks={'中国电信':'601728','建业股份':'603948','新华联':'000620','南山铝业':'600219'}df=pd.DataFrame()#创建DataFrame用以存储股票数据forstock_codeinstocks.values():df_stock=ts.get_k_data(code=stock_code,start='2021-01-01')#读取单支股票数据(2021年至代码运行时)df=df.append(df_stock,ignore_index=True)#将获取的数据“追加”至dfdf.to_csv('stocks.csv')#保存股票数据至csv文件df.head()9.3程序设计的步骤(2)日收益率计算股票收益率是反映股票收益水平的指标。股票收益率分为算术收益率和对数收益率两种,其中算术收益率计算公式为:R=其中,Pt为t时刻的股票收盘价,Pt-1为t-1时刻的收盘价。即某股票的日收益率(算术)为其相邻两天的价格差除以其中前一天的价格。而在金融领域的实际应用中,经常使用对数收益率来计算收益率。其计算公式为:R=即某股票的日收益率(对数)为其相邻两天的价格比的对数。9.3程序设计的步骤(3)累积日收益率、平均年化收益率计算累积日收益率有助于定期确定投资价值。其计算公式为:使用每日收益率+1,并计算其累乘积。平均年化收益率可由日收益率转化而来,(一般)假设一年有252个交易日,则平均年化收益率=(1+平均年化收益率)^252-1。9.3程序设计的步骤9.3程序设计的步骤(4)个股风险分析现代投资理论创始人Markowitz假定投资风险可视为投资收益的不确定性,这种不确定性可用统计学中的方差或标准差来度量,也可以通过平均差、极差、四分位差、离散系数、偏度和峰度等统计量来衡量。其中:平均差:是表示各个变量值之间差异程度的数值之一。指各个变量值同平均数的离差绝对值的算术平均数。平均差异大,表明各标志值与算术平均数的差异程度越大,说明数据离散程度越大;反之,离散程度越小。极差:最大值与最小值之差,计算公式为:M=Max-Min它是标志值变动的最大范围,是最基本的衡量数据离散程度的方式,受极值影响较大。四分位差:是上四分位数(Q3,75%分位)与下四分位数(Q1,25%分位)的差。计算公式为:Q=Q3-Q1。四分位差反映了中间50%数据的离散程度,其数值越小,说明中间的数据越集中;其数值越大,说明中间的数据越分散。四分位差不受极值的影响。离散系数:即变异系数,为一组数据的标准差与平均数之比。计算公式为:C=std/mean。离散系数主要用于比较不同样本数据的离散程度。离散系数大,说明数据的离散程度也大;离散系数小,说明数据的离散程度也小。9.3程序设计的步骤defMeanDeviation(series):'''平均差计算'''d=np.abs(series-series.mean()).mean()returnddefMaxMinDeviation(series):'''极差计算'''d=series.max()-series.min()returnddefQuantileDeviation(series):'''四分位差计算'''d=series.quantile(0.75)-series.quantile(0.25)returnddefVariationCoef(series):'''离散系数计算'''d=series.std()/series.mean()returnddefSkewness(series):'''偏度系数计算'''returnseries.skew()defKurtosis(series):'''峰度系数计算'''returnseries.kurt()df.groupby('code')[['log_return_daily']].agg([np.mean,np.std,np.var,MeanDeviation,MaxMinDeviation,QuantileDeviation,Skewness,Kurtosis])9.3程序设计的步骤偏态(Skew)分布相对于“正态分布”,偏态系数一般可理解为均值相对于中位数、众数的偏离程度,如图9-15所示,偏态系数>0,正偏,或称为右偏;偏态系数<0,负偏,或称为左偏。在金融领域,人们更倾向于正的偏度,因为这意味着高盈利的概率更大,如上图9-14运行结果中的Skewness,“601728”负偏较大,意味着亏损的概率较大;“000620”相对于“600219”有更高概率的盈利可能。图9-15偏态分布示意图峰态系数/峰度(kurtosis),表征概率密度分布曲线在平均值处

温馨提示

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

最新文档

评论

0/150

提交评论