如何求解受条件R

时间:2018-11-19 23:23:29

标签: r optimization portfolio

我正在为学校写论文。

我必须使用此公式寻找相切组合,我将其翻译为R(具有矩阵代数的基本相切组合公式)。

nom   <- solve(Mat) %*% (ER - RF)

denom <- Ones %*% nom

w    <-  nom %*% solve(denom)

此公式还给我带来了负权重(卖空),我想添加一个约束,该权重只允许权重从0到1,且总和为1。

谁可以帮助我?

示例:

如果我现在运行代码,比如说使用3个资产,则使用c(0.20, -0.40, 0.80)也会获得某些资产(例如sum == 1)的负权重。 (在这种情况下,将允许卖空)。给定预期的收益和方差,这就是相切组合,它使锐化率最大化。我最想拥有的是相切组合,不允许卖空。在示例中,我的权重类似于c(0.18, 0.05, 0.72)。用0代替负数,用1代替> 1也是不正确的,因为所有权重的总和应为1

1 个答案:

答案 0 :(得分:0)

如@Shree所提到的,一个示例将有助于更准确地了解您的追求。

据我了解,您希望w被限制在[0,1]之间吗?从我的头顶上,您可以移动和缩放w

## Shifting
shift_w <- (w-min(w))
## Scaling
shift_w/max(shift_w)

或更残酷的是,用给定的值或函数替换值<0或> 1

## What to replace the value with when negative
replace_negative <- 0
## What to replace the value with when superior to 1
replace_one <- 1

## Making sure w is bounded between 0 and 1
ifelse(ifelse(w < 0, replace_negative, w) > 1, replace_one w)

请注意,如果您想要更复杂的内容,replace_negativereplace_one也可以是函数f(w)