本项目利用大语言模型(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 # 完整流程(默认)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/ # 深度分析图表
- 新闻数据:CCTV新闻联播(2023年5月-2026年5月),约3年共计数万条
- 行情数据:沪深300指数、28个申万一级行业指数日线
- 辅助数据:北向资金、融资融券、市场广度、Shibor利率、股指期货基差
利用DeepSeek大语言模型对每条新闻进行结构化分析,输出:
- 市场情绪评分(-5到+5整数刻度)
- 新闻主题分类(11个一级分类)
- 受影响行业及信号强度
- 影响时间窗口和置信度
- 量化因子(54维):动量、技术指标、波动率、成交量、资金流、市场广度、宏观流动性
- LLM信号特征(13维):日均情绪、情绪动量、正负新闻比、行业信号等
- 交叉特征:情绪×动量、情绪×波动率等
- IC检验筛选:仅保留Rank IC显著(p<0.05)的LLM因子进入融合模型
| 模型 | 特征 |
|---|---|
| Baseline | 纯量化因子 |
| LLM-only | 纯LLM信号 |
| Fusion | 量化因子 + IC筛选后LLM因子 + 交叉特征 |
| Ensemble | Baseline与Fusion的预测加权融合 |
评估方式:Walk-Forward交叉验证(5折),指标包括AUC-ROC、Rank IC、ICIR、五分组多空收益
- 市场择时策略:预测收益>0做多,否则持有现金
- 行业轮动策略:截面预测排序,多Top5空Bottom5
- 双成本情景:低成本(千1.5)/ 高成本(千3)
- 基准对比:沪深300、中证500、科创50买入持有