股票基本面研究
Go to file
liao 5b9ae03000 commit; 2025-05-19 17:02:52 +08:00
src commit; 2025-05-19 17:02:52 +08:00
.dockerignore commit; 2025-05-14 08:54:56 +08:00
Dockerfile commit; 2025-05-14 08:54:56 +08:00
README.md commit; 2025-05-06 15:13:15 +08:00
deploy-compose.sh commit; 2025-05-14 08:54:56 +08:00
deploy-multiple.sh commit; 2025-05-14 08:54:56 +08:00
docker-compose.prod.yml commit; 2025-05-14 08:54:56 +08:00
docker-compose.swarm.yml commit; 2025-05-14 08:54:56 +08:00
docker-compose.yml commit; 2025-05-14 08:54:56 +08:00
manage-instances.sh commit; 2025-05-14 08:54:56 +08:00
requirements.txt commit; 2025-05-19 17:02:52 +08:00
run_backtest.bat commit; 2025-05-14 08:54:56 +08:00
run_backtest.sh commit; 2025-05-14 08:54:56 +08:00

README.md

股票数据分析工具

这是一个用于采集和分析股票数据的Python工具。主要功能包括

  1. 从雪球网获取股票数据并存储到数据库
  2. 分析涨幅超过1.5%的个股
  3. 按板块统计上涨股票的分布情况
  4. 识别在多个热门板块中出现的股票
  5. 对个股进行AI驱动的基本面分析并建立企业画像

环境要求

  • Python 3.8+
  • MySQL数据库

安装依赖

pip install -r requirements.txt

配置数据库

在运行脚本之前,请确保:

  1. MySQL数据库已经启动
  2. 创建了名为 db_gp_cj 的数据库
  3. 数据库中存在 stock_changesgp_gnbk

使用方法

  1. 修改数据库连接信息: 在 src/scripts/stock_analysis.py 中修改 db_url 变量为你的数据库连接信息

  2. 运行脚本:

    python src/scripts/stock_analysis.py
    

主要功能

  1. fetch_and_store_stock_data: 从雪球网获取股票数据并存储到数据库
  2. get_high_performance_stocks: 分析涨幅超过1.5%的股票及其板块分布
  3. get_top_industries_and_stocks: 分析在多个热门板块中出现的股票

基本面分析与企业画像

系统通过AI驱动的分析对个股进行多维度基本面分析构建全面的企业画像。每个维度分析结果都以文本形式保存并提取关键指标形成量化评估存储在数据库的extra_info字段中。

实控人和管理层持股 (management_ownership)

持股稳定性 (shareholding)

  • 1: 减持比例低 - 近三年减持比例低于2%减持次数少于5次减持后持股比例仍高于5%
  • 0: 减持适中 - 减持比例在2%-5%之间减持次数不超过10次减持后持股比例仍高于5%
  • -1: 减持比例高 - 减持次数较多或比例较高大股东持股比例已减持到5%以下

管理层能力 (ability)

  • 1: 领军人物 - 实控人或高管中存在行业领军人物
  • 0: 一般水平 - 没有明显的行业领军人物
  • -1: 存在风险 - 实控人或高管存在被证监会处罚情况或司法犯罪可能性

财务报表分析 (financial_report)

财务报表质量 (financial_report_level)

  • 2: 优秀 - 边际向好,最新财报没有任何风险
  • 1: 良好 - 边际变化波动不高较为稳定,风险很小
  • 0: 一般 - 波动不高较为稳定,但存在一定财报隐患
  • -1: 较差 - 财报波动较大,且存在一定财报隐患
  • -2: 风险高 - 财报波动较大,且存在较大财报隐患

行业竞争格局 (industry_competition)

行业发展空间 (industry_space)

  • 2: 高增长 - 市场环境、阶段和竞争格局符合未来企业高速增长
  • 1: 稳定增长 - 市场环境、阶段和竞争格局符合未来企业稳定经营
  • 0: 不确定性 - 市场环境、阶段和竞争格局存在较大不确定性
  • -1: 不利环境 - 市场环境、阶段和竞争格局不利于企业正常经营

重大订单和项目进展 (recent_projects)

项目进展质量 (major_events)

  • 1: 超预期 - 项目进展顺利,且订单交付/建厂等超预期
  • 0: 符合预期 - 进展顺利,但没有超预期
  • -1: 低于预期 - 进展不顺利,或按照进度进行但仍在验证中

股吧讨论分析 (stock_discussion)

市场情绪 (emotion)

  • 1: 乐观 - 股吧讨论情绪偏乐观
  • 0: 中性 - 股吧讨论情绪偏中性
  • -1: 悲观 - 股吧讨论情绪偏悲观

产业链合作动态 (industry_cooperation)

合作动态质量 (collaboration_dynamics)

  • 2: 高质量 - 近期有较多且质量高的新合作动态,具备新业务拓展能力,可体现在近一年财报中
  • 1: 一般 - 半年内合作动态频率低或质量一般,在原有业务上合作关系的衍生,对财报影响一般
  • 0: 低质量 - 没有合作动态或质量低
  • -1: 负面 - 有负面合作关系,如解除合作或业务被其他厂商瓜分

券商研究与目标价 (target_price)

券商评级 (securities_rating)

  • 2: 买入 - 券商评级以"买入"居多
  • 1: 增持 - 券商评级以"增持"居多
  • 0: 中性 - 券商评级以"中性"居多或无评级
  • -1: 减持 - 券商评级以"减持"居多
  • -2: 卖出 - 券商评级以"卖出"居多

上涨/下跌空间 (odds)

  • 1: 上涨空间大 - 上涨空间大于下跌空间
  • 0: 平衡 - 上涨空间和下跌空间差不多
  • -1: 下跌空间大 - 下跌空间大于上涨空间

投资建议 (investment_advice)

投资建议类型 (investment_advice_type)

  • 短期: 近期(1-3个月内)有明确利好因素、催化事件或阶段性业绩改善
  • 中期: 无明确短期利好,但中期(3-12个月)业绩面临向上拐点或行业处于上升周期
  • 长期: 公司具备长期稳定的盈利能力、行业地位稳固、长期成长性好
  • 不建议: 存在风险因素、基本面恶化、估值过高或行业前景不佳

企业画像应用

基于上述多维度的量化指标,系统可以综合评估企业基本面状况,用于:

  1. 筛选优质投资标的
  2. 评估投资风险
  3. 识别行业中的领先企业
  4. 预判企业未来发展趋势
  5. 辅助投资决策

企业基本面画像可以通过PDF报告形式输出便于投资者快速了解企业综合情况。

企业筛选方法

基于基本面画像的量化指标,系统支持以下类型企业的筛选:

1. 高成长潜力企业

  • 行业发展空间 (industry_space) = 2
  • 财务报表质量 (financial_report_level) ≥ 1
  • 项目进展质量 (major_events) = 1
  • 合作动态质量 (collaboration_dynamics) ≥ 1
  • 券商评级 (securities_rating) ≥ 1
  • 上涨/下跌空间 (odds) = 1

筛选逻辑:选择处于高增长行业、财务状况良好、项目进展超预期、有高质量合作动态、券商看好且上涨空间大的企业。

2. 稳定型龙头企业

  • 管理层能力 (ability) = 1
  • 持股稳定性 (shareholding) ≥ 0
  • 财务报表质量 (financial_report_level) ≥ 1
  • 行业发展空间 (industry_space) ≥ 1
  • 合作动态质量 (collaboration_dynamics) ≥ 1
  • 券商评级 (securities_rating) ≥ 0

筛选逻辑:选择管理层能力强、持股稳定、财务状况良好、行业地位稳固、有稳定合作关系的企业。

3. 短期投资机会

  • 项目进展质量 (major_events) = 1
  • 市场情绪 (emotion) = 1
  • 券商评级 (securities_rating) ≥ 1
  • 上涨/下跌空间 (odds) = 1
  • 财务报表质量 (financial_report_level) ≥ 0

筛选逻辑:选择近期有超预期项目进展、市场情绪乐观、券商看好且上涨空间大的企业。

4. 价值型投资标的

  • 财务报表质量 (financial_report_level) = 2
  • 持股稳定性 (shareholding) = 1
  • 行业发展空间 (industry_space) ≥ 0
  • 合作动态质量 (collaboration_dynamics) ≥ 0
  • 券商评级 (securities_rating) ≥ 0

筛选逻辑:选择财务状况优秀、持股稳定、行业环境稳定、合作关系正常的企业。

5. 困境反转机会

  • 财务报表质量 (financial_report_level) = -1
  • 项目进展质量 (major_events) = 1
  • 行业发展空间 (industry_space) = 1
  • 市场情绪 (emotion) = 0
  • 券商评级 (securities_rating) = 0

筛选逻辑:选择当前财务状况较差但项目进展超预期、行业环境改善、市场情绪企稳的企业。

6. 风险规避标的

  • 管理层能力 (ability) = 1
  • 持股稳定性 (shareholding) = 1
  • 财务报表质量 (financial_report_level) ≥ 1
  • 行业发展空间 (industry_space) ≥ 0
  • 合作动态质量 (collaboration_dynamics) ≥ 0
  • 券商评级 (securities_rating) ≥ 0

筛选逻辑:选择管理层能力强、持股稳定、财务状况良好、行业环境稳定、合作关系正常的企业。

7. 创新驱动型企业

  • 行业发展空间 (industry_space) = 2
  • 合作动态质量 (collaboration_dynamics) = 2
  • 项目进展质量 (major_events) = 1
  • 财务报表质量 (financial_report_level) ≥ 0
  • 券商评级 (securities_rating) ≥ 1

筛选逻辑:选择处于高增长行业、有高质量新业务合作、项目进展超预期、财务状况稳定、券商看好的企业。

8. 行业整合机会

  • 行业发展空间 (industry_space) = 1
  • 合作动态质量 (collaboration_dynamics) = 2
  • 财务报表质量 (financial_report_level) ≥ 1
  • 券商评级 (securities_rating) ≥ 1
  • 上涨/下跌空间 (odds) = 1

筛选逻辑:选择行业环境稳定、有高质量新业务合作、财务状况良好、券商看好且上涨空间大的企业。

Docker 部署说明

本系统支持通过 Docker 进行部署,可以单实例部署或多实例部署。

1. 单实例部署

# 构建镜像
docker-compose build

# 启动服务
docker-compose up -d

2. 多实例部署

提供了三个脚本用于管理多实例部署每个实例将在不同端口上运行从5088开始递增

使用 docker run 部署多实例(推荐)

# 赋予脚本执行权限
chmod +x deploy-multiple.sh

# 部署3个实例端口将为5088、5089、5090
./deploy-multiple.sh 3

每个实例将有自己独立的数据目录:./instances/instance-N/,包含独立的日志和报告文件。

使用 docker-compose 部署多实例

# 赋予脚本执行权限
chmod +x deploy-compose.sh

# 部署3个实例端口将为5088、5089、5090
./deploy-compose.sh 3

每个实例将使用独立的项目名称 stock-app-N

管理多实例

使用 manage-instances.sh 脚本可以方便地管理已部署的实例:

# 赋予脚本执行权限
chmod +x manage-instances.sh

# 查看所有实例状态
./manage-instances.sh status

# 列出正在运行的实例
./manage-instances.sh list

# 启动指定实例
./manage-instances.sh start 2

# 启动所有实例
./manage-instances.sh start all

# 停止指定实例
./manage-instances.sh stop 1

# 停止所有实例
./manage-instances.sh stop all

# 重启指定实例
./manage-instances.sh restart 3

# 查看指定实例的日志
./manage-instances.sh logs 1

# 删除指定实例
./manage-instances.sh remove 2

# 删除所有实例
./manage-instances.sh remove all

3. 中文字体安装

系统需要中文字体以正常生成PDF报告。如果部署时遇到 找不到中文字体文件 错误,可以使用以下方法解决:

自动安装字体(推荐)

# 进入容器内部
docker exec -it [容器ID或名称] bash

# 在容器内执行字体安装脚本
cd /app
python src/fundamentals_llm/setup_fonts.py

手动安装字体

  1. 在宿主机上下载中文字体文件如simhei.ttf、wqy-microhei.ttc等
  2. 创建字体目录并复制字体文件:
mkdir -p src/fundamentals_llm/fonts
cp 你下载的字体文件.ttf src/fundamentals_llm/fonts/simhei.ttf
  1. 重新构建镜像:
docker-compose build

4. 访问服务

部署完成后可以通过以下URL访问服务

  • 单实例:http://服务器IP:5000
  • 多实例:http://服务器IP:508XX为实例序号从8开始

例如:

  • 实例1http://服务器IP:5088
  • 实例2http://服务器IP:5089
  • 实例3http://服务器IP:5090

数据库查询示例

以下SQL查询示例展示了如何从数据库中筛选特定类型的企业

-- 筛选高成长潜力企业
SELECT stock_code, stock_name, dimension, ai_response, extra_info
FROM analysis_results
WHERE dimension = 'industry_competition' 
AND JSON_EXTRACT(extra_info, '$.industry_space') = 2
AND stock_code IN (
    SELECT stock_code 
    FROM analysis_results 
    WHERE dimension = 'financial_report'
    AND JSON_EXTRACT(extra_info, '$.financial_report_level') >= 1
)
AND stock_code IN (
    SELECT stock_code 
    FROM analysis_results 
    WHERE dimension = 'recent_projects'
    AND JSON_EXTRACT(extra_info, '$.major_events') = 1
)
-- ... 其他条件

-- 筛选稳定型龙头企业
SELECT stock_code, stock_name, dimension, ai_response, extra_info
FROM analysis_results
WHERE dimension = 'management_ownership'
AND JSON_EXTRACT(extra_info, '$.ability') = 1
AND JSON_EXTRACT(extra_info, '$.shareholding') >= 0
AND stock_code IN (
    SELECT stock_code 
    FROM analysis_results 
    WHERE dimension = 'financial_report'
    AND JSON_EXTRACT(extra_info, '$.financial_report_level') >= 1
)
-- ... 其他条件

注意实际查询时可能需要根据数据库表结构调整SQL语句。建议根据具体需求组合使用不同的筛选条件。

重新构建镜像

docker-compose build

重启所有实例

./manage-instances.sh restart all