python数据分析-量化分析

news2024/11/16 11:36:40

一、研究背景

随着经济的发展和金融市场的不断完善,股票投资成为了人们重要的投资方式之一。汽车行业作为国民经济的重要支柱产业,其上市公司的股票表现备受关注。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)
    
    # 存储处理后的DataFrame
    stock_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.coloradmin.cn/o/1818303.html

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

相关文章

vue3中用setup写的数据,不能动态渲染(非响应式)解决办法

相比于2.0&#xff0c;vue3.0在新增了一个setup函数&#xff0c;我们在setup中可以写数据也可以写方法&#xff0c;就像我们以前最开始学习js一样&#xff0c;在js文件中写代码。 For instance <template><div class"person"><h2>姓名&#xff1…

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

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

平安科技智能运维案例

平安科技智能运维案例 在信息技术迅速发展的背景下&#xff0c;平安科技面临着运维规模庞大、内容复杂和交付要求高等挑战。通过探索智能运维&#xff0c;平安科技建立了集中配置管理、完善的运营管理体系和全生命周期运维平台&#xff0c;实施了全链路监控&#xff0c;显著提…

基于块生成最大剩余空间的三维装箱算法

问题简介 三维装箱问题&#xff08;3D Bin Packing Problem&#xff0c;3D BPP&#xff09;是一类组合优化问题。它涉及到将一定数量的三维物品放入一个或多个三维容器&#xff08;称为“箱子”&#xff09;中&#xff0c;同时遵循一定的约束&#xff0c;通常目标是最大化空间…

2024/06/13--代码随想录算法2/17| 62.不同路径、63. 不同路径 II、343. 整数拆分 (可跳过)、96.不同的二叉搜索树 (可跳过)

62.不同路径 力扣链接 动态规划5步曲 确定dp数组&#xff08;dp table&#xff09;以及下标的含义&#xff1a; dp[i][j] &#xff1a;表示从&#xff08;0 &#xff0c;0&#xff09;出发&#xff0c;到(i, j) 有dp[i][j]条不同的路径。确定递推公式&#xff0c;dp[i][j] d…

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

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

分享一个开发者工具

网站地址&#xff1a;https://daxia.olalo.asia/计算器 IP地址查询 BMI体脂计算 AI ChatGPT GPT 黄历 图片缩放 图片裁剪 图片水印 图片拼接 json查看器 二维码识别 二维码生成 Base64编解码 时间戳 天气 取色器 拾色器https://daxia.olalo.asia/ 很干净的一个小网站&#xff0…

ppt添加圆角矩形,并调整圆角弧度方法

一、背景 我们看的论文&#xff0c;许多好看的图都是用PPT做的&#xff0c;下面介绍用ppt添加圆角矩形&#xff0c;并调整圆角弧度方法。 二、ppt添加圆角矩形&#xff0c;并调整圆角弧度 添加矩形&#xff1a; 在顶部工具栏中&#xff0c;点击“插入”选项卡。 在“插图”…

Llama-3安装方法及应用

Hi~&#xff01;这里是奋斗的小羊&#xff0c;很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~~ &#x1f4a5;&#x1f4a5;个人主页&#xff1a;奋斗的小羊 &#x1f4a5;&#x1f4a5;所属专栏&#xff1a;C语言 &#x1f680;本系列文章为个人学习…

【日记】第一次养植物,没什么经验……(781 字)

正文 前两天梦见灵送的几盆植物全都死掉了。梦里好伤心。醒来与她说这件事&#xff0c;她宽慰我说&#xff0c;梦都是反着的&#xff0c;肯定能活得很好的。于是忽然记起昨天给植物换水时&#xff0c;文竹的根居然从花盆底部伸吊了出来&#xff0c;以前都没有这种情况来着&…

为什么要用AI大模型?

前言 2021 年 8 月份&#xff0c;李飞飞和 100 多位学者联名发表一份 200 多页的研究报告《On the Opportunities and Risk of Foundation Models》&#xff0c;深度地综述了当前大规模预训练模型面临的机遇和挑战。 语言模型已经深刻变革了自然语言处理领域的研究和实践。近…

ui自动化中,几种文件上传整理2024

input标签的 对于input标签实现的文件上传&#xff0c;看成输入框&#xff0c;直接send_keys 非input标签的 要使用第三方库&#xff1a; 方式1&#xff1a; pip install pypiwin32 要点&#xff1a;图片路径要写路径 方式2&#xff1a;pip install pyautogui 方式3&#…

Idea | Idea提交.properties文件乱码问题

这里 Transparent natice-to-ascii conversion 自动转换ASCII码 千万别勾选

ssm情侣购物系统-计算机毕业设计源码02387

目 录 摘要 1 绪论 1.1 开发背景与意义 1.2开发意义 1.3Vue.js 主要功能 1.3论文结构与章节安排 2 情侣购物系统系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1 数据流程 3.3.2 业务流程 2.3 系统功能分析 2.3.1 功能性分析 2.3.2 非功能性分析 2.4 系统用例分…

《吸血鬼猎人D》观后感

前言 在B站无意中发现了一部动漫电影《吸血鬼猎人D》&#xff0c;看着封面还不错&#xff0c;就试着点开了视频&#xff0c;看了一会儿&#xff0c;发现画面很精美&#xff0c;人物造型高大威猛&#xff0c;肌肉线条清晰可见。如果我没记错的话&#xff0c;这种风格在日本动漫中…

当我用AI写高考作文题目,你给打几分?

2024高考作文题目&#xff1a; 随着互联网的普及、人工智能的应用&#xff0c;越来越多的问题能很快得到答案。那么&#xff0c;我们的问题是否会越来越少&#xff1f;以上材料引发了你怎样的联想和思考&#xff1f;请写一篇文章。要求&#xff1a;选准角度&#xff0c;确定立…

uniapp条件编辑语法

uniapp中的“条件编译”&#xff1a;#ifdef详细解释_uniapp #ifdef-CSDN博客 uniapp 多端兼容 #ifdef #ifndef #endif 和 平台标识 - 简书

数据库选型实践:如何避开分库分表痛点 | OceanBase用户实践

随着企业业务的不断发展&#xff0c;数据量往往呈现出快速的增长趋势。使用MySQL的用户面对这种增长&#xff0c;普遍选择采用分库分表技术作为应对方案。然而&#xff0c;这一方案常在后期会遇到很多痛点。 分库分表的痛点 痛点 1&#xff1a;难以保证数据一致性。由于分库分…

ComfyUI 使用SD3

1 需要更新ComfyUI到最新版本&#xff0c;更新起来也非常方便 或者到目录下 git full即可 2 ComfyUI更新完成后,便是开始下载需要的模型和案例 https://huggingface.co/stabilityai/stable-diffusion-3-medium/tree/main 当然也可以网盘进行下载 SD3 百度网盘 模型下载链接 …

CV每日论文--2024.6.12

1、PGSR: Planar-based Gaussian Splatting for Efficient and High-Fidelity Surface Reconstruction 中文标题&#xff1a;PGSR&#xff1a;基于平面的高斯溅射&#xff0c;用于高效、高保真表面重建 简介&#xff1a;这项研究关注于3D高斯喷洒(3DGS)技术,该技术因其高质量渲…