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号登机口…

C++调试打印日志方法

1.使用函数的方法,只能打印 只需要包含:#include <cstdio>头文件即可 #define INFO_LOG(fmt, ...) fprintf(stdout, "[INFO] " fmt "\n", ##__VA_ARGS__) #define WARN_LOG(fmt, ...) fprintf(stdout, "[WARN] " fmt "\n"…

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

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

JavaScript数组函数

在JavaScript中&#xff0c;有许多方法可以用来对数组进行操作。下面是详细介绍和举例所有的数组方法函数&#xff1a; push()&#xff1a;将一个或多个元素添加到数组的末尾&#xff0c;并返回新数组的长度。 var fruits [apple, banana]; fruits.push(orange); console.lo…

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;当活动链…

freebsd 14.1 简易安全安装步骤

下面安装在真机上进行&#xff0c;安装的是KDE界面&#xff0c;virtual box虚拟机上安装&#xff0c;安装前设置中显示改为VBoxSVGA&#xff0c;缩放设置为150%要不然安装后界面文字非常小看不见&#xff0c;其他基本一样。 总结出来的简易安全快速安装步骤方法&#xff1a; …

PHP Cookies:应用与管理

在Web开发中&#xff0c;Cookies是一种在客户端&#xff08;通常是浏览器&#xff09;存储少量数据的机制。PHP作为一种服务器端脚本语言&#xff0c;提供了对Cookies的全面支持&#xff0c;使得开发者可以轻松地设置、读取和删除Cookies。Cookies通常用于存储用户的会话信息&a…

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

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

【Android面试八股文】volatile和synchronize有什么区别?

volatile和synchronize有什么区别? 在 Java 多线程编程中,volatile 和 synchronized 是两个重要的关键字,它们分别用于处理并发访问共享变量的问题。尽管它们都可以用于确保多线程环境下的数据一致性,但在实际应用中却有着明显的区别和适用场景。 作用范围: volatile 只能…

实践中ES常用命令总结

一.集群状况查看命令 1.1集群健康度 curl http://localhost:9200/_cat/health?v 1.2 集群节点 curl http://localhost:9200/_cat/nodes?v 1.3 集群索引 curl http://localhost:9200/_cat/indices?v 1.4 查看某个索引段 curl http://localhost:9200/_cat/segments/or…

编程初学者用什么软件电脑:全方位指南及深度解析

编程初学者用什么软件电脑&#xff1a;全方位指南及深度解析 在数字化浪潮席卷而来的今天&#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领域…

Leetcode 45. 跳跃游戏 II(DP 双指针)

Leetcode 45. 跳跃游戏 II 动态规划 使用dp [ ] 记录每个位置可达的最小步数&#xff0c;每到达一个点时&#xff0c;更新该点所能跳跃区间内的所有点的dp值 时间复杂度较高 class Solution {public int jump(int[] nums) {int n nums.length;int dp[] new int [n];int N …

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

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