Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LLM政策新闻信号的Alpha检验与行业轮动预测

本项目利用大语言模型(DeepSeek)对CCTV新闻联播进行结构化情绪分析,提取政策信号因子,与传统量价因子融合后,基于LightGBM进行沪深300涨跌预测及申万一级行业轮动策略构建。

一键运行

所有数据(行情、新闻、LLM分析结果)已预计算并随项目提供,无需任何API密钥即可直接运行全部实验:

# 1. 安装依赖
pip install -e .

# 2. 运行完整实验流程(建模 + 回测 + 可视化,约3-5分钟)
python main.py

运行完成后:

  • output/ 目录下生成全部图表(PNG)和结果表格(CSV)
  • output/run.log 为完整运行日志

分步执行

python main.py --step model     # 仅特征工程 + 模型训练 + 多周期对比
python main.py --step backtest  # 仅回归评估 + 投资组合回测
python main.py --step plot      # 仅生成可视化图表
python main.py --step deep      # 运行深度因果分析(情绪反向指标机制探究)
python main.py --step all       # 完整流程(默认)

关于LLM新闻分析模块

src/llm_analyzer.py 为大语言模型新闻解析模块,调用DeepSeek API对每日CCTV新闻联播进行结构化分析,提取市场情绪评分、新闻分类、受影响行业及信号强度。

该模块需要DeepSeek API Key,无法直接执行。 全量运行结果已预计算并保存在以下文件中:

文件 说明
data/analyzed_news.csv 每条新闻的LLM分析结果(情绪评分、分类、行业信号)
data/daily_signals.csv 按交易日聚合的日频LLM信号(加权情绪、正负计数等)
cache/llm_results.json LLM原始返回结果缓存

如需重新运行LLM分析:

# 1. 复制并填写API密钥
cp .env.example .env
# 编辑 .env,填入 DEEPSEEK_API_KEY=sk-xxx

# 2. 运行LLM分析
python main.py --step analyze

环境要求

  • Python >= 3.10
  • 依赖列表见 pyproject.toml

主要依赖:pandas, numpy, lightgbm, scikit-learn, scipy, matplotlib, seaborn, openai, python-dotenv

项目结构

llm-market-predictor/
├── main.py                  # 主入口:一键运行全部实验
├── pyproject.toml           # 项目配置与依赖
├── .env.example             # 环境变量模板(仅LLM分析需要)
│
├── src/                     # 源代码
│   ├── config.py            # 全局配置(路径、参数)
│   ├── taxonomy.py          # 新闻分类体系、行业映射、信号强度定义
│   ├── prompts.py           # LLM Prompt模板
│   ├── llm_analyzer.py      # 大语言模型新闻分析(需API Key)
│   ├── features.py          # 特征工程(54维量价因子 + LLM信号特征)
│   ├── model.py             # LightGBM分类模型训练与评估
│   ├── backtest.py          # 回归评估 + 投资组合回测
│   ├── visualize.py         # 可视化图表生成
│   └── deep_analysis.py     # 深度因果分析(情绪反向指标机制)
│
├── data/                    # 预计算数据(随项目提供)
│   ├── cctv_news.csv        # CCTV新闻联播原始数据(2023.05-2026.05)
│   ├── analyzed_news.csv    # LLM分析结果
│   ├── daily_signals.csv    # 日频LLM信号
│   ├── csi300_daily.csv     # 沪深300指数日线
│   ├── sw_industry_daily.csv # 28个申万一级行业指数日线
│   ├── northbound.csv       # 北向资金每日净流入
│   ├── margin.csv           # 全市场融资融券余额
│   ├── market_breadth.csv   # 市场广度(涨跌家数)
│   ├── shibor.csv           # Shibor银行间利率
│   ├── index_futures.csv    # 沪深300股指期货
│   ├── csi500_daily.csv     # 中证500指数(基准对比用)
│   └── star50_daily.csv     # 科创50指数(基准对比用)
│
├── cache/                   # LLM缓存
│   └── llm_results.json     # DeepSeek API返回结果缓存
│
└── output/                  # 实验输出(运行后生成)
    ├── *.csv                # 结果表格
    ├── *.png                # 可视化图表
    └── analysis/            # 深度分析图表

实验设计

1. 数据来源

  • 新闻数据:CCTV新闻联播(2023年5月-2026年5月),约3年共计数万条
  • 行情数据:沪深300指数、28个申万一级行业指数日线
  • 辅助数据:北向资金、融资融券、市场广度、Shibor利率、股指期货基差

2. LLM分析流程

利用DeepSeek大语言模型对每条新闻进行结构化分析,输出:

  • 市场情绪评分(-5到+5整数刻度)
  • 新闻主题分类(11个一级分类)
  • 受影响行业及信号强度
  • 影响时间窗口和置信度

3. 特征工程

  • 量化因子(54维):动量、技术指标、波动率、成交量、资金流、市场广度、宏观流动性
  • LLM信号特征(13维):日均情绪、情绪动量、正负新闻比、行业信号等
  • 交叉特征:情绪×动量、情绪×波动率等
  • IC检验筛选:仅保留Rank IC显著(p<0.05)的LLM因子进入融合模型

4. 模型对比(四组)

模型 特征
Baseline 纯量化因子
LLM-only 纯LLM信号
Fusion 量化因子 + IC筛选后LLM因子 + 交叉特征
Ensemble Baseline与Fusion的预测加权融合

评估方式:Walk-Forward交叉验证(5折),指标包括AUC-ROC、Rank IC、ICIR、五分组多空收益

5. 回测框架

  • 市场择时策略:预测收益>0做多,否则持有现金
  • 行业轮动策略:截面预测排序,多Top5空Bottom5
  • 双成本情景:低成本(千1.5)/ 高成本(千3)
  • 基准对比:沪深300、中证500、科创50买入持有

About

No description, website, or topics provided.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages