我正在为学校写论文。
我必须使用此公式寻找相切组合,我将其翻译为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
答案 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_negative
和replace_one
也可以是函数f(w)
。