Skip to content

Ron-Wang/FundStrategy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 

Repository files navigation

FundStrategy

基金多因子筛选与月度调仓回测模型

面向公募基金(灵活配置型/偏股混合型/普通股票型)的量化筛选+滚动回测一体化工具,支持多维度评分、自定义权重、多种加权方式、基准对比与完整绩效分析。

核心功能

基金指标全自动计算 近1年/3年收益、年化波动、最大回撤、夏普比率、卡玛比率、正收益月份占比、回撤恢复时间、下行波动等

多因子评分体系 收益能力 + 风险控制 + 持仓稳定性 三维打分,支持自定义权重,自动星级评级

严格初筛机制 成立年限、收益门槛、回撤约束,快速剔除劣质基金

月度调仓回测 按月末自动调仓,支持4种权重分配:等权/评分加权/夏普加权/评分平方加权

基准对比 + 超额分析 支持接入指数基准,计算超额收益、信息比率、跟踪误差、相对回撤

完整结果输出 每期评分表、调仓记录、日度净值、绩效指标、基准&超额净值全保存

项目结构

项目目录/
├── Fund_data/
│   └── Fund_value/       # 基金净值数据(按年份文件夹存放)
├── Benchmark/            # 基准指数文件(可选)
├── backtest_*/           # 回测结果自动生成目录
└── fund_model.py         # 主程序代码

数据要求

基金数据

  • 文件格式:净值_灵活配置型.csv / 净值_偏股混合型.csv / 净值_普通股票型.csv
  • 必须字段:code(基金代码)、day(日期)、refactor_net_value(复权净值)
  • 目录结构:按年份分文件夹(如2020/、2021/)

基准数据(可选)

  • Excel文件,包含:日期Date收盘Close
  • 用于策略对比、计算超额收益

环境安装

pip install pandas numpy openpyxl python-dateutil

快速使用

1. 基础配置(修改主程序路径)

DATA_PATH = "你的基金净值路径"
BENCHMARK_PATH = "你的基准Excel路径"  # 无基准填 None

2. 运行单次基金评分(输出榜单)

model = FundScreeningModel(DATA_PATH, end_date="2026-04-05")
result = model.run_pipeline()

输出:基金评分结果.csv(综合评分前N基金榜单)

3. 运行月度调仓回测(推荐)

custom_weights = {'return_ability': 0.7, 'risk_control': 0.2, 'stability': 0.1}

nav, reb, perf = model.run_backtest(
    start_date="2020-01-01",
    top_n=5,                    # 每期持仓5只
    weight_method='score_squared',
    save_dir='./backtest_result',
    benchmark_path=BENCHMARK_PATH,
    custom_weights=custom_weights
)

回测权重方法

方式 说明
equal 等权重
score 按综合评分线性加权
sharpe 按夏普比率加权
score_squared 评分平方加权(强化头部基金)

评分体系(可自定义权重)

  • 收益能力 60%~70% 近3年收益、近1年收益、近6月动量、夏普比率
  • 风险控制 20% 最大回撤、年化波动、下行波动
  • 稳定性 10%~20% 正收益月份占比、卡玛比率、回撤恢复速度

初筛条件(可在代码中调整)

  • 成立年限 ≥ 3年
  • 近3年收益率 > 20%
  • 近1年收益率 > 0
  • 历史最大回撤 ≥ -20%

输出文件说明

回测完成后自动在 save_dir 生成:

  • nav_*.csv:策略日度净值
  • benchmark_*.csv:基准净值(如有)
  • excess_nav_*.csv:超额净值
  • rebalance_*.csv:每期调仓基金+权重
  • scores_*.csv:每期完整基金评分
  • performance_*.csv:绩效指标汇总

核心绩效指标

  • 总收益 / 年化收益
  • 年化波动 / 夏普比率
  • 最大回撤 / 卡玛比率
  • 超额收益 / 信息比率
  • 跟踪误差 / 相对最大回撤

适用场景

  • 公募基金量化优选
  • 基金组合策略回测
  • 基金产品业绩归因与评价
  • 投顾组合策略研发

代码结构说明

主类:FundScreeningModel

  • __init__:初始化路径与日期
  • load_and_merge_data:加载多年份基金数据
  • calculate_fund_metrics:计算基金核心指标
  • initial_screening:基金初筛
  • calculate_scores:多因子评分+排名
  • run_pipeline:单次评分流程
  • run_backtest:月度调仓回测(主函数)
  • _calculate_performance:绩效指标计算

注意事项

  1. 首次运行会全量计算,耗时较长
  2. 回测起始日期必须满足基金成立满3年
  3. 基准文件日期必须与基金日期区间覆盖
  4. 权重与筛选条件可根据策略风格自由调整

典型回测命令(直接可用)

if __name__ == "__main__":
    DATA_PATH = r"./Fund_data/Fund_value"
    BENCHMARK_PATH = r"./Benchmark/930950perf.xlsx"

    model = FundScreeningModel(DATA_PATH, end_date="2026-04-05")
    
    # 激进风格:高收益权重 + 评分平方加权
    custom_weights = {'return_ability': 0.7, 'risk_control': 0.2, 'stability': 0.1}
    
    nav, reb, perf = model.run_backtest(
        start_date="2020-01-01",
        top_n=5,
        weight_method='score_squared',
        save_dir='./backtest_aggressive',
        benchmark_path=BENCHMARK_PATH,
        custom_weights=custom_weights
    )

About

基金多因子筛选与月度调仓回测

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages