纯文字排版设计网站蚌埠app制作公司
web/
2025/10/5 5:11:04/
文章来源:
纯文字排版设计网站,蚌埠app制作公司,h5页面制作软件教程,专业做羽绒服的服装网站一、研究背景 随着经济的发展和金融市场的不断完善#xff0c;股票投资成为了人们重要的投资方式之一。汽车行业作为国民经济的重要支柱产业#xff0c;其上市公司的股票表现备受关注。Fama-French 三因子模型是一种广泛应用于股票市场的资产定价模型#xff0c;它考虑了市场…一、研究背景 随着经济的发展和金融市场的不断完善股票投资成为了人们重要的投资方式之一。汽车行业作为国民经济的重要支柱产业其上市公司的股票表现备受关注。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文件制定分隔符为\tdf pd.read_csv(path, delimiter\t)# 转换日期格式df[trddt] pd.to_datetime(df[trddt])# 按日期排序df df.sort_values(bytrddt)# 设置日期为索引df.set_index(trddt, inplaceTrue)# 存储处理后的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, inplaceTrue)
df.sort_index(inplaceTrue)# 筛选自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(window30).mean()# 定义图表和坐标轴
fig, ax plt.subplots(figsize(16,8))# 绘制收盘价
ax.plot(stock_002594_mpf.index, stock_002594_mpf[Close], label收盘价, colorblack)# 绘制30日均线
ax.plot(stock_002594_mpf.index, stock_002594_mpf[30_MA], label30日均线, colorblue)# 设置标题和坐标轴标签
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(rotation45)# 显示网格
plt.grid(visibleTrue)# 显示图表
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(axis1)# 结果
scores_df从给定的分数来看股票000800和000572的总分最高达到了6分这可能意味着从这三个因子的角度看它们的投资吸引力较高。而股票000550的总分最低为0分可能意味着从这些因素来看它的投资吸引力较低。
三、小结
本研究成功地读取了十家汽车行业上市公司的股票数据并将日期列转换为 Datetime 格式设置为 DataFrame 的 index。经过排序后计算出了每只股票数据中包含的交易日数量。根据题目要求选择了对应序号的股票并绘制了该只股票自 2020 年以来的 K 线图并添加了 30 日均线。K 线图可以直观地展示股票价格的走势而 30 日均线则可以帮助投资者判断股票的短期趋势。利用 OLS 回归计算了 10 只股票在三个因子risk, smb, hml上的系数即因子暴露。通过对因子暴露的排序和打分计算出了每只股票在三个因子上的加权得分。这些结果可以帮助投资者了解股票的风险特征和投资价值为投资决策提供参考。
需要注意的是以上结论仅基于题目要求和提供的数据实际情况可能会有所不同。在进行股票投资时投资者还需要综合考虑其他因素如公司基本面、行业发展趋势、宏观经济环境等。
创作不易希望大家多点赞关注评论类似代码或报告定制可以私信
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/87177.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!