基于Pytorch的上市公司财务预警分析

摘要:根据股市公开披露的财务报表和营运数据,对上市公司进行财务预警,是进行价值投资的有效手段。但这些披露的数据与实际的财务状况之间往往缺乏相关性,让人很难从中发现价值。本文将从数据挖掘的角度,使用开源机器学习库Pytorch,基于长短期记忆网络原理(LSTM),构建分析财务数据与财务预警之间关系的简化模型。

关键字:Pytorch,LSTM,深度学习,财务预警

目录

引言

需求建模

Pytorch深度学习框架

代码实现

读入数据

定义网络和损失函数

开始训练

测试模型结果

待优化

总结


引言

股票市场投资在高回报的同时往往伴随着高风险。要充分挖掘上市公司真实财务状况,在纷繁复杂的公司财报中很难找到线索,并且极易判断失误。但随着大数据和机器学习的普及,使得对相关报表进行分析并找出真实财务状况变得可能。

本文将从数据挖掘的角度,通过流行的深度学习库Pytorch,构建一个简易的财务预警分析模型。

需求建模

分析上市公司财务状况,提出与财务预警相关的6个指标,分别为销售利润率、资产收益率、净资产收益率、主营业务利润增长率、净利润增长率、利润总额增长率。依据以上指标,收集到14组样本数据。作为简易模型,将选取12组为训练数据,对模型进行训练,并取两组样本作为测试数据,对最终的模型进行测试。

将以上原始数据整理,分成四个数据文件,分别为训练输入、输出,测试输入、输出文件,保存为csv格式供后续程序导入。

Pytorch深度学习框架

PyTorch是一个开源的Python机器学习库,基于Torch,用于自然语言处理等应用程序。

2017年1月,由Facebook人工智能研究院(FAIR)基于Torch推出了PyTorch。它是一个基于Python的可续计算包,提供两个高级功能:1、具有强大的GPU加速的张量计算(如NumPy)。2、包含自动求导系统的深度神经网络。

开发环境

软件和工具

描述

版本

Python

运行环境

3.8.8

Anaconda

Python多版本管理工具

Latest

Pytorch

机器学习库

1.8.1

PyCharm

代码编辑器

2021.1社区版

Github

代码管理器

代码实现

具体编码实现流程如下

读入数据

将四个数据文件放入程序目录下的dataset文件夹

首先将两个训练数据通过pandas组件读入python内存。读入后自动转换为数组形式,并可以通过首行作为列的索引访问,如training_input.x1

第二步,将数组结构转化为torch中的张量结构,即为两个变量:training_input_tensor和training_output_tensor

导入后的内存结构如下

以相同的方式导入测试数据集。

定义网络和损失函数

使用torch.nn包中的组件,构建线性回归模型网络Net,并定义前向计算过程。

定义完成后创建网络模型的对象net,在本场景下,根据数据模型6个输入维度和3个输出维度,分别设定n_feature=6, n_output=3,同时设定中间隐藏层为10,也就是构建中间层为10个神经元节点。

最后,设置优化器,设定学习速率(每次优化率)为0.02。选用损失函数BCEWithLogitsLoss(Sigmoid+BCELoss)

开始训练

开始迭代训练,首先设定迭代次数为100,观察损失函数输出结果

迭代训练100次后,损失函数结果从0.7279降为0.6797

调整迭代为10000次,最终的损失函数结果为0.2773

测试模型结果

使用优化后的模型,输入测试input张量,将得到的输出张量与测试集比较:

得到损失函数结果为0.1747,证明根据模型得到的输出与测试数据偏差较小,比较满足预期。

待优化

后续可尝试使用其他神经网络结构(如深层次神经网络mnist),并进行参数调整,使回归更加快速准确。

另外,中间的训练数据和最终测试结果的呈现,可引入matplotlib.pyplot进行多样化的报表来展现。

总结

本文使用Pytorch中的线性回归网络,结合LSTM实现了对上市公司财务预警的简单建模分析,尝试使用深度学习框架解决现实中的分类问题。实际情况下公司的财务指标更加多样复杂,需要尝试引入更多指标,并需要多层神经网络、增大数据集达到优化训练的效果。

参考:

python中用pytorch机器学习分类预测银行客户流失模型

从Linear到LSTM,5种方法由浅入深预测股价

源码:

https://github.com/VincentChi/pytorch_demo

  • 6
    点赞
  • 73
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值