众所周知影响A类的估值十分复杂,传统来说是以隐含收益率为主流价值参考方式。隐含收益率本身是个非常有价值的指标,它代表的是预期的年定折收益率。但是,我相信市场效率本身是无法完全解释5.33%到6.59%不等的同质化A类基金隐含收益率的,不定期折算也会大幅影响到A类的估值。
在本项目的模型下,我们引入一个标准化A类基金的概念:
一个标准化A类基金从1元净值起始,净值不间断以年化 i + m 的利率增长(i为浮动一年定存利率,m为固定超额利率),永续存在。同时具有以下特征:
- 与对应B类基金5:5配对,A净值为A,B净值为B,母基金净值为M
- 在每年的特定日期出现一次定折,把超过1元净值部分分配
- 在母基金净值超过 UAT 元时,参与上折,与定折方式相同
- 在B类基金净值低于 DAT 元时,参与下折,返还 A-B 元,同时净值回归为 1 元,份额变成原来的 B 倍
同时我们做一些必要的假设:
- 标准化A类基金的内在价值等于其某一时间点后所有未来折现现金流的和,与二级市场价格无关。理论上说,A类基金的本金应该是通过永续期内无限次数的下折拿回来的。
- 在折算时,标准化母基金可以无波动无成本赎回
- 投资者的折现率,即预期收益率为 r
- 投资者没有风险偏好
- 标准化母基金的净值成对数正态分布(log-normal distribution),平均年化收益率等于平均市场收益率 rm,设标准差为 v,可以使用历史波幅或母基金跟踪指数的期权市场引申波幅来模拟。分红包含在 rm 内。
- 除了三种折算,没有其他利益分配方式
- 金融模型都有的假设:没有交易成本(包括管理费在内),没有套利机会,没有税
根据以上定义,标准化A类基金在任何时间点必然有一个唯一的理论价值 P,这个价值是以下变量的函数:
- A: A类基金的净值
- M:母基金的净值,同时B可以通过M*2-A来获得
- i:约定收益率浮动部分,即一年定存
- m:约定收益率固定部分,即+3, +3.5, +4等
- UAT:上折母基金净值阈值,如1.5元
- DAT:下折B类基金净值阈值,如0.25元
- r:投资者的折现率或预期收益率,经济学中 r 应等于投资者的持有现金的机会成本。
- rm: 股票市场平均期望收益率
- v:母基金净值波动的标准差,约等于引申波幅约等于历史波幅
- d:一年中的日期,决定着离下一次定折的距离
其实我们已经可以看到,A类基金的估值比期权还要复杂的多,期权估值要考虑标的价、行权价、波动率、分红率、无风险利率和剩余时间这 6 个因素,而A类基金有 10 个因素都会直接影响到估值。如果你引入投资者风险偏好的话,变量会更多。
这意味着直接推算出一个估值公式出来是不容易的(虽然我相信会有牛人可以做出来),但是通过 Monte Carlo 模拟,我们可以模拟出一个标准化A类基金在未来50年的现金流(基本可以把全部本金折出来,折现后就可以忽略不计了)情况。每一种情况都是随机生成的,如果有100种情况,这些情况的平均折现现金流之和就是反映这个A类基金的价值一个非常可靠的指标了。
以下为simulation.rb
程序中的默认参数,也是实验结果的基础参数:
- A、B和母基金净值都为1.00
- 一年定存利率:2.50%
- 约定收益率差额:+3.00%
- 上折阈值:母基金1.50
- 下折阈值:B净值0.25
- 折现率:8%年化
- 跟踪指数长期平均收益率:10%年化
- 跟踪指数长期波动率:30%年化
- 持有期限:50年(之后剩下的份额价值归零处理)
通过 bundle install
可以安装所有依赖的 RubyGems。
本项目自带五个实验程序:
volatility.rb
: 波动率分析market_return.rb
: 市场回报率分析m_nav.rb
: 母基金净值分析discount_rate.rb
: 折现率分析uat.rb
: 上折阈值分析
注意:由于涉及到长达50年的逐日股票行情模拟,以及默认100的样本大小,实验程序的计算量很大。建议使用高性能计算机进行计算。
如果你不想自己计算,可以参考 results/
目录里面的结果。