如何求解受条件 R 约束的函数
How to solve a function subject to a condition R
我正在为学校写论文。
我必须使用这个公式寻找切线组合,我在 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
。 (在这种情况下,将启用卖空)。这是在给定预期 return 和方差的情况下最大化夏普比率的切向投资组合。我想要的是不允许卖空的切线投资组合。在示例中,我的权重类似于 c(0.18, 0.05, 0.72)
。将负数替换为 0 并将 >1 替换为 1 是不正确的,因为所有权重的总和应该是一个
正如@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)
。
我正在为学校写论文。
我必须使用这个公式寻找切线组合,我在 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
。 (在这种情况下,将启用卖空)。这是在给定预期 return 和方差的情况下最大化夏普比率的切向投资组合。我想要的是不允许卖空的切线投资组合。在示例中,我的权重类似于 c(0.18, 0.05, 0.72)
。将负数替换为 0 并将 >1 替换为 1 是不正确的,因为所有权重的总和应该是一个
正如@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)
。