← 返回 Skill 列表
extension
分类: 数据与分析需要 API Key

主观多头基金行业归因分析

对主观多头基金净值做行业/风格归因:用申万风格指数(+可选港股指数)做滚动带约束回归,得到各板块权重并画堆叠图。当用户需要对单只公募/私募基金做持仓风格拆解、行业暴露、净值归因时使用。

person作者: user_186b4ea5hubcommunity

主观多头行业/风格归因

把一只主观多头基金的净值收益,用申万风格指数(+可选的港股指数)的周度收益做带约束滚动回归,得到基金各板块"权重"随时间变化的曲线。用于理解一只基金实际暴露在哪些行业/风格上,以及持仓风格是否漂移。

一、第一步:先确认港股暴露(必做)

开始归因前,必须先用自然语言向用户确认该基金是否持有港股,再据此决定因子集:

  1. 问用户:"这只基金是否持有港股(可投港股通/沪港深)?"

    • 有港股 → 继续问:"港股部分用什么风格代理——恒生科技 还是 恒生指数?"
      • 选 恒生科技:因子集 = 6 个 A股申万风格 + 恒生科技(HSTECH.HI)
      • 选 恒生指数:因子集 = 6 个 A股申万风格 + 恒生指数(HSI.HI)
    • 无港股 → 只用 6 个 A股申万风格指数,不加港股项。
  2. 根据回答调用 build_factor_set(hk_style) 生成因子集:

    from sector_attribution import build_factor_set
    factor = build_factor_set(None)          # 无港股
    factor = build_factor_set("恒生科技")     # 港股-恒生科技
    factor = build_factor_set("恒生指数")     # 港股-恒生指数
    

    CLI 对应 --hk-style:--hk-style 恒生科技 / --hk-style 恒生指数,无港股则不传。

二、运行

准备基金净值数据

xls / xlsx / csv 均可,需含日期列和单位净值列,脚本自动识别。

CLI 运行

# 无港股
python sector_attribution.py "净值.csv" --start 2023-01-01 --end 2026-03-06 --window 12 --out ./out
# 有港股-恒生科技
python sector_attribution.py "净值.csv" --hk-style 恒生科技 --start 2023-01-01 --end 2026-03-06 --window 12 --out ./out

或 Python 直接调用:

from sector_attribution import run_attribution
run_attribution("净值.csv", hk_style="恒生科技", start_date="2023-01-01",
                end_date="2026-03-06", window=12, out_dir="./out")

输出

  • <基金名>_归因权重.csv:各风格权重 + "其他"(未解释/现金)的时序
  • <基金名>_归因权重.png:堆叠面积图

三、因子集说明

A股基础六类(恒有)

| 维度 | 代码 | 说明 | |------|------|------| | 周期 | 801271.SI | 申万大类风格-周期 | | 制造 | 801272.SI | 申万大类风格-先进制造 | | 消费 | 801273.SI | 申万大类风格-消费 | | 生物医药 | 801274.SI | 申万大类风格-医药医疗 | | 科技(TMT) | 801275.SI | 申万大类风格-TMT | | 金融地产 | 801276.SI | 申万大类风格-金融地产 |

可选港股(按用户确认二选一)

| 维度 | 代码 | 说明 | |------|------|------| | 恒生科技 | HSTECH.HI | 港股科技风格代理 | | 恒生指数 | HSI.HI | 港股整体风格代理 |

自定义指数:

from sector_attribution import run_attribution, build_factor_set
indexes = {**build_factor_set("恒生科技"), "农林牧渔": "801010.SI"}
run_attribution("nav.xlsx", indexes=indexes)

四、方法说明

回归约束

每个滚动窗口内,解带约束最小二乘:

min Σ (y_t − Σ w_i·x_{i,t})²
约束: w_i ≥ 0,  Σ w_i ≤ 1

其他 = 1 − Σw_i 反映现金/未解释/指数外暴露。

参数

  • window:滚动窗口(默认 12 周)。越大越平滑,越小越敏感。
  • hk_style:"恒生科技" / "恒生指数" / None(无港股)。
  • 数据点不足 window+1 会报错,需要更长净值序列。

五、数据源

  • 优先 WindPy(需登录 Wind 终端);否则自动回退 Wind AIFin CLI(token 模式),需设置 WIND_API_KEY。
  • 若换成 tushare/akshare 等,仅需替换 get_wind_index_data 与 load_fund_nav 的数据获取层。

六、注意事项

  • 归因结果是"风格暴露"意义上的近似,不是真实持仓。
  • 净值含分红/拆分时用"累计净值"或复权净值,避免收益失真。
  • 不同窗口与指数组合结果不同,建议多组参数交叉验证风格是否稳定。