本项目实现了可转债多因子量化策略的全流程工程化,包括:数据采集、本地化、主数据库合成、因子加工、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-
数据采集与更新
- 采集/更新主数据库(可转债行情与基础因子):
python factor_strategy.py --update
- 采集正股财务数据库(建议先运行一次):
python factor_strategy.py --update-finance
- 采集正股历史价格(如需用正股动量因子,建议先运行一次):
python factor_strategy.py --update-stock-price
- 采集/更新主数据库(可转债行情与基础因子):
-
因子加工与预处理
- 默认加工(生成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
- 默认加工(生成5日/20日动量、波动率等):
-
因子分析
- 分析指定因子的有效性(如"价格动量20日"):
python factor_strategy.py --analyze-factor 价格动量20日
- 分析指定因子的有效性(如"价格动量20日"):
-
策略回测
- 运行回测并输出持仓、净值、图表、报告:
python factor_strategy.py --backtest
- 或直接运行(默认回测):
python factor_strategy.py
- 运行回测并输出持仓、净值、图表、报告:
-
数据库健康检查与诊断
- 检查主数据库完整性:
python factor_strategy.py --test-db
- 诊断财务数据库与主表合并情况:
python factor_strategy.py --diagnose-finance
- 检查主数据库完整性:
- 所有核心参数(回测区间、调仓频率、持仓数量、因子列表、权重、风控等)均在
config.py的Config类中集中配置。 - 支持命令行参数灵活指定因子加工窗口、分析因子等,详见主入口文件注释或
python factor_strategy.py --help。
- 图表自动保存在
charts/目录 - 持仓历史导出为
factor_holdings_history.xlsx - 结构化结论报告自动输出到终端
- 可在
factors.py、backtest.py、analyze.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 为正股财务数据库,主程序自动合并所有财务因子
- 目前自动数据增量更新未实现,需通过"采集正股财务数据库"、"采集正股历史价格"等命令手动更新数据。
本项目可自由用于学术与个人研究,欢迎二次开发与贡献!
- 新增主数据库"到期日/到期时间"与"剩余期限"字段自动检测与补全机制。
- 支持自动检测主表缺失的到期日,自动从 info 表补全,类型统一为 pd.Timestamp。
- 剩余期限字段自动用"到期日-日期"计算,确保回测区间可推进到主数据库最新数据。
- 自动输出缺失比例、未补全转债代码样例,便于进一步数据修复。
- info 表与主表 merge 逻辑更健壮,兼容字段名差异与代码格式。
- 回测主循环、因子加工、辅助表采集等流程均支持自动检测与修复,极大提升工程化与自动化水平。
- 本轮 debug 详见 git commit 记录。
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 # 合成主数据库python factor_strategy.py --preprocess-factors # 加工并补全所有基础因子,自动生成IC/IR rolling表python factor_strategy.py --backtest # 运行回测,自动动态加权、输出图表
python factor_strategy.py --analyze-factor 双低值 # 分析指定因子的有效性,自动补全静态IC/IR表python factor_strategy.py --test-db # 检查主数据库完整性
python factor_strategy.py --diagnose-finance # 诊断财务数据库与主表合并情况
python factor_strategy.py --check-all-db # 检查所有数据库最新日期和记录数factor_ic_mean.csv、factor_ic_std.csv:静态IC/IR均值和标准差,单因子分析时自动合并追加。factor_ic_mean_rolling.csv、factor_ic_std_rolling.csv:rolling窗口IC/IR统计,在因子加工(preprocess_factors)后自动批量生成,始终覆盖所有因子和回测区间。- 回测主流程自动读取rolling表,动态加权,兼容历史和新因子。
- 所有流程均有详细日志、异常捕获、自动备份,支持断点续跑。
- 字段补全、数据格式、缺失值等均有健壮性兼容,支持多数据源。
- 支持长期自动化运维和科学研究。
如需更多细节或定制化开发,请查阅源码或联系维护者。