python数据分析-量化分析

一、研究背景

随着经济的发展和金融市场的不断完善,股票投资成为了人们重要的投资方式之一。汽车行业作为国民经济的重要支柱产业,其上市公司的股票表现备受关注。Fama-French 三因子模型是一种广泛应用于股票市场的资产定价模型,它考虑了市场风险、规模因素和价值因素对股票收益的影响。通过对汽车行业上市公司股票数据的分析,可以深入了解该行业的投资特征和风险状况,为投资者提供决策参考。

二、量化分析

接下来进行量化分析

数据是十家汽车行业上市公司在2012.1.1-2021.12.31期间每日的股票交易和Fama-French三因子的数据,十家上市公司分别是:

序号

股票代码

1

000550

2

000572

3

000625

4

000800

5

002594

6

600006

7

600104

8

600418

9

601238

10

601633

每个csv数据文件中均包含以下指标:

数据集和完整代码

变量

含义

变量

含义

stkcd

证券代码

opnprc

日开盘价

year

hiprc

日最高价

month

loprc

日最低价

day

clsprc

日收盘价

trddt

交易日期

dnshr

日个股交易量

ret

日个股回报率

risk

日市场风险溢价因子

smb

日市值因子

hml

日账面市值比因子

首先利用pandas读入所提供的股票数据,保存成DataFrame格式的变量,将日期列转换成Datetime格式,并设置成为DataFrame的index。计算每只股票数据中包含多少个交易日

读取数据集

# 调整读取方法,处理日期列
stock_data = {}
for path in file_paths:# 读取CSV文件,制定分隔符为'\t'df = pd.read_csv(path, delimiter='\t')# 转换日期格式df['trddt'] = pd.to_datetime(df['trddt'])# 按日期排序df = df.sort_values(by='trddt')# 设置日期为索引df.set_index('trddt', inplace=True)# 存储处理后的DataFramestock_data[path.split('/')[-1].split('.')[0]] = df# 显示每只股票包含的交易日数量
trading_days = {stock: len(data.index) for stock, data in stock_data.items()}
trading_days

虽然所有股票都在同一时间段内被观察,但它们的交易日数量略有不同。 这可能是由于不同的市场假期、停牌、或是某些股票在该时间段内上市的时间不同所致。

接下来选择一支股票,绘制该只股票自2020年以来的K线图,并在K线图上添加30日均线

 

# 将日期列设为DataFrame的索引并按日期排序
df.set_index('date', inplace=True)
df.sort_index(inplace=True)# 筛选自2020年以来的数据
stock_002594 = df.loc['2020':]# 准备股票价格和交易量数据,用于绘图
stock_002594_mpf = stock_002594[['opnprc', 'hiprc', 'loprc', 'clsprc', 'dnshr']].copy()
stock_002594_mpf.columns = ['Open', 'High', 'Low', 'Close', 'Volume']# 计算30日均线
stock_002594_mpf['30_MA'] = stock_002594_mpf['Close'].rolling(window=30).mean()# 定义图表和坐标轴
fig, ax = plt.subplots(figsize=(16,8))# 绘制收盘价
ax.plot(stock_002594_mpf.index, stock_002594_mpf['Close'], label='收盘价', color='black')# 绘制30日均线
ax.plot(stock_002594_mpf.index, stock_002594_mpf['30_MA'], label='30日均线', color='blue')# 设置标题和坐标轴标签
ax.set_xlabel('日期')
ax.set_ylabel('价格')
ax.set_title('股票002594价格与30日均线')
ax.legend()# 设置x轴的日期格式
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m'))
ax.xaxis.set_major_locator(mdates.MonthLocator())# 旋转日期标签以便更好地显示
plt.xticks(rotation=45)# 显示网格
plt.grid(visible=True)# 显示图表
plt.show()

价格趋势:可以看到,股价在2020年至2021年间呈现出显著的上升趋势,尤其是在2020年中到2021年初,股价有一个大幅的上升期。 波动性:股价在上升期间也显示出一定的波动性,尤其是在大幅上升后,股价有过一些急剧的回调,但总体趋势依然向上。 30日均线:30日均线平滑了价格的日常波动,提供了一个关于股票短期趋势的更清晰视角。 在股价上升期,30日均线持续上升,并在大多数时间内位于日收盘价之下,这通常被视为上升趋势的确认。而在股价下跌期, 30日均线开始下降,并且在某些时段内位于日收盘价之上,可能表示一个短期内的下降趋势。 均线与价格的交叉:在图中,我们可以看到股价与30日均线 

随后利用OLS回归计算10只股票在三个因子(risk, smb, hml)上的系数,即因子暴露。将10只股票在每个因子上的因子暴露按照从大到小排序并打分(分值从大到小依次为10、8、6、4、2),计算每只股票在三个因子上的加权得分(三个因子等权重)

 

# 对每个股票进行OLS回归
for stock, data in stock_data.items():# 回归模型X = data[['risk', 'smb', 'hml']]y = data['ret']X = sm.add_constant(X)  # 添加常数项model = sm.OLS(y, X).fit()# 存储每个股票的因子暴露度factor_exposures[stock] = model.params[1:]  # 排除常数项
# 分配分数(10、8、6、4、2)
scores_mapping = {1: 10, 2: 8, 3: 6, 4: 4, 5: 2}
scores_df = ranked_exposures.applymap(lambda x: scores_mapping.get(x, 0))# 计算每只股票的加权得分
scores_df['Total Score'] = scores_df.mean(axis=1)# 结果
scores_df

从给定的分数来看,股票000800和000572的总分最高,达到了6分,这可能意味着从这三个因子的角度看,它们的投资吸引力较高。而股票000550的总分最低,为0分,可能意味着从这些因素来看,它的投资吸引力较低。

三、小结

本研究成功地读取了十家汽车行业上市公司的股票数据,并将日期列转换为 Datetime 格式,设置为 DataFrame 的 index。经过排序后,计算出了每只股票数据中包含的交易日数量。根据题目要求,选择了对应序号的股票,并绘制了该只股票自 2020 年以来的 K 线图,并添加了 30 日均线。K 线图可以直观地展示股票价格的走势,而 30 日均线则可以帮助投资者判断股票的短期趋势。利用 OLS 回归计算了 10 只股票在三个因子(risk, smb, hml)上的系数,即因子暴露。通过对因子暴露的排序和打分,计算出了每只股票在三个因子上的加权得分。这些结果可以帮助投资者了解股票的风险特征和投资价值,为投资决策提供参考。

需要注意的是,以上结论仅基于题目要求和提供的数据,实际情况可能会有所不同。在进行股票投资时,投资者还需要综合考虑其他因素,如公司基本面、行业发展趋势、宏观经济环境等。

创作不易,希望大家多点赞关注评论!!!(类似代码或报告定制可以私信)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/851780.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高效处理风电时序数据,明阳集团的 TDengine 3.0 应用实录

作为全国 500 强企业,明阳集团在风电行业拥有领先实力。目前全球超过 800 个项目采用明阳各种型号风电机组,安装数量超过 15000 台。每台风电机组配备数百至上千个监测点,生成的时序数据每秒一条,每天产生亿级以上的数据量。这些数…

IPv6 ND 协议功能概述

ND 协议功能概述 ND(Neighbor Discovery,邻居发现)协议是 IPv6 的一个关键协议,它综合了 IPv4 中的 ARP,ICMP 路由发现和 ICMP 重定向等协议,并对它们做了改进。 作为 IPv6 的基础性协议,ND 协…

AI 定位!只需一张图片就能找到你,锁定具体位置!精确到经纬度

你能猜到这张自拍的拍摄地点吗?别小瞧了AI的能力,答案可能会让你吓一跳。 这事交给现在的AI来处理,它只需要“看”一眼,就能把照片里的“底裤都给扒出来”: 美国,加利福尼亚州,旧金山机场洗手间,93号登机口…

关于Ubuntu24.04嘉立创EDA无法启动的问题

关于Ubuntu24.04嘉立创EDA无法启动的问题 查看无法启动原因解决办法1解决办法2 查看无法启动原因 在终端使用启动文件命令报错 解决办法1 输入如下命令可以正常启动 ./lceda-pro --no-sandbox 解决办法2 找到desktop文件进行修改 cd /usr/share/applications sudo vim lce…

HTML制作一个日蚀的动画特效

大家好&#xff0c;今天制作一个日蚀动画特效&#xff01; 先看具体效果&#xff1a; 使用一个逐渐扩大的圆形阴影来模拟月亮遮挡太阳的效果。使用了CSS的keyframes动画和border-radius属性来创建一个简单的圆形阴影效果。 HTML <!DOCTYPE html> <html lang"e…

[Cloud Networking] Layer 2 Protocol

文章目录 1. STP / RSTP / MSTP Protocol1.1 STP的作用1.2 STP 生成树算法的三个步骤1.3 STP缺点 2. ARP Protocol3. MACSEC 1. STP / RSTP / MSTP Protocol 1.1 STP的作用 消除二层环路&#xff1a;通过阻断冗余链路来消除网络中可能存在的环路链路备份&#xff1a;当活动链…

DC/AC电源模块:为物联网设备提供可靠的电力支持

BOSHIDA DC/AC电源模块&#xff1a;为物联网设备提供可靠的电力支持 DC/AC电源模块是物联网设备中非常重要的组成部分之一&#xff0c;它为设备提供稳定、可靠的电力支持。在物联网应用中&#xff0c;设备通常需要通过无线网络与其他设备或云平台进行通信&#xff0c;而这些设…

Photoshop中颜色与色调的调整

Photoshop中颜色与色调的调整 Photoshop中的颜色模式RGB模式灰度模式位图模式索引模式CMYK模式Lab模式 Photoshop中的颜色/色调调整命令颜色/色调调整命令的分类亮度/对比度调整命令色阶命令曲线命令曝光度命令自然饱和度命令色相/饱和度命令色彩平衡命令照片滤镜调整命令通道混…

【个人博客搭建】(23)购买服务器、域名、备案

1、服务器主要是为了有一个公网的IP地址&#xff0c;方便我们可以通过网络随时访问 2、域名是对IP地址的一个替代。简单说IP地址可能不方便记忆&#xff0c;但是自己配置的域名会简单些&#xff0c;另外暴露IP地址也不安全。(虽然也能通过域名找到IP) 3、备案。这是政策。简单所…

运营商三要素核验-手机号实名认证接口-运营商三要素核验接口

手机号三元素实名认证&#xff0c;通过手机号、真实姓名、身份证号来校验三者是否一致。支持三大运营商携号转网查询&#xff0c;姓名、手机号、身份证号码三项验证是否一致&#xff1b;服务器毫秒级响应&#xff0c;信息验证科学严谨&#xff0c;数据安全可靠。 更新周期&…

听说前端都是切图仔,所以学了PS

PS 从零开始-基础篇 什么话都不想说了&#xff0c;前端以死后端已死&#xff0c;毁灭即是新生&#xff0c;我要开始追梦了&#xff0c; 从小就希望&#xff0c;制作一款自己的游戏&#x1f3ae;去学了编程&#xff0c;了解了&#xff1a;Java、C#、前端... 不小心入了web领域…

谷歌利用人工智能来推动搜索,显示出其组织信息的方式存在问题

谷歌利用人工智能来推动搜索&#xff0c;显示出其组织信息的方式存在问题 从相关文件到新闻报道、商业、音乐和社会互动&#xff0c;世界上的大部分信息现在都在网上。谷歌成立于1998年&#xff0c;其使命是“组织世界上的信息&#xff0c;使其普遍可用和有用”&#xff0c;它…

SpringBoot不用写Controller、不用写Service、不用建表,直接起飞是什么感觉

Spring Data REST 提供了一种简单的方式来暴露 JPA 实体为 RESTful 服务&#xff0c;这使得构建基于 REST 的数据服务变得非常快速和高效。下面是一个使用 Spring Data REST 构建通用架构的基本示例&#xff1a; 首先&#xff0c;我们需要创建一个实体类&#xff08;例如&…

若依对数据二次处理导致查询total只有十条的问题处理办法

前言&#xff1a; 在使用若依框架的过程中&#xff0c;如果是查询结果数据直接返回&#xff0c;那么其自带的分页插件可以正常返回数据以及总条数&#xff0c;若是在业务逻辑层对数据进行了其他二次处理&#xff0c;再返回就会出现异常&#xff0c;无论查询了多少条&#xff0…

树莓派4B学习笔记7:(Python)_TTL串口收发数据_

今日继续学习树莓派4B 4G&#xff1a;&#xff08;Raspberry Pi&#xff0c;简称RPi或RasPi&#xff09; 本人所用树莓派4B 装载的系统与版本如下: 版本可用命令 (lsb_release -a) 查询: Opencv 版本是4.5.1&#xff1a; 今日尝试使用树莓派的TTL串口进行收发数据&#xff1a; …

中电联系列四:rocket手把手教你理解中电联协议!

分享《慧哥的充电桩开源SAAS系统&#xff0c;支持汽车充电桩、二轮自行车充电桩。》 电动汽车充换电服务信息交换 第4部分&#xff1a;数据传输与安全 Interactive of charging and battery swap service information for electric vehicle Part 4:Data transmission and secu…

【GreenHills】GHS-Point导致的调试HardFault错误

【更多软件使用问题请点击亿道电子官方网站】 1、 文档背景 该客户使用的IDE为S32 Design Studio for ARM &#xff0c;使用的编译器为GHS compiler&#xff0c;调试器为PE。 客户在使用Ceil函数进行函数调用时&#xff0c;编译可以正常通过&#xff0c;但调试无法成功运行。…

SQL中distinct去重关键字的使用和count统计组合的使用

文章目录 SQL中distinct的使用1、distinct作用于单列2、distinct作用于多列3、 count()、distinct组合使用conut扩展知识 SQL中distinct的使用 1、distinct作用于单列 语法&#xff1a; select distinct 列名 from 表&#xff1b; distinct必须在列的前面&#xff0c;否则直…

基于MATLAB仿真的BCC卷积码维特比译码算法

&#x1f9d1;&#x1f3fb;个人简介&#xff1a;具有3年工作经验&#xff0c;擅长通信算法的MATLAB仿真和FPGA实现。代码事宜&#xff0c;私信博主&#xff0c;程序定制、设计指导。 &#x1f680;基于MATLAB仿真的BCC卷积码维特比译码算法 目录 &#x1f680;1.BCC卷积码概…

Java的核心类库

引言 在Java编程中&#xff0c;熟练掌握常用类与对象操作是开发的基础。Java的核心类库提供了丰富的功能&#xff0c;可以帮助开发者高效地处理各种编程任务。本文将详细介绍Java字符串操作、集合框架、日期与时间处理等内容&#xff0c;并通过图表和表格进行总结与示范。 字符…