技术博客

FOF 的估值难点:双层净值穿透

第 115 / 141 篇 · 2026-06-11 · secfin · FOF估值核算净值穿透

FOF(Fund of Funds)把大部分资产投给其他基金,估值的麻烦从第一天就埋下了:它持有的不是有市价的股票债券,而是份额净值未知的非上市资产。普通股票基金估值,收盘价晚上八点左右就齐了(《公允价值与估值模型》篇),FOF 要等子基金先估完自己,才能开始估 FOF。这一篇讲这个依赖链在系统里的处理方式。

双层净值的公式结构

FOF 的净值公式和普通基金同构,麻烦全在取数环节:

$$ NAV_{FOF} = \frac{\sum_i q_i \cdot NAV_i + C - L}{S} $$

$q_i$ 是持有的子基金 $i$ 的份额,$NAV_i$ 是子基金当日净值,$C$ 是现金及等价物,$L$ 是负债(应付管理费、应付赎回款等),$S$ 是 FOF 总份额。每一项里只有 $C$ 和 $L$ 里的应付项目是 FOF 自己能直接算出来的,$\sum q_i \cdot NAV_i$ 要等子基金管理人的净值公告。

这个等待有硬性时序:A 股股票基金通常 T 日晚出净值,QDII 因为海外市场时区 T+1 日出,投资 QDII 的 FOF 只能 T+1 估 T 日的值,净值公告再晚一天。所以 FOF 的估值批次在调度图里永远排在股票基金之后(《清算任务编排》篇的依赖图思想),依赖层级决定了产品能承诺给客户多快的净值披露。

处理顺序:按依赖图拓扑排序

估值批次的通用解法是拓扑排序:把每个产品看成节点,"FOF 持有子基金"看成边,无环图按依赖层级分批。实际落地时分三层:

  1. 底层资产型:股票、债券基金,依赖行情数据,第一批估;
  2. 单层 FOF:只持有底层资产型子基金,第二批估;
  3. 多层嵌套(FOF 持有 FOF):按层级往后推,每一层都要等上一层出齐。

调度器要处理两个工程问题:一是部分依赖失败——某只子基金因重大事项暂停估值,持有它的 FOF 不能整体停摆,进入近似估值分支;二是循环防护——业务上不允许 FOF 互持形成环(会构成估值死锁),系统在产品准入时校验持仓关系成环检测,发现环直接拒绝产品设计。

底层未估值:近似与校正

子基金 $i$ 当日净值不可得时,用替代值估:

$$ \widehat{NAV_i} = NAV_{i,t-1} \times (1 + r^{bench}_t) $$

用子基金上一日净值乘以一个基准收益率。基准选择有讲究:宽基指数(沪深 300、中证 800)波动大、偏离大;更好的做法是用子基金最新定期报告披露的重仓股组合构造模拟收益,或者干脆用同策略姊妹基金的当日实际收益。近似估值必须在估值表里打标记,子基金净值出来后跑差值校正:校正额 = $(NAV_i - \widehat{NAV_i}) \times q_i$,按更正流程调整(《错账处理:红冲与蓝补》篇的机制在估值侧的对应),并通知代销渠道更新已公告净值——这是 FOF 净值经常"二次公告"的原因,不是出了错,是底层终于出数了。

双重收费与净值口径

FOF 持有子基金份额,子基金每日从资产里计提管理费;FOF 自己也收管理费。客户实际承担两层费率。估值层面这没有难题(费用都在净值公式里),但产品层面的费率披露和业绩比较基准要扣净口径——用"扣除子基金管理费后的净收益"比较才有意义。系统上意味着 FOF 的绩效报表要维护两套口径:毛口径(FOF 自身运作)和净口径(客户视角全成本),披露用净口径。

另一个口径问题是估值精度:《净值计算的四则运算》篇讲过净值保留四位小数的精度设计,FOF 多套一层,分子端的舍入误差被 $S$ 放大前要先在 $q_i \cdot NAV_i$ 各项里各自收敛(份额乘净值保留足够精度再汇总,不能先汇总份额再乘平均净值),否则小额多产品组合会产生系统性分位误差。

FOF 估值依赖链与近似估值分支 行情数据 收盘价 20:00 齐 底层基金 股票/债券基金 单层 FOF 等子基金净值 多层 FOF 按层级后推 子基金未估值 近似估值分支 净值出齐 差值校正重公告 近似估值:当日估值 = 上日净值 × (1+基准收益), 校正额 = (真实净值 − 近似值) × 份额

FOF 估值给估值系统的要求可以总结为一句话:把"等产品"做成一等公民。依赖调度、近似分支、差值校正是三个必须内建的能力,事后用 Excel 补丁的平台做不了 FOF,这就是嵌套类产品倒逼估值系统升级的机制。