Skip to content

swordstraces/factor_strategy

Repository files navigation

可转债多因子量化策略工程化项目

项目简介

本项目实现了可转债多因子量化策略的全流程工程化,包括:数据采集、本地化、主数据库合成、因子加工、IC/IR统计、回测、因子分析、rolling表自动生成与动态加权等,所有流程高度自动化、模块化,适合长期量化策略自动运维和科学研究。

目录结构

.
├── factor_strategy.py      # 主入口,命令行参数解析与主流程调度
├── config.py               # 全局参数与路径配置
├── factors.py              # 因子加工、健康检查等
├── backtest.py             # 策略实现与回测
├── analyze.py              # 因子分析与可视化
├── report.py               # 结构化结论报告输出
├── data_db/                # 数据库文件目录
├── charts/                 # 图表输出目录

依赖环境

pip install pandas numpy matplotlib akshare openpyxl

快速开始

  1. 数据采集与更新

    • 采集/更新主数据库(可转债行情与基础因子):
      python factor_strategy.py --update
    • 采集正股财务数据库(建议先运行一次):
      python factor_strategy.py --update-finance
    • 采集正股历史价格(如需用正股动量因子,建议先运行一次):
      python factor_strategy.py --update-stock-price
  2. 因子加工与预处理

    • 默认加工(生成5日/20日动量、波动率等):
      python factor_strategy.py --preprocess-factors
    • 自定义窗口(如生成5/10/20/60日动量和波动率):
      python factor_strategy.py --preprocess-factors-vol 5,10,20,60 --preprocess-mom 5,10,20,60 --preprocess-stock-mom 5,10,20,60
  3. 因子分析

    • 分析指定因子的有效性(如"价格动量20日"):
      python factor_strategy.py --analyze-factor 价格动量20日
  4. 策略回测

    • 运行回测并输出持仓、净值、图表、报告:
      python factor_strategy.py --backtest
    • 或直接运行(默认回测):
      python factor_strategy.py
  5. 数据库健康检查与诊断

    • 检查主数据库完整性:
      python factor_strategy.py --test-db
    • 诊断财务数据库与主表合并情况:
      python factor_strategy.py --diagnose-finance

命令行参数说明

  • 所有核心参数(回测区间、调仓频率、持仓数量、因子列表、权重、风控等)均在 config.pyConfig 类中集中配置。
  • 支持命令行参数灵活指定因子加工窗口、分析因子等,详见主入口文件注释或 python factor_strategy.py --help

结果输出

  • 图表自动保存在 charts/ 目录
  • 持仓历史导出为 factor_holdings_history.xlsx
  • 结构化结论报告自动输出到终端

进阶用法

  • 可在 factors.pybacktest.pyanalyze.py 等模块中自定义因子、策略、分析方法,扩展更复杂的量化逻辑。
  • 支持批量因子加工、动态IC/IR加权、分层回测、健康检查、异常诊断等高级功能。

如需更详细的参数说明、模块扩展方法或遇到具体问题,可查阅各模块源码注释或向开发者提问。

最新特性

  • 支持因子标准化方式自动切换(分位数rank/zscore),配置项一键切换,所有因子横截面标准化。
  • 支持IC方法自动切换(pearson/spearman),默认spearman(Rank IC),更稳健。
  • 支持因子正向/反向自动判断(IC均值)与手动指定(FACTOR_DIRECTION),多空方向与因子逻辑完全一致。
  • 多空组合收益自动用"分层表现更好-分层表现更差"方向,图表和报告自动标注多空逻辑。
  • 图表底部结论区块美观分栏,自动输出IC、IR、标准化方式、IC方法、分层收益、多空收益等核心指标。
  • 支持因子分析、分层回测、择时信号、主表字段补全、异常诊断、可视化美化等全流程自动化。
  • 新增:支持通过命令行参数批量指定波动率、价格动量、正股动量窗口,自动生成多周期因子。

主要特性

  • 主入口factor_strategy.py,一键自动化全流程。
  • 模块化设计:采集、加工、回测、分析、报告等各功能独立,便于维护和扩展。
  • 数据采集:所有原始数据(可转债行情、正股价格、财务、基础信息)先本地化保存,采集支持多线程、进度条、失败重试、异常捕获、日志输出。
  • 主数据库与因子加工:本地原始文件自动merge、字段补全、异常检测,关键字段如"信用评级""到期日"等强制补全,缺失时报错。
  • IC/IR统计与rolling表:支持单因子和全因子IC分析,rolling窗口统计自动批量生成,rolling表在因子加工后自动更新,回测前始终保证最新。
  • 回测与因子权重:支持多因子IC/IR动态加权,自动记录因子权重变化、因子相关性历史,输出可视化图表。
  • 健壮性与自动备份:所有关键步骤均有详细日志、异常处理和自动备份,便于调试和长期运维。
  • 兼容性:字段名、数据格式、缺失值等均有健壮性兼容,支持多数据源和后续扩展。

可用因子字段一览

  • 市场行为与价格类:
    • 收盘价
    • 价格动量5日
    • 价格动量20日
    • 波动率20日
    • 双低值(收盘价+转股溢价率,单位自适应)
  • 条款与估值类:
    • 纯债价值
    • 转股价值
    • 纯债溢价率
    • 转股溢价率
    • 剩余期限
    • 债券规模/发行规模
  • 信用与财务类:
    • 信用评级分数(已自动数值化)
    • 净资产收益率(如有)
    • 其他正股财务因子(如净利润、营业总收入、流动比率等,需查主表字段)
  • 正股相关因子:
    • 正股动量5日
    • 正股动量20日
    • 正股收盘价
  • 分位数类(辅助分析):
    • 双低值分位数
    • 价格动量5日分位数
    • 价格动量20日分位数
    • 纯债溢价率分位数
    • 溢价率分位数
    • 正股动量5日分位数
    • 正股动量20日分位数

所有上述字段均可直接用 --analyze-factor 字段名 进行因子分析。主表中所有数值型字段均可自定义分析。

结果输出

  • charts/ 目录下自动保存净值对比图、因子分析图(超额收益与最大回撤均为面积图)
  • factor_holdings_history.xlsx 自动导出持仓历史
  • 控制台自动输出结构化结论报告
  • stock_finance_db_ths.pkl 为正股财务数据库,主程序自动合并所有财务因子

数据更新说明

  • 目前自动数据增量更新未实现,需通过"采集正股财务数据库"、"采集正股历史价格"等命令手动更新数据。

开源协议

本项目可自由用于学术与个人研究,欢迎二次开发与贡献!

2024年6月:主数据库字段自动检测与补全过程

  • 新增主数据库"到期日/到期时间"与"剩余期限"字段自动检测与补全机制。
  • 支持自动检测主表缺失的到期日,自动从 info 表补全,类型统一为 pd.Timestamp。
  • 剩余期限字段自动用"到期日-日期"计算,确保回测区间可推进到主数据库最新数据。
  • 自动输出缺失比例、未补全转债代码样例,便于进一步数据修复。
  • info 表与主表 merge 逻辑更健壮,兼容字段名差异与代码格式。
  • 回测主循环、因子加工、辅助表采集等流程均支持自动检测与修复,极大提升工程化与自动化水平。
  • 本轮 debug 详见 git commit 记录。

常用命令

1. 数据采集与主数据库合成

python factor_strategy.py --update           # 自动采集并合成主数据库
python factor_strategy.py --fetch-bond-price-raw      # 采集可转债原始行情
python factor_strategy.py --fetch-stock-price-raw     # 采集正股原始行情
python factor_strategy.py --fetch-stock-finance-raw   # 采集正股原始财务
python factor_strategy.py --fetch-bond-info-raw       # 采集可转债基础信息
python factor_strategy.py --build-db                  # 合成主数据库

2. 因子加工与IC/IR rolling表自动生成

python factor_strategy.py --preprocess-factors        # 加工并补全所有基础因子,自动生成IC/IR rolling表

3. 回测与因子分析

python factor_strategy.py --backtest                  # 运行回测,自动动态加权、输出图表
python factor_strategy.py --analyze-factor 双低值      # 分析指定因子的有效性,自动补全静态IC/IR表

4. 其它辅助命令

python factor_strategy.py --test-db                   # 检查主数据库完整性
python factor_strategy.py --diagnose-finance          # 诊断财务数据库与主表合并情况
python factor_strategy.py --check-all-db              # 检查所有数据库最新日期和记录数

IC/IR表与rolling表自动维护机制

  • factor_ic_mean.csvfactor_ic_std.csv:静态IC/IR均值和标准差,单因子分析时自动合并追加。
  • factor_ic_mean_rolling.csvfactor_ic_std_rolling.csv:rolling窗口IC/IR统计,在因子加工(preprocess_factors)后自动批量生成,始终覆盖所有因子和回测区间。
  • 回测主流程自动读取rolling表,动态加权,兼容历史和新因子。

健壮性与工程化细节

  • 所有流程均有详细日志、异常捕获、自动备份,支持断点续跑。
  • 字段补全、数据格式、缺失值等均有健壮性兼容,支持多数据源。
  • 支持长期自动化运维和科学研究。

如需更多细节或定制化开发,请查阅源码或联系维护者。

About

微信:87766554/公众号:还在研究ing

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages