对数协方差转算术协方差矩阵函数?

4

是否有一种函数可以将使用对数收益率构建的协方差矩阵转换为基于简单算术收益率的协方差矩阵?

动机:我们希望使用一个均值-方差效用函数,其中期望收益和方差以算术术语指定。然而,由于对数收益的可加性属性以及我们假设资产价格遵循对数正态随机过程,因此通常使用对数收益率来估计收益和协方差。

Meucci在附录第5页中描述了一种生成基于算术收益的协方差矩阵的过程,适用于对数正态收益的任意分布。


1
暂时没有时间完成这个任务,但根据链接文献中的方程式,似乎很容易实现(你甚至可以使用for循环,但outer会更好)。 - Ben Bolker
我认为该函数需要以预期收益和时间跨度内的协方差矩阵作为输入。该函数还需要假设一个分布(正态分布,柯西分布等)。我很惊讶居然还没有这样的库存在——大多数协方差是通过对数收益率估计得出的,这应该是一个相当常见的问题。 - Ram Ahluwalia
不太确定分布情况。如果分布确实是柯西分布,那么理论上的二阶矩不存在,样本的二阶矩也没有太多意义... - Ben Bolker
1个回答

3
这是我对公式的翻译:
linreturn <- function(mu,Sigma) {
  m <- exp(mu+diag(Sigma)/2)-1
  x1 <- outer(mu,mu,"+")
  x2 <- outer(diag(Sigma),diag(Sigma),"+")/2
  S <- exp(x1+x2)*(exp(Sigma)-1)
  list(mean=m,vcov=S)
}

编辑:根据评论修复了-1问题。

尝试一个例子:

m1 <- c(1,2)
S1 <- matrix(c(1,0.2,0.2,1),nrow=2)

生成多元对数正态收益率:

set.seed(1001)
r1 <- exp(MASS::mvrnorm(200000,mu=m1,Sigma=S1))-1
colMeans(r1)
## [1]  3.485976 11.214211
var(r1)
##         [,1]     [,2]
## [1,] 34.4021  12.4062
## [2,] 12.4062 263.7382

与公式预期结果进行比较:

linreturn(m1,S1)

## $mean
## [1]  3.481689 11.182494

## $vcov
##          [,1]      [,2]
## [1,] 34.51261  12.08818
## [2,] 12.08818 255.01563

公式7中的“-1”不是打字错误。对于小的'r'值,其中'r'是算术回报率,定义为log(1+'r')的对数回报率应该大约等于'r'。如果我使用m1 <- c(.05, .05)测试上述函数,$mean的结果会非常高,而如果我保留“-1”,$mean的结果相对接近于0.05和0.05。实际上,在将单个证券的对数回报转换为算术回报的极限情况下,公式为:exp(1+logreturn)-1=算术回报,其功能形式与公式7类似。 - Ram Ahluwalia
我相信在你的模拟实验中,你想要表达的是:r1 <- exp(MASS::mvrnorm(200000,mu=m1,Sigma=S1))-1(即减去一个负数)。另外,关于柯西分布的观点很好。我可能会使用自由度为5的t分布。 - Ram Ahluwalia
好的,我没有理解上下文。谢谢。 - Ben Bolker
根据我非常有限的了解,对于如何将假设为对数正态分布放松到对数t分布,我并不清楚--抱歉。 - Ben Bolker
(实际上,t分布具有无界方差)。这是解决问题的一种非常优雅的方式,谢谢! - Ram Ahluwalia
我会在期限接近时颁发奖金,这样我们就可以得到一些额外的解决方案。再次感谢! - Ram Ahluwalia

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接