被动型FOF产品规划方案(附代码)
前言
按照基本的投资策略,基金可以被分类为被动型基金和主动性基金。被动型基金主要投资于指数产品,主动性基金则会采取更加灵活多变的策略来选择标的资产池。但是,两者都需要对标的资产的权重进行优化。
本文将介绍了笔者设计的一个用于被动型FOF(“ Fund of Fund” ,中文 “基金中的基金” )投资的产品方案设计思路,涉及到的调仓权重优化方法包括马科维兹优化、风险平价优化、Black-Litterman模型。
在连接至Wind 数据库的情况下,运行程序并输入您所需要的投资组合的起止日期、标的资产的代码、回测数据所使用的的时间窗口、调仓频率,您就可以得到投资组合在三种优化方法下每日的持仓权重。 (代码和数据于本文末下载)
资产配置模型
马科维兹模型
马科维茨的均值一方差组合模型(Markovitz Mean-Variance Model)用收益率序列均值来代表投资组合的收益,用收益率序列方差来代表投资组合的风险,以此来平衡投资组合的风险和收益。
投资组合预期收益的计算公式为:
E ( R p ) = ∑ i ω i E ( R i ) E(R_p)=\sum_{i}^{}\omega_iE(R_i) E(Rp)=i∑ωiE(Ri)
投资组合预期方差的计算公式为:
σ p 2 = ∑ i ω i 2 σ i 2 + ∑ i ∑ i ≠ j ω i ω j σ i σ j ρ i j \sigma_{p}^{2}=\sum_{i}^{}\omega_{i}^{2}\sigma_{i}^{2}+\sum_{i}^{}\sum_{i\neq j}^{}\omega_i\omega_j\sigma_i\sigma_j\rho_{ij} σp2=i∑ωi2σi2+i∑i=j∑ωiωjσiσjρij
用矩阵的方法来表示有效前沿:
ω T ∑ ω − q ∗ R T ω \omega ^{T}\sum \omega-~q~*R^{T}\omega ωT∑ω− q ∗RTω
用代码实现,如下:
#定义马科维茨优化的目标函数
def funs(weight,sigma):
weight = np.array([weight]).T
result = np.dot(np.dot(weight.T,np.mat(sigma)),weight)[0,0]
return(result)
风险平价模型
风险平价模型即构造等风险投资组合,这里采用的是标的资产的波动率作为风险指标。
我们定义投资组合的波动率为:
σ ( ω ) = ω ′ Σ ω ′ \sigma(\omega)=\sqrt{\omega^{'}\Sigma\omega^{'} } σ(ω)=ω′Σω′
我们的目标是令标的资产i对投资组合波动率的风险贡献度为投资组合总风险的的1/N:
σ ( ω i ) = ω i ∗ ∂ σ ( ω ) ∂ ω i = ω i ( Σ ω ) i ω ′ Σ ω ′ = σ ( ω ) N \sigma(\omega_i)=\omega_i\ast \frac{\partial \sigma(\omega)}{\partial \omega_i} \\=\frac{\omega_{i}(\Sigma\omega)_{i}}{\sqrt{\omega^{'}\Sigma\omega^{'}} } =\frac{\sigma(\omega)}{N} σ(ωi)=ωi∗∂ωi∂σ(ω)