# financial-report-analysis **Repository Path**: lyl6/financial-report-analysis ## Basic Information - **Project Name**: financial-report-analysis - **Description**: 使用 Python 分析 A 股上市公司财报。 - **Primary Language**: Python - **License**: MulanPSL-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 9 - **Created**: 2024-07-02 - **Last Updated**: 2025-05-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # financial-report-analysis 本项目旨在分析 A 股上市公司发布的财务数据,了解公司的资产质量,行业地位,利润的形成过程、现金流情况,有没有粉饰报表等。 通过运行命令行程序 `manage.py` 将自动下载资产负债表、利润表及现金流量表,之后可能存在部分字段需要确认或手动录入,包含这些字段的 `correct.csv` 文件位于 `input` 目录下。 更新 `correct.csv` 文件后,就可以通过 `manage.py` 命令行分析各项财务指标了。项目中分析的财务指标被分为六大类,并以单独的文档记录分析结果,输出到 `output` 目录下的 World 文档中。 - 资产负债表 - 资产质量分析 - 资产负债表 - 财务造假分析 - 资产负债表 - 深入分析 - 利润表分析 - 现金流量表分析 - 财务报表综合分析 ## 一. 项目运行环境 Python 版本信息: ```bash $ python --version Python 3.9.5 ``` 进入项目目录, 创建虚拟环境、激活虚拟环境并安装依赖: ```bash $ python -m venv .venv $ source .venv/Scripts/activate (.venv) $ pip install -r requirements.txt ``` 通过 `manage.py init` 命令下载股票代码对应的上市公司财报数据,并完成初始化工作。 ```bash (.venv) $ python manage.py init --code 002508 --download { "benefit": "002508_benefit_year.xls", "cash": "002508_cash_year.xls", "debt": "002508_debt_year.xls" } 有关 002508 的文件准备就绪,即将开始初始化! 长期借款(元) 应付债券(元) 以公允价值计量且其变动计入当期损益的金融资产(元) 债权投资(元) 持有至到期投资(元) 其他非流动金融资产(元) 合同资产(元) 长期应付款合计(元) ------------------------------------------------------------ 以上字段未找到,自动赋值为 0 ! 其他流动资产里的理财产品 其他流动资产里的结构性存款 应收款项融资 ------------------------------------------------------------ 以上字段需要手动赋值,请稍后在 correct.csv 中录入! 长期应付款合计(元) ------------------------------------------------------------ 以上字段或许需要调整,请稍后在 correct.csv 中修改! ``` 此时,在项目目录下将生成一个 `input` 文件夹和一个 `output` 文件夹,并且他们都有一个编号为 `002508` 的文件夹。这里的编号就是我们运行命令行时 `--code` 选项指定的上市公司股票代码。 只不过 `output/002508` 目前还为空,而 `output/002508` 已经存放好了下载的财务报表 `.xls` ,以及合并后的数据 `.csv` ,外加一个 `correct.csv` 存放需要手动调整或录入的字段。 ```bash $ ls output/002508/ $ ls input/002508/ 002508.csv 002508_benefit_year.xls 002508_cash_year.xls 002508_debt_year.xls correct.csv ``` ## 二. 字段调整与补录 打开 `init` 时生成的 `correct.csv` 文件: ![](https://gitee.com/miali/financial-report-analysis/raw/main/.readme/image-3.png) 其中,「其他流动资产里的理财产品」和「其他流动资产里的结构性存款」属于 2019 年之前使用的旧科目,2019年已计入交易性金融资产。我们需要查阅 2018 年及之前的年报,找到财务报表附注中的「其他流动资产」,对红色框中的内容进行补录。 然后是「应收款项融资」为 2019 年开始使用的新科目,同花顺目前为止仍无法导出该字段。我们需要查阅 2019 年及之后的年报,找到合并资产负债表,录入该字段。 接下来是「长期应付款合计」,如果发现有非 0 的值,要查阅年报中的财务报表附注「长期应付款」,判断是否为有息负债。若不属于有息负债,需要将值更正为 0 。 股票代码 `002508` 对应的公司在 2017 年和 2018 年的结构性存款为 0 ,2020 至 2022 年应收款项融资为 0 ,我们保持空白或者录入 0 即可。 ![](https://gitee.com/miali/financial-report-analysis/raw/main/.readme/image-4.png) ## 三. 输出财务数据分析 命令行 `manage.py analysis` 用于分析数据并输出结果: ```bash $ python manage.py analysis --help Usage: manage.py analysis [OPTIONS] 在 output 目录下输出 correct.csv 修正后的财务数据 csv 以及各类分析结果。 Options: --csv 生成或更新 output 目录下的 CSV 数据文件。 -o, --output [debt-lie|debt-quality|debt-effect|benefit|cash|all] 输出指定类型的财报分析结果,默认输出全部。 --help Show this message and exit. ``` 命令行选项 `--csv` 用于在 `output/002508` 目录下生成 `correct.csv` 更新后的 `002508.csv` 文件。在 `correct.csv` 发生修改时,应使用 `--csv` 选项重新生成 `csv` 文件。 命令行选项 `--ouput` 可以简写为 `-o` ,用来指定输出的分析类型,默认输出全部。`--output` 可选值和输出文件的对应关系如下: | output 选项 | 输出的分析类型 | | --------------- | ------------------------- | | -o debt-lie | 资产负债表 - 造假分析 | | -o debt-quality | 资产负债表 - 资产质量分析 | | -o debt-effect | 资产负债表 - 深入分析 | | -o benefit | 利润表分析 | | -o cash | 现金流量表分析 | | -o all | 财务报表综合分析 | **演示示例:** 1. 输出资产质量分析、资产负债表深入分析以及造假分析。 ```bash $ python manage.py analysis -o debt-quality -o debt-lie -o debt-effect $ ll output/002508/ 002508.csv 002508资产负债表-深入分析2017-2022.docx 002508资产负债表-资产质量分析2017-2022.docx 002508资产负债表-造假分析2017-2022.docx images/ ``` 2. 输出全部分析文件。 ```bash $ python manage.py analysis $ ll output/002508/ 002508.csv 002508利润表分析2017-2022.docx 002508现金流量表分析2017-2022.docx 002508财务报表综合分析2017-2022.docx 002508资产负债表-深入分析2017-2022.docx 002508资产负债表-资产质量分析2017-2022.docx 002508资产负债表-造假分析2017-2022.docx images/ ``` ## 补充 离线环境下,在初始化时可以执行不带 `--download` 选项的命令: ```bash $ python manage.py init --code 002508 {} 三大报表不齐全:资产负债表、利润表及现金流量表! 请使用 --download 选项自动完成数据的下载或将下载好的报表手动放入 input\002508 目录! ``` 之后,将下载好的财务报表拷贝至 `input/{code}` 目录下,再次执行 `python manage.py --code {code}` 即可。 报表需要从同花顺个股网 http://stockpage.10jqka.com.cn/ 下载,找到**「财务分析」**菜单下的**「财务指标」**选项。 ![](https://gitee.com/miali/financial-report-analysis/raw/main/.readme/image-1.png) 分别下载**「按年度」**的资产负债表、利润表以及现金流量表。 ![](https://gitee.com/miali/financial-report-analysis/raw/main/.readme/image-2.png) 离线环境下的年度分红总额,也可以在同花顺个股网找到「分红融资」-「分红情况」,手动更新到 `correct.csv` 即可! ![](https://gitee.com/miali/financial-report-analysis/raw/main/.readme/image-5.png)