




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第八章沪深300指数预测Python金融数据分析与应用(微课版)目录CONTENTS沪深300指数概述8.1数据说明与预处理8.2沪深300指数分析8.3沪深300指数走势预测8.4案例报告——基于数据挖掘的沪深300指数走势预测8.58.1沪深300指数概述8.1沪深300指数概述沪深300指数是我国股票市场的重要指标之一,由上海和深圳证券市场中市值高、流动性好的300只股票组成,反映了我国A股市场的整体表现。该指数具有较强的市场代表性和良好的投资跟踪价值,被广泛应用于业绩评价、投资研究和金融产品创新等领域。随着我国资本市场的进一步开放,沪深300指数在国际金融市场中的影响力也在不断提升。1代表性强:覆盖了沪深两市中市值高、流动性好的上市公司,能够较好地反映市场整体趋势。234行业覆盖广泛:覆盖了多个行业,包括金融、消费、工业、能源等,有助于投资者构建多元化的投资组合。市场影响力大:作为我国股市的重要基准指数,沪深300指数对市场情绪和投资者行为有着显著的影响。投资跟踪工具多样化:基于沪深300指数的交易所交易基金(ExchangeTradedFund,ETF)、指数基金、期货和期权等金融产品丰富,为投资者提供了多样化的投资和风险管理工具。8.2数据说明与预处理8.2数据说明与预处理使用pandas读取Excel文件“沪深300指数历史行情数据.xlsx”,并展示数据结构,将“日期”字段设置为DataFrame的索引,以便后续研究指数走势,示例代码如下:8.2.1数据说明importpandasaspddata=pd.read_excel('沪深300指数历史行情数据.xlsx')#将“日期”列转换为日期时间类型,并设置“日期”为索引data['日期']=pd.to_datetime(data['日期'])data.set_index('日期',inplace=True)data.tail()#展示最后5行数据8.2数据说明与预处理8.2.2数据预处理在进行数据分析之前,必须对原始数据进行预处理,以确保数据质量并满足后续分析需求,基本步骤如下。步骤1数据清洗。检查并处理重复值、缺失值和异常值步骤2数据指标计算与选取。基于原始数据构建新的特征或变量以构建预测模型print('数据集中是否存在重复值:\n',any(data.duplicated()))#重复值检查print('数据集中是否存在缺失值:\n',any(data.isnull()))#缺失值检查data.dropna(inplace=True)#删除缺失值#构建目标变量Y:收盘价的涨跌data['涨跌']=data['涨跌幅'].apply(lambdax:1ifx>0else0)#选择特征和目标变量features=data[['开盘','收盘','最高','最低','成交量','成交额','日收益率','SMA20','RSI12','MACD线','MACD信号线','MACD柱状线','K线','D线','J线']]target=data['涨跌']8.3沪深300指数分析8.3沪深300指数分析沪深300指数的描述性分析是对数据集的基本特征进行总结和概括。这包括计算交易数据的基本统计量,如均值、中位数、标准差、最小值和最大值等。通过这些统计量,可以初步了解沪深300指数的整体表现。8.3.1沪深300指数描述性分析#新建特征和目标变量的数据副本用于可视化data_features_target=features.copy()#新建特征的数据副本进行分析data_features_target['涨跌']=target#在新建副本上增加目标变量Y的数据列#描述性统计data_features_target.describe().T8.3沪深300指数分析8.3.2沪深300指数可视化分析cou=data_features_target['涨跌'].value_counts()plt.bar(cou.index,cou.values,color=['lightgray','green'])plt.xlabel('涨跌情况')plt.ylabel('频数')plt.xticks([0,1],rotation=0)#注意:若需在条形图上方显示频数,需使用plt.text()函数plt.show()(1)目标变量Y(涨跌)可视化分析首先观察目标变量的分布情况,以评估数据样本分布的平衡性。8.3沪深300指数分析8.3.2沪深300指数可视化分析#分组箱线图importseabornassnsplt.figure(figsize=(14,10))fori,columninenumerate(features.columns,1):plt.subplot(3,5,i)sns.boxplot(x='涨跌',y=column,data=data_features_target)
ifi<=4:
plt.ylabel(f'{column}价(元)’)
ifi==5:
plt.ylabel(f'{column}(股)’)
ifi==6:
plt.ylabel(f'{column}(元)')plt.grid(False)#去除网格线plt.tight_layout()plt.show()(2)目标变量Y(涨跌)与各特征变量可视化分析由于目标变量属于定性变量,其他各特征变量均为定量变量,因此可绘制分组箱线图,用于观察各特征变量与目标变量的数据关系。8.3沪深300指数分析8.3.2沪深300指数可视化分析#绘制开盘、收盘与SMA20的时间序列图plt.rcParams['font.sans-serif']='SimHei'#设置中文显示plt.figure(figsize=(10,5))plt.plot(data_features_target.index,data_features_target[‘开盘’],label=‘开盘价(元)')plt.plot(data_features_target.index,data_features_target[‘收盘’],label=‘收盘价(元)',linestyle=':')plt.plot(data_features_target.index,data_features_target['SMA20'],label='SMA20',linestyle='--')plt.xlabel('年')plt.ylabel(‘收盘价(元)')plt.legend()plt.show()(3)各特征变量可视化分析步骤1了解长期趋势。8.3沪深300指数分析8.3.2沪深300指数可视化分析#经典风格K线图importmplfinanceasmpf#重命名列以符合mplfinance的要求data_candle=data_features_target.copy()m=(data_candle.index>=‘2023-05-01’)&(data_candle.index<‘2024-05-24’)#截取部分数据以显示价格变动data_candle=data_candle[m]data_candle.rename(columns={'开盘':'Open','最高':'High','最低':'Low','收盘':'Close','成交量':'Volume'},inplace=True)#创建一个包含必要列的新DataFramedata_candlestick=data_candle[['Open','High','Low','Close','Volume']]#绘制经典风格K线图mpf.plot(data_candlestick,type='candle',mav=(5,20),volume=True,style='classic',ylabel='Price',ylabel_lower='Volume',datetime_format='%Y-%m',tight_layout=True,show_nontrading=False)(3)各特征变量可视化分析步骤2观察短期波动。8.3沪深300指数分析8.3.2沪深300指数可视化分析#绘制日收益率时间序列图plt.figure(figsize=(10,5))plt.plot(data_features_target.index,data_features_target['日收益率'],label='日收益率')plt.xlabel('年')plt.ylabel('日收益率')plt.show()(3)各特征变量可视化分析步骤3了解市场动态。绘制日收益率时间序列图。#绘制RSI12指标图plt.figure(figsize=(10,5))plt.plot(data_features_target.index,data_features_target['RSI12'],label='RSI12')plt.axhline(y=30,color='grey',linestyle='--')plt.axhline(y=70,color='grey',linestyle='--')plt.xlabel('年')plt.ylabel('RSI12值')plt.show()步骤4通过技术指标辅助判断市场趋势和股票的潜在买卖时机,分别绘制RSI12指标图、MACD指标图以及KDJ指标图。8.4沪深300指数走势预测8.4沪深300指数走势预测模型构建前需进行训练集和测试集的划分,本案例选择预测一个完整年度数据,因此将2019年到2022年全年数据作为训练集、2023年全年数据作为测试集。8.4.1数据准备train=data_features_target[(data_features_target.index>'2019-01-01')&(data_features_target.index<='2022-12-31')]test=data_features_target[(data_features_target.index>='2023-01-01')&(data_features_target.index<='2023-12-31')]print(len(train),len(test))8.4沪深300指数走势预测8.4.1数据准备运行代码可知,训练集有939条样本,测试集有242条样本。接下来,分别定义训练集与测试集的特征变量与目标变量,并在训练集上对数据进行标准化处理,然后使用训练集拟合对象对测试集特征进行标准化,这样处理后的数据集可以更好地用于机器学习模型的训练和预测,示例代码如下:fromsklearn.preprocessingimportStandardScaler#数据标准化X=train.drop(columns=['涨跌'])scaler=StandardScaler()X_train=scaler.fit_transform(X)y_train=train['涨跌']X_test=test.drop(columns=['涨跌'])X_test_scaled=scaler.transform(X_test)#测试集y_test=test['涨跌']8.4沪深300指数走势预测8.4.2模型训练及性能评价通过sklearn库构建3个分类模型,并输出模型的准确率、分类报告和混淆矩阵,方便进行模型评价与对比,以下仅展示随机森林的示例代码:fromsklearn.linear_modelimportLogisticRegressionfromsklearn.treeimportDecisionTreeClassifierfromsklearn.ensembleimportRandomForestClassifierfromsklearn.metricsimportaccuracy_score,classification_report,confusion_matrix,roc_curve,auc#随机森林forest_clf=RandomForestClassifier(random_state=1)#固定随机种子forest_clf.fit(X_train,y_train)forest_clf_pred=forest_clf.predict(X_test)forest_clf_prob=forest_clf.predict_proba(X_test)[:,1]forest_clf_acc=accuracy_score(y_test,forest_clf_pred)forest_clf_cm=confusion_matrix(y_test,forest_clf_pred)forest_clf_fpr,forest_clf_tpr,_=roc_curve(y_test,forest_clf_prob)forest_clf_auc=auc(forest_clf_fpr,forest_clf_tpr)print('随机森林准确率:',forest_clf_auc)print('随机森林分类报告:\n',classification_report(y_test,forest_clf_pred))print('随机森林混淆矩阵:\n',forest_clf_cm)同时,绘制ROC曲线和AUC值,便于进一步解释模型效果,示例代码如下:#绘制ROC曲线plt.figure(figsize=(6,5))plt.rcParams['font.sans-serif']='SimHei'#设置中文显示plt.plot(forest_clf_fpr,forest_clf_tpr,label=f'随机森林(AUC={forest_clf_auc:.2f})',linestyle='--')plt.plot([0,1],[0,1],linestyle='--')plt.xlim([0.0,1.0])plt.ylim([0.0,1.05])plt.xlabel('FPR')plt.ylabel('TPR')plt.title('ROC曲线')plt.legend(loc="lowerright")plt.show()代码运行结果可提供模型对比的分析基础。8.4沪深300指数走势预测8.4.3模型预测结果通过模型性能评价和综合对比,选择性能最佳的模型随机森林进行沪深300指数走势预测,示例代码如下:y_pred=forest_clf.predict(X_test)results=pd.DataFrame({'Actual':y_test,'Predicted':y_pred})#组合实际值和预测值results.sort_values('日期',ascending=False,inplace=True)#按日期倒序排列results.head()#输出前5行结果8.5案例报告——基于数据挖掘的沪深300指数走势预测8.5案例报告——基于数据挖掘的沪深300指数走势预测沪深300指数作为我国A股市场的核心指数之一,对于投资者、金融机构以及监管层都具有重要的意义。深入了解沪深300指数的特点和应用,预测其走势,对于把握市场动态、优化投资组合和制定市场策略具有重要作用。8.5.1背景介绍本案例以沪深300指数为研究对象,通过第三方数据接口获取2019年1月2日到2024年5月23日(约5年)的每日历史行情数据,然后对数据进行筛选和整合,共有1306条数据。在数据分析前需进行数据预处理。8.5.2数据说明(1)数据清洗经检测,数据不存在重复值,但存在一定比例的缺失值,因此对缺失值进行删除后,获得1273条数据。8.5案例报告——基于数据挖掘的沪深300指数走势预测8.5.2数据说明(2)数据指标计算与选取变量变量类型变量说明因变量涨跌定性变量1代表上涨,0代表下跌自变量日期日期时间类型交易日,本案例为2019年1月2日到2024年5月23日的沪深300指数历史行情数据,已设置为索引开盘定量变量开盘价,单位:元收盘定量变量收盘价,单位:元最高定量变量最高价,单位:元最低定量变量最低价,单位:元成交量定量变量单位:股成交额定量变量单位:元日收益率定量变量反映投资在一天内的收益变化情况SMA20定量变量本数据为20日简单移动平均线RSI12定量变量本数据为12日相对强弱指标MACD线定量变量本数据为12日和26日的平滑异同移动平均线MACD信号线定量变量MACD线的移动平均线MACD柱状线定量变量MACD线与信号线之间的差异K线定量变量当前价格相对于一定时间段内的价格范围的位置D线定量变量随机值K的3周期移动平均线J线定量变量通过计算3倍的K线值减去2倍的D线值得到沪深300指数分析变量及其说明8.5案例报告——基于数据挖掘的沪深300指数走势预测8.5.3沪深300指数分析(1)沪深300指数描述性分析因变量及各特征变量计数均为1273,其中开盘价、收盘价、最高价、最低价的均值分别为4210.93元、4212.68元、4240.82元、4180.70元。(2)沪深300指数可视化分析①目标变量Y(涨跌):通过绘制目标变量Y(涨跌)的柱形图,可评估数据样本的频数统计和分布是否均衡,如图8-3所示。涨、跌的频数相差不大,分布较为均衡,其中跌的频数略微高于涨,原因预计为含有部分持平的频数。
目标变量Y(涨跌)柱形图8.5案例报告——基于数据挖掘的沪深300指数走势预测8.5.3沪深300指数分析(2)沪深300指数可视化分析②目标变量Y(涨跌)与各特征变量:
决策变量Y(涨跌)与各特征变量的分组箱线图8.5案例报告——基于数据挖掘的沪深300指数走势预测8.5.3沪深300指数分析(2)沪深300指数可视化分析③典型特征变量:开盘价、收盘价、SMA20长期趋势。价格变动及成交量短期波动8.5案例报告——基于数据挖掘的沪深300指数走势预测8.5.3沪深300指数分析(2)沪深300指数可视化分析日收益率市场波动:通过绘制日收益率时间序列图,可进一步评估长期市场收益动态。技术指标:通过RSI12、MACD及KDJ指标,可进一步评估市场风险点及买入卖出节点。观察RSI12指标图可发现,2019年2月、2020年7月和2023年1月有部分时间RSI12指标超过70,表明沪深300指数在这几个时间段可能处于超买状态,而在2020年2月、2022年3和4月有部分时间RSI12指标低于30,可能处于超卖状态。日收益率时间序列图
技术指标图从MACD指标图可知,在2019年5月、2020年4月和2022年9月等部分时间点,MACD线穿越零轴,即从负值变为正值或从正值变为负值,表示该时间段内市场动力发生重大变化,并且2020年7月的MACD
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年公共关系学课程重点试题及答案
- 2025年医保培训考试练习题及答案解析
- 体育经纪行业信用体系构建考核试卷
- 2025年护理三基理论基础知识复习经典题库及答案
- 2025年道路交通安全知识竞赛试题及答案
- 中草药保健食品市场环境与政策适应性研究考核试卷
- 品牌市场定位与竞争分析考核试卷
- 船舶无线电发射台考核试卷
- 白酒旅游与民族风情旅游融合发展考核试卷
- 扩建金属覆膜装饰材料、汽车零部件及其他配件项目报告表
- 2025年云南楚雄州金江能源集团有限公司招聘考试笔试试卷附答案
- 2025年四川南充职业技术学院引进招聘考试笔试试卷附答案
- 【艾青诗选】批注
- DL-T 748.8-2021 火力发电厂锅炉机组检修导则 第8部分:空气预热器检修
- HY/T 050-1999中空纤维超滤膜测试方法
- GB/T 9074.1-2018螺栓或螺钉和平垫圈组合件
- GB/T 7631.5-1989润滑剂和有关产品(L类)的分类第5部分:M组(金属加工)
- GB/T 24128-2018塑料塑料防霉剂的防霉效果评估
- 测量误差及数据处理课件
- 测量工具使用规范培训教材课件
- 脑电图(图谱)课件
评论
0/150
提交评论