hbmodelstoreBeta

模型构建

模型通过基金净值收益和债券市场收益因子的联动关系,估计基金在不同期限与信用利差上的风险暴露。在同一套因子体系下,无 Alpha 模型使用短窗口测算当前风险暴露与修正久期;有 Alpha 模型使用长窗口研究风险调整后的收益成分。

一、样本与模型分支

模型根据模型日当时已经生效的最新一期季报持仓信息,将基金样本分为利率债基金和信用债基金。两类样本共享同一套模型骨架,但采用不同的因子配置。

报告生效规则

季度末报告统一从报告期结束后的第二个月首日起生效:

报告期模型生效日
3 月 31 日5 月 1 日
6 月 30 日8 月 1 日
9 月 30 日11 月 1 日
12 月 31 日次年 2 月 1 日

样本筛选

同一基金存在多个份额时,仅保留初始份额,避免重复纳入。仓位筛选条件如下:

筛选项条件
股票仓位等于 0
可转债仓位等于 0
债券仓位大于或等于 50%

同时排除 QDII 债券型基金、混合估值法基金、摊余成本法基金、已经到期的基金,以及成立时间不足以支持完整 30 个交易日估计窗口的基金。

上述条件构成30日风险暴露模型的基础样本。240日Alpha模型在此基础上进一步限定为中长期纯债型基金,并剔除定期开放基金。两条估计链共享因子体系,但不使用完全相同的基金样本。

模型分支

信用债仓位按以下口径计算:

信用债仓位=债券仓位−国债仓位−政策性金融债仓位.\text{信用债仓位} = \text{债券仓位} - \text{国债仓位} - \text{政策性金融债仓位}.

模型以 5% 的信用债仓位为分界:信用债仓位 ≤ 5% 的基金进入利率债基金分支,> 5% 的基金进入信用债基金分支。

因子名称利率债基金信用债基金
国债因子●●
政策性金融债利差因子●●
二级资本债利差因子—●
高评级普通信用债利差因子—●
低评级普通信用债利差因子—●

* ● 表示该模型分支启用相应因子,— 表示不启用。

二、因子构建

国债期限因子由中债国债即期收益率曲线构造;利差因子由资产曲线与基准曲线的到期收益率曲线构造。为了将两类曲线纳入同一回归,模型对每个曲线节点采用相同的日收益变换。

曲线收益转换

为什么使用收益率曲线

模型不直接使用债券指数收益,而是根据收益率曲线的固定期限节点构造日收益因子。在现有验证中,债券指数的成分变化和期限漂移会降低短窗口暴露的稳定性;曲线节点能够提供固定的期限基底,并与后续久期计算保持一致。

对于曲线 cc、期限节点 jj 和交易日 τ\tau,将年化节点收益率代入零息债券定价形式,得到节点价格代理:

Pj,τ(c)=(1+yj,τ(c))−j.P^{(c)}_{j,\tau} =\left(1+y^{(c)}_{j,\tau}\right)^{-j}.

令相邻交易日的自然日间隔为

Δτ=dτ−dτ−1365,\Delta_\tau=\frac{d_\tau-d_{\tau-1}}{365},

持有一期后的节点收益代理为

Rj,τ(c)=(1+yj,τ(c))−(j−Δτ)(1+yj,τ−1(c))−j−1.R^{(c)}_{j,\tau} = \frac{ \left(1+y^{(c)}_{j,\tau}\right)^{-(j-\Delta_\tau)} }{ \left(1+y^{(c)}_{j,\tau-1}\right)^{-j} } -1.

计算剩余期限 j−Δτj-\Delta_\tau 的价格时,使用交易日 τ\tau 的 jj 年节点收益率近似,不另作期限插值。0 年节点作为短端现金收益代理,对应 R0,τ(c)=(1+y0,τ(c))Δτ−1R^{(c)}_{0,\tau}=(1+y^{(c)}_{0,\tau})^{\Delta_\tau}-1。

基本因子

正式基准期限节点为 J={0,1,3,10,30}\mathcal J=\{0,1,3,10,30\}。基本因子使用中债国债即期收益率曲线:

Lj,τ=Rj,τ(G),j∈J.L_{j,\tau}=R^{(G)}_{j,\tau}, \qquad j\in\mathcal J.

利差因子

利差因子由资产曲线与基准曲线的节点收益代理之差构成:

Sk,j,τ=Rj,τ(ak)−Rj,τ(mk).S_{k,j,\tau} =R^{(a_k)}_{j,\tau}-R^{(m_k)}_{j,\tau}.
因子名称做多收益率做空收益率
政策性金融债利差因子国开债收益率国债收益率
二级资本债利差因子AAA-二级资本债收益率国债收益率
高评级普通信用债利差因子AAA中短期票据收益率国债收益率
低评级普通信用债利差因子AA+中短期票据收益率国债收益率

因子期限配置

信用债基金使用全部四类利差因子,各因子的启用期限如下:

分类因子名称0Y1Y3Y10Y30Y
基本因子国债因子●●●●●
利差因子政策性金融债利差因子●●●●—
利差因子二级资本债利差因子●●●——
利差因子高评级普通信用债利差因子●●●——
利差因子低评级普通信用债利差因子●●●——

利率债基金使用的因子期限与信用债基金相同,但仅使用政策性金融债利差因子:

分类因子名称0Y1Y3Y10Y30Y
基本因子国债因子●●●●●
利差因子政策性金融债利差因子●●●●—

* 期限配置主要依据公募基金实际信用暴露的久期范围,并结合各期限数据质量确定;● 表示该期限启用,— 表示对应因子固定为 0。

未启用期限不进行插值或外推。二级资本债利差因子自 2018 年 12 月 31 日起逐步启用,至 2019 年 6 月 30 日完全纳入;30 年期限节点自 2023 年 6 月 30 日起逐步启用,至 2023 年 12 月 31 日完全纳入。启用时点主要依据公募基金介入相关资产的时间确定;在此之前,相应因子不进入回归,过渡期则采用 Hybrid 方式衔接新旧模型结果。

历史衔接

二级资本债利差因子和30年期限节点采用渐进启用,而不是在因子首次出现时硬切换。过渡期分别计算新旧模型结果并按启用进度加权,避免历史序列因模型结构变化产生机械断点。2023年12月31日以后,在正式组件有效且未发生回退时,历史衔接结果与完整正式模型一致。

三、嵌套期限—利差模型

对基金 ii,期限节点 jj 上的组合因子为

Xi,j,τ=Lj,τ+∑k∈Ki,tγi,k,tSk,j,τ.X_{i,j,\tau} =L_{j,\tau} +\sum_{k\in\mathcal K_{i,t}} \gamma_{i,k,t}S_{k,j,\tau}.

基金收益的拟合值为

r^i,τ=αi,t+∑j∈Jβi,j,tXi,j,τ,\widehat r_{i,\tau} =\alpha_{i,t} +\sum_{j\in\mathcal J} \beta_{i,j,t}X_{i,j,\tau},

即

ri,τ=αi,t+∑j∈Jβi,j,tLj,τ+∑k∈Ki,tγi,k,t∑j∈Jβi,j,tSk,j,τ+εi,τ.r_{i,\tau} = \alpha_{i,t} + \sum_{j\in\mathcal J}\beta_{i,j,t}L_{j,\tau} + \sum_{k\in\mathcal K_{i,t}} \gamma_{i,k,t} \sum_{j\in\mathcal J} \beta_{i,j,t}S_{k,j,\tau} +\varepsilon_{i,\tau}.

按利差类别展开后为

ri,τ=αi,t+∑j∈Jβi,j,tLj,τ+γi,政策性金融债,t∑j∈{0,1,3,10}βi,j,tS政策性金融债,j,τ+γi,二级资本债,t∑j∈{0,1,3}βi,j,tS二级资本债,j,τ+γi,高评级普通信用债,t∑j∈{0,1,3}βi,j,tS高评级普通信用债,j,τ+γi,低评级普通信用债,t∑j∈{0,1,3}βi,j,tS低评级普通信用债,j,τ+εi,τ.\begin{aligned} r_{i,\tau} ={}&\alpha_{i,t} +\sum_{j\in\mathcal J}\beta_{i,j,t}L_{j,\tau} \\ &+\gamma_{i,\text{政策性金融债},t} \sum_{j\in\{0,1,3,10\}}\beta_{i,j,t}S_{\text{政策性金融债},j,\tau} \\ &+\gamma_{i,\text{二级资本债},t} \sum_{j\in\{0,1,3\}}\beta_{i,j,t}S_{\text{二级资本债},j,\tau} \\ &+\gamma_{i,\text{高评级普通信用债},t} \sum_{j\in\{0,1,3\}}\beta_{i,j,t}S_{\text{高评级普通信用债},j,\tau} \\ &+\gamma_{i,\text{低评级普通信用债},t} \sum_{j\in\{0,1,3\}}\beta_{i,j,t}S_{\text{低评级普通信用债},j,\tau} +\varepsilon_{i,\tau}. \end{aligned}

利率债基金只保留政策性金融债利差因子;信用债基金使用全部四类利差因子。

同一类利差在各期限节点共享一个强度参数 γi,k,t\gamma_{i,k,t},期限结构由 βi,j,t\beta_{i,j,t} 统一决定。两种模型共享上述结构,但采用不同的估计窗口和 Alpha 处理。

四、约束条件

30 日无 Alpha 模型与 240 日有 Alpha 模型使用相同的期限暴露和利差强度约束。

期限暴露非负且合计为 1:

βi,j,t≥0,∑j∈Jβi,j,t=1.\beta_{i,j,t}\ge0, \qquad \sum_{j\in\mathcal J}\beta_{i,j,t}=1.

为什么固定为 1

基金杠杆水平难以准确估计。将期限暴露总和固定为 1 后,模型结果整体更加稳定,因此没有采用允许暴露总和在一定范围内浮动的区间约束。

利差强度非负;信用债分支的利差强度上限为 1.5:

γi,k,t≥0,0≤γi,k,t≤1.5(k∈Kcredit).\gamma_{i,k,t}\ge0, \qquad 0\le\gamma_{i,k,t}\le1.5 \quad(k\in\mathcal K_{\mathrm{credit}}).

利率债基金分支只使用政策性金融债利差因子,该参数不设置有限上限。

五、异常观测处理与优化器

两个模型共享相同的因子结构、参数约束和 SLSQP 求解器,但服务于不同的估计目标,并采用不同的异常观测处理方式。30 日无 Alpha 模型关注近期风险暴露,通过 Huber 损失降低极端残差的影响;240 日有 Alpha 模型关注较长期的风险调整后收益,先剔除明确的正向净值跳点,再使用平方损失估计。

模型主要目标估计窗口Alpha 处理异常观测处理权重与损失
30 日无 Alpha 模型风险暴露与修正久期30 个交易日固定为 0通过 Huber 损失降低极端残差权重半衰期 15 个交易日的指数权重;平方损失初始化后使用 Huber 损失
240 日有 Alpha 模型风险调整后收益与基金排序240 个交易日估计窗口内的平均未解释收益剔除超过同分支当日收益中位数 50bp 的正向净值跳点等权平方损失

期限暴露 β\beta 与利差强度 γ\gamma 以乘积形式进入拟合收益,整体优化问题是非凸的。SLSQP 在前述约束条件下求取数值局部解;未成功收敛的结果不进入有效结果及后续信号计算。

30 日无 Alpha 模型

30 日模型采用半衰期为 15 个交易日的指数衰减权重,即距离模型日 15 个交易日的观测,其原始权重为最新观测的一半。令 aτ=0a_\tau=0 表示模型日、aτ=29a_\tau=29 表示窗口中最早的交易日,则

waτ=2−aτ/15130∑h=0292−h/15.w_{a_\tau} = \frac{2^{-a_\tau/15}} {\frac{1}{30}\sum_{h=0}^{29}2^{-h/15}}.

定义残差

ei,τ(β,γ)=ri,τ−r^i,τ(β,γ).e_{i,\tau}(\beta,\gamma) =r_{i,\tau}-\widehat r_{i,\tau}(\beta,\gamma).

第一阶段使用加权平方损失:

(β~i,γ~i)=arg⁡min⁡(β,γ)∈Θi,t∑τ∈Wt(30)waτei,τ(β,γ)2.(\widetilde\beta_i,\widetilde\gamma_i) = \arg\min_{(\beta,\gamma)\in\Theta_{i,t}} \sum_{\tau\in\mathcal W_t^{(30)}} w_{a_\tau} e_{i,\tau}(\beta,\gamma)^2.

为什么使用 Huber 损失

30 日窗口对单日净值异常更敏感,尤其是收益波动较小的短久期基金。第二阶段使用 Huber 损失降低极端观测的影响,提高短窗口估计的稳健性。

在第一阶段估计值处计算残差及其稳健尺度:

e~i,τ=ei,τ(β~i,γ~i),\widetilde e_{i,\tau} =e_{i,\tau}(\widetilde\beta_i,\widetilde\gamma_i), si=1.4826 median⁡τ∈Wt(30)∣e~i,τ−median⁡u∈Wt(30)e~i,u∣.s_i =1.4826\, \operatorname{median}_{\tau\in\mathcal W_t^{(30)}} \left| \widetilde e_{i,\tau} -\operatorname{median}_{u\in\mathcal W_t^{(30)}} \widetilde e_{i,u} \right|.

第二阶段使用 Huber 损失:

ρδ(z)={12z2,∣z∣≤δ,δ(∣z∣−12δ),∣z∣>δ,δ=1.345,\rho_\delta(z) = \begin{cases} \frac12z^2, & |z|\le\delta,\\[4pt] \delta\left(|z|-\frac12\delta\right), & |z|>\delta, \end{cases} \qquad \delta=1.345, (β^i,γ^i)=arg⁡min⁡(β,γ)∈Θi,t∑τ∈Wt(30)waτsi2ρ1.345 ⁣(ei,τ(β,γ)si).(\widehat\beta_i,\widehat\gamma_i) = \arg\min_{(\beta,\gamma)\in\Theta_{i,t}} \sum_{\tau\in\mathcal W_t^{(30)}} w_{a_\tau}s_i^2 \rho_{1.345}\!\left( \frac{e_{i,\tau}(\beta,\gamma)}{s_i} \right).

240 日有 Alpha 模型

240 日模型使用最近 240 个交易日的等权平方损失。每个交易日分别计算信用债基金和利率债基金的净值收益中位数;若单只基金收益超过所属分支当日中位数 50bp,该观测不进入 Alpha 回归,负向收益保留。

令 Wt(240)\mathcal W_t^{(240)} 表示模型日 tt 对应的最近 240 个交易日,rˉb,τ\bar r_{b,\tau} 表示分支 bb 在交易日 τ\tau 的基金收益中位数。剔除正向净值跳点后的观测集合为

W~i,t(240)={τ∈Wt(240):ri,τ−rˉb(i,t),τ≤0.005}.\widetilde{\mathcal W}_{i,t}^{(240)} = \left\{ \tau\in\mathcal W_t^{(240)}: r_{i,\tau}-\bar r_{b(i,t),\tau}\le 0.005 \right\}.

在保留的观测上联合估计 Alpha、期限暴露和利差强度:

(α^i,t,β^i,t,γ^i,t)=arg⁡min⁡α,(β,γ)∈Θi,t∑τ∈W~i,t(240)(ri,τ−r^i,τ(α,β,γ))2.\left( \widehat\alpha_{i,t}, \widehat\beta_{i,t}, \widehat\gamma_{i,t} \right) = \arg\min_{\alpha,(\beta,\gamma)\in\Theta_{i,t}} \sum_{\tau\in\widetilde{\mathcal W}_{i,t}^{(240)}} \left( r_{i,\tau} -\widehat r_{i,\tau}(\alpha,\beta,\gamma) \right)^2.

令 Ni,240,t=∣W~i,t(240)∣N_{i,240,t}=\left|\widetilde{\mathcal W}_{i,t}^{(240)}\right|,则 Alpha 也可以写为保留观测上的平均未解释收益:

α^i,t=1Ni,240,t∑τ∈W~i,t(240)[ri,τ−r^i,τ(0,β^i,t,γ^i,t)].\widehat\alpha_{i,t} = \frac{1}{N_{i,240,t}} \sum_{\tau\in\widetilde{\mathcal W}_{i,t}^{(240)}} \left[ r_{i,\tau} -\widehat r_{i,\tau} \left(0,\widehat\beta_{i,t},\widehat\gamma_{i,t}\right) \right].

为什么不使用 Huber 损失

240 日模型需要保留 Alpha 作为平均未解释收益的含义。明确的正向净值跳点已经在回归前剔除,其余收益完整保留,因此采用等权平方损失,不再对较大残差额外降权。

其中 r^i,τ(α,β,γ)\widehat r_{i,\tau}(\alpha,\beta,\gamma) 使用前文定义的嵌套期限—利差结构。α^i,t\widehat\alpha_{i,t} 用于刻画较长期的风险调整后收益,β^i,t\widehat\beta_{i,t} 与 γ^i,t\widehat\gamma_{i,t} 则是同一长窗口内估计的期限暴露与利差强度。

60 日冻结暴露残差

近期状态沿用240日模型已经估计的期限暴露与利差强度,不在短窗口内重新估计风险参数。令 r^i,τ,tfactor\widehat r_{i,\tau,t}^{\mathrm{factor}} 表示使用模型日 tt 的长期风险暴露,对交易日 τ\tau 计算的因子解释收益,则

mi,60,t=1Ni,60,t∑τ∈W~i,t(60)(ri,τ−r^i,τ,tfactor).m_{i,60,t} = \frac{1}{N_{i,60,t}} \sum_{\tau\in\widetilde{\mathcal W}_{i,t}^{(60)}} \left( r_{i,\tau} -\widehat r_{i,\tau,t}^{\mathrm{factor}} \right).

冻结长期风险暴露后,mi,60,tm_{i,60,t} 反映基金近期净值相对既有期限与信用结构的偏离,同时避免短窗口重新估计全部参数带来的噪声。60日结果与长期Alpha使用相同的净值异常观测处理规则。

分组与正式得分

模型先按基金分支和隐含麦考利久期五分位形成比较组。240日长期Alpha和60日冻结暴露残差均在同一模型日、同一比较组内转换为百分位排名,分别记为 Ri,tαR_{i,t}^{\alpha} 和 Ri,t60R_{i,t}^{60}。

正式生产得分按基金分支采用不同权重:

Score⁡i,tformal={0.75Ri,tα+0.25Ri,t60,信用债基金,Ri,tα,利率债基金.\operatorname{Score}_{i,t}^{\mathrm{formal}} = \begin{cases} 0.75R_{i,t}^{\alpha}+0.25R_{i,t}^{60}, & \text{信用债基金},\\ R_{i,t}^{\alpha}, & \text{利率债基金}. \end{cases}

查询接口提供两项原始排名,不直接返回混合得分。用户可以在客户端按自身收益目标和换手约束派生其他权重,50/50和25/75等组合只用于实验比较,不属于正式生产得分。

30 日模型估计的期限暴露用于生成单基修正久期,具体换算方法见单基久期测算。

符号说明

符号定义
ii基金
tt模型日
τ\tau估计窗口内的交易日
Wt(30)\mathcal W_t^{(30)}模型日 tt 对应的最近 30 个交易日
Wt(240)\mathcal W_t^{(240)}模型日 tt 对应的最近 240 个交易日
W~i,t(240)\widetilde{\mathcal W}_{i,t}^{(240)}基金 ii 剔除正向净值跳点后的 240 日观测集合
Ni,240,tN_{i,240,t}W~i,t(240)\widetilde{\mathcal W}_{i,t}^{(240)} 中保留的观测数
W~i,t(60)\widetilde{\mathcal W}_{i,t}^{(60)}基金 ii 经过净值异常观测处理后的 60 日观测集合
Ni,60,tN_{i,60,t}60 日观测集合中保留的观测数
rˉb,τ\bar r_{b,\tau}分支 bb 在交易日 τ\tau 的基金收益中位数
aτa_\tau交易日 τ\tau 距模型日的观测序号
jj期限节点,取 0、1、3、10、30 年
kk利差因子类型
Ki,t\mathcal K_{i,t}基金 ii 在模型日 tt 所属分支使用的利差因子集合
ri,τr_{i,\tau}基金日度净值收益
αi,t\alpha_{i,t}有 Alpha 模型估计的风险调整后收益截距;无 Alpha 模型固定为 0
yj,τ(c)y^{(c)}_{j,\tau}曲线 cc 在期限 jj 上的年化收益率
Lj,τL_{j,\tau}国债期限收益因子
Sk,j,τS_{k,j,\tau}利差收益因子
βi,j,t\beta_{i,j,t}基金在期限节点 jj 上的暴露
γi,k,t\gamma_{i,k,t}基金对利差因子 kk 的暴露强度
εi,τ\varepsilon_{i,\tau}未被模型解释的基金收益
Θi,t\Theta_{i,t}基金 ii 在模型日 tt 所属分支的参数约束集合
mi,60,tm_{i,60,t}60 日冻结暴露残差均值
Ri,tαR_{i,t}^{\alpha}240 日长期 Alpha 的组内百分位排名
Ri,t60R_{i,t}^{60}60 日冻结暴露残差的组内百分位排名
Score⁡i,tformal\operatorname{Score}_{i,t}^{\mathrm{formal}}按基金分支定义的正式生产得分

Last updated on

On this page