版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
项目五金融数据分析实例《Python数据分析》(新商科微课版)陈煜军目录Content项目主题和目标01项目设计和实现02项目小结03项目思考和练习04项目主题和目标01.【项目介绍】本项目的核心是利用Python进行金融数据分析,特别是股票市场的数据分析。项目旨在通过实际案例,让学生掌握金融数据的获取、处理、分析和可视化,并理解金融数据分析在投资决策中的作用。【素质目标】1.培养学生对金融数据分析的兴趣和热情。2.诚信做人,踏实做事,保证金融数据分析的合法的和真实性。3.增强学生对金融风险的认识,理解数据分析在风险管理中的作用。【知识目标】1.理解金融数据分析的基本概念和流程。2.掌握金融数据的基本统计方法和指标,如最高值、最低值、平均值、中位数等。3.学习如何使用Python的Tushare库获取金融数据。4.了解量化投资的基本概念和方法。【技能目标】1.能够使用Python进行金融数据的获取和处理。2.掌握使用Numpy和Pandas进行数据分析和处理的基本技巧。3.学会使用Matplotlib进行数据可视化。4.能够运用所学的知识和技能进行简单的金融数据分析项目。【知识链接】量化投资是指通过数量化方式及计算机程序化发出买卖指令,以获取稳定收益为目的的交易方式。量化选股就是用数量化的方法选择确定的投资组合、判断某个公司是否值得买入的行为。采用量化选股的某个方法时,如果该公司满足了该方法的条件,则放入股票池,如果不满足,则从股票池中剔除。量化选股的方法有很多种,总的来说,可以分为公司估值法、趋势法和资金法三大类。金融数据分析,首先要保证数据分析的真实性,要保证数据分析的目的,必须是合法的、合规的,诚信做人,踏实做事。其次要意识到,相对传统的投资策略来说,需要更多的专业知识,可能面临的系统风险更大。项目设计和实现2.【情景导入】小明是金融量化助理分析师,在工作中需要获取股票行情,并将行情转化为基础的量化分析数据,现在需要编写Python程序,辅助完成股票数据的下载、分析和可视化解读工作。【思维导图】金融数据分析获取股票行情数据任务一【任务说明】使用Tushare爬取[601166.SH]股票日线数据,并保存到本地文件。Tushare是一个免费的财经数据库,拥有丰富的行业大数据内容,如股票、基金、期货、数字货币等行情数据,公司财务、基金经理等基本面数据等。/【任务设计】【任务实现】(1)注册Tushare,完善个人信息,获得接口TOKENTushare平台在使用前必须先注册,官方网站用户注册地址是/register,用浏览器打开后可以根据提示,用手机或者非gmail的邮箱免费注册用户账号(图P5-1),通过验证后,即可登录Tushare平台。首次登陆需完善个人资料并获得奖励积分后,才能获取A股日线行情。【任务实现】(2)安装tushare软件包PyCharm环境可查阅本书第二章关于软件包安装部分内容,打开可用软件包窗口在上方的搜索框输入tushare,单击左侧查找列表中的【tushare】项,再单击左下角的安装软件包按钮,系统将开始安装对应版本的tushare软件包。【任务实现】(2)安装tushare软件包Anaconda环境可以从【开始】-【所有程序】(或者所有应用)中打开【Anaconda3】的AnacondaPrompt窗口,在命令行输入pipinstalltushare,安装对应版本的tushare软件包,安装过程中如果出现pip升级提示,可参考本教材第二章2.2.4小节的内容处理。【任务实现】(3)生成数据获取代码用浏览器打开/webclient/,依次单击Tushare数据工具网页左侧菜单栏的【沪深股票】-【行情数据】前的【+】按钮,最后单击【日线行情】,右侧将打开数据调试和代码生成工具。在入参项目的【ts_code】文本框输入601166.SH,单击【生成代码】即可生成Python运行代码,代码中已经自动植入了刚注册用户的用户授权TOKEN,单击右下角的【复制】【任务实现】(3)生成数据获取代码运行后可将601166的日线行情数据爬取到本地【任务实现】(4)保存数据到文件数据读取模块实现数据源的切换和读取,读取csv文件使用pandas的read_csv函数,在最终的实现时,可以在读取文件前先通过os软件包的path.exists方法判断数据文件是否存在,如果不存在,则到tushare网站获取数据,并保存到本地文件,如果存在,则直接读取本地csv文件。(5)数据读取模块:用to_csv函数可以将爬取的数据直接保存为逗号分隔的csv文本文件,同时,为了方便地爬取数据,我们可以对程序函数化,通过输入股票代码和交易所类型两个变量参数,可以自动获取股票日线行情并保存到本地。【任务小结】从互联网获取数据可以使用爬虫,也可以借助数据平台。借助数据平台获取数据,需要安装数据平台提供的软件包,并仔细阅读不同数据平台的使用说明,参考范例程序或者使用代码调试、生成工具完成代码设计工作。获取数据后,一般要保存为本地文件,并通过文件读取模块进行互联网数据和本地文件数据源的切换和数据的读取。金融数据分析股票行情数据的排序、索引和筛选任务二【任务说明】根据需要对数据进行排序,建立索引,并从数据中筛选出相应的数据记录。例如:601166是2007年2月5日上市的股票,因此,我们如果需要提取该股票具有完整自然年度的行情数据,就应该筛选2008年-2022年的数据记录。【任务设计】【任务实现】(1)数据排序从分段代码-1运行结果可以看到,数据是以交易日期降序排列,即初始值在末尾,所以我们需要使用sort_values方法对Dataframe的数据按照交易日期字段进行进行重排【任务实现】(2)建立索引目前的索引仍然是0,1,2……,根据需要,可以使用set_index方法将“trade_date”设置成索引。【任务实现】(3)数据筛选基于前后截止日期的过滤需要用到多字段的筛选(又称为复合条件的筛选),例如我们要提取2008-2022年的数据,存入新建的daily0822变量中,可以使用pandas的dataframe进行多条件筛选方法过滤数据【任务小结】日常的数据分析中,经常要对数据进行排序和索引,根据各种不同的条件从数据中筛选出相应的数据记录。数据排序可以改变数据的排列方式;数据索引的合理使用能够保证数据的唯一性、提高数据的使用性能;数据筛选是数据分析中使用频率最高的操作之一。在Python的原生环境,常常是使用for循环在数据中进行条件筛选,导致代码比较冗长且效率不高,而在pandas或者Numpy中,可以通过软件包新增的函数方法,简单、高效地实现。金融数据分析收盘价描述统计任务三【任务说明】根据获取的601166收盘价格,计算常用描述统计指标。常用描述统计指标包括平均值、标准方差、四分位数和中位数等,利用pandas的统计函数可以直接计算出这些统计指标【任务设计】【任务实现】统计常用描述统计指标为了便于使用,可以将常用统计指标放置到一个自定义函数tongji中,并添加在if__name__=='__main__':主程序执行模块之前,直接输入tongji()调用。需要注意的是,如果数据记录有偶数条,通常取最中间的两个数值的平均数作为中位数,获取所在位置就是空值。【任务小结】描述统计简单来说就是将一系列复杂的数据,减少为几个能起到描述作用的数字。用这些有代表性的数字,来观察、描述数据的整体情况。金融数据分析统计价格波动和成交量加权平均价格任务四【任务说明】根据获取的601166数据,统计价格波动和成交量加权平均价格。【任务设计】【任务实现】(1) 统计价格波动
【价格波动】是要获取股票的历史最低价和最高价区间,准确地说是股票的最低价的最小值和股票的最高价的最大值区间。这个区间可以帮助投资者理解股票价格的波动性和潜在的风险。这个区间并不是一个特定的财务指标,而是一个由两个数据点定义的价格范围,用于展示股票在过去某一时间段内的价格波动。【任务实现】(2)计算股价的中间值股票的历史最低价和最高价的平均值是股价的中间值,【中间值】通常不作为一个独立的财务指标在投资分析中直接使用。然而,这个计算可以被视为一种简单的方式来估计股票的潜在价值区域,在某些情况下,投资者或分析师可能会参考这个平均值来评估股票当前价格相对于其历史价格波动范围的位置。如果当前价格接近历史最高价和最低价的平均值,这可能被视为股票处于其历史交易范围的中间地带。【任务实现】(3)计算收盘价成交量加权平均价格【加权平均值】是将各数值乘以相应的权数,然后加总求和得到总体值,再除以总的单位数。pandas没有内置的加权平均值函数,最简单的方式是借助Numpy计算np.array函数完成数据类型转化,np.array()的作用就是把列表转化为Numpy的numpy.ndarray类型的数组,能够使用高性能的科学计算包对数组进行处理。【任务实现】【收盘价成交量加权平均价格(简称VWAP)】
VWAP被认为是一个衡量市场平均价格的较好指标,因为它考虑了每一笔成交的成交量,从而能够反映出市场的真实交易情况。如果股票的当前价格高于VWAP,可能表明股票处于买入压力之中;如果当前价格低于VWAP,可能表明股票处于卖出压力之中。【任务实现】项目二任务一分段参考代码P5.2金融分析-3.py【任务小结】价格波动、中间值和成交量加权平均价格是股票量化分析中的一些基本指标,Numpy在进行一些诸如加权平均值之类的计算时比pandas更具优势,所以在实际操作中,可以根据需要将pandas数据类型转换为Numpy数据类型,再使用Numpy函数进行科学计算。金融数据分析月收益率分析任务五【任务说明】对601166股票进行月收益率分析研究,画出月收益率曲线图,并标注月收益率高于上四分位价格的月份。【任务设计】【任务实现】(1)筛选完整月份数据601166股票是2007年2月5日上市,因此第一个完整的月份数据从2007年3月1日开始,同理,本次数据采集日期的上一个月的最后一天,为完整月份数据的截止日期。【任务实现】(2)获取收盘价的日收益率股票的日收益率=(今日收盘价-昨日收盘价)÷昨日收盘价这里需要用到pandas中的pct_change()函数,pct_change()可以计算当前数组中元素与先前元素的相差百分比(第一条数据因为之前没有数据可以比较,输出NaN空值)。为了防止计算后数据存在缺失值或者空值影响分析结果,可以使用dropna()方法删除带有缺失值的数据。将(1)、(2)步打包成一个自定义函数,加上数据过滤参数start、end实现日期起止【任务实现】(3)索引日期规格化获取日收益率数据后,需要将日期规格化为pandas时间序列类型,才能重新采样为月收益率。之前的任务中,交易日期已转化为整型数值索引,通过pd.to_datetime函数可以转换成时间序列类型索引。常用参数是format,用下表日期格式化字符串定义原始数据格式。本任务中,日期格式为20070301,对应'%Y%m%d'【任务实现】(4)将日收益率重新采样转化为月收益率数据重采样是将时间序列从一个频率转换至另一个频率的过程,它主要有两种实现方式,分别是降采样和升采样,降采样指将高频率的数据转换为低频率,升采样则与其恰好相反,在本任务中我们需要用到降采样,降高频率的日收益率转换成低频率的月收益率。pandas的resample可以实现数据的重采样。【任务实现】(5)月收益率可视化
Python可视化首先要导入matplotlib软件包,包中的plot方法一般是用来绘制线条的,包括直线、折线等,mnthly_ret数组直接调用plot(),即可绘制简单的折线图。【任务实现】(6)标识出月收益大于上四分位价格的月份运用任务二和三介绍的方法,过滤出月收益大于上四分位价格的月份。并保存到mdates变量中【任务实现】(6)标识出月收益大于上四分位价格的月份遍历mdates数组,并用plt.scatter(x,y,color='r')散点图方法在坐标(x,y)位置绘制红色点。【任务实现】(7)添加图表元素并可视化输出使用plt.title添加标题,plt.grid()添加网格线,并为图表轴设置标题,plt.xlabel和plt.ylabel设置x、y轴标题。【任务小结】【股票月收益率】反映了股票在一个月内的涨跌幅度,可以帮助投资者评估股票的风险和收益。如果股票月收益率为正数,表明股票在这个月内上涨了;如果股票月收益率为负数,表明股票在这个月内下跌了,股票月收益率折线围绕均线上下波动。本任务中我们学习了月收益率的计算方法,同时运用matplotlib软件包进行了基本数据可视化和对收益率超过上四分位价格的月份进行红点标识。通过学习能巩固数据统计和过滤方法,掌握数据重采样流程,掌握利用matplotlib进行数据可视化时的数据传递、标题、坐标轴、图例配置以及折线、散点图绘制的方法。金融数据分析月份效应研究与可视化任务六【任务说明】对601166股票进行月份效应研究,实证研究发现,在大多数的证券市场中存在某个或某些特定月份的平均收益率年复一年显著
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 风电场生产区域检查制度
- 安全生产+警示约谈制度
- 安全生产责任制追究制度
- 测绘所生产管理制度范本
- 2026年人工智能在医疗诊断中的应用及挑战题
- 2026年新媒体运营初级笔试模拟题
- 2026年环境科学与工程研究生入学考试模拟卷
- 校长招考试题及答案
- 小王子题目及答案50个
- 2026年重阳节的菊花文化与敬老
- DB11∕T161-2024城市道路融雪技术规程
- 企业领导力与团队管理能力提升
- UL508标准中文版-2018工控产品UL中文版标准
- 矿山安全生产标准化
- 云南省建筑工程竣工报告表
- 房屋拆除工程投标方案(技术方案)
- GB/T 41339.4-2023海洋生态修复技术指南第4部分:海草床生态修复
- 固定动火区申请表、告知书、管理规定
- 二片罐行业现状与发展趋势分析
- LY/T 1694-2007松脂采集技术规程
- FZ/T 01137-2016纺织品荧光增白剂的测定
评论
0/150
提交评论