问题标签 [r-portfolioanalytics]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1821 浏览

r - 在没有 xts 对象的 PortfolioAnalytics 中创建有效的前沿

有没有办法在 PortfolioAnalytics 包中创建一个有效的边界而不指定资产回报的 xts 对象?相反,我想提供预期收益的向量和协方差矩阵。

0 投票
0 回答
851 浏览

r - PortfolioAnalytics - ROI optimize.rebalancing 使用重新计价的月度价格会产生不正确的结果?

希望有人可以帮助或经历过类似的情况,为我指出问题所在的方向。

这是我的设置(请参阅下面的希望可重现的代码):

  • 建立一个符号列表
  • 通过雅虎的 FinancialInstrument 获取仪器数据
  • 从 Quandl 获取 EURUSD 汇率 - 需要身份验证令牌
  • 将价格重新命名为投资组合的基础货币
  • 从 2004 年 3 月 31 日到今天,为其货币资产和重新计价的价格(此处为欧元)建立每月回报
  • 通过重新平衡运行 ROI 优化

问题:

在按月重新平衡时,使用重新计价价格的回报似乎会在优化中产生不正确的结果(见图),因为回报不能保证这样的回报曲线,因为大部分投资组合都投资于“TLT” - 20 年期国债。

这给出了优化的结果,如下图所示:

在此处输入图像描述


index这是一个更大系统的一部分,但我希望我创建了一个可重现的代码,该代码显示了似乎仅在使用重新平衡时才适用的问题,这向我表明,或日期可能存在问题。但是,当将两者都返回 xts 到 Excel 时,我看不出有任何区别。

我在代码末尾添加了多个图表,因为目前我不允许发布超过两张图片。

任何帮助或提示非常感谢指出我正在发生的事情......

编辑 2016年 4 月 1 日刚刚再次研究了这个问题,因为重新命名的测试组合仍然存在问题。

我认为该问题可能是由某些时区影响引起的,并添加了一些检查(参见图表之前的代码)。return-xts-objects 和 weight-xts-objects 的索引保持相等(all.equal() 返回 TRUE)。

调试到 return.portfolio() 函数,

  • base.CCY.R 和asset.CCY.R 被标识为每月频率和开始日期2004-03-30。
  • 权重被标识为 xts(第 55 行),并提供以下第一个索引。

以下检查对于资产或基础货币的权重都是相等的:

根据 as.Date 的帮助页面,这假定“POSIXct”为“UTC”,因此我假设存在差异,但以下也返回 29:

这对我来说并不清楚,但它对于权重 xts 是一致的,而不是这个问题的一部分。

在第 72 行,return.portfolio 现在通过执行以下命令将返回 xts 减少到相同的起始索引:

在此之后,调用 Return.portfolio.geometric() 并在此处显示重新命名价格中优化的权重导致权重低于最大值 1.01。

也可以通过对提取的权重执行 rowSum() 来查看:

编辑 06/01/2016

在进一步查看由 Return.portfolio() 调用的 PerformanceAnaytics 包中的 Return.portfolio.geometric() 代码后:

  1. 迭代和返回计算

在第 49 行:

这将计算投资组合回报,在示例中它将是 0.877/1 - 1,这显然必须导致 -12.3% 的回报。

如果我没看错,这意味着期望权重等于 100%,因为 end_value 如果用户在 Return.portfolio() 调用期间的值设置中未提供,则设置为 1 或 100%。

下一次迭代的 end_value 为 0.877

  1. 迭代并返回计算

下一期的新投资组合起始值 0.877 乘以下一期的权重 90% 或 0.90 = 0.7893

与第一次迭代相同,由于 weight_sum 约束,PortfolioAnalytics 包计算的总权重为 90%,因此负回报将再次被夸大。

转换为 0.78/0.877 - 1 = -0.111

当时我的问题是:

  • 当权重为 <> 100% 或 1 时,如何计算正确的回报?
  • <> 100% 的 weight_sum 约束真的有意义吗?在现实生活中,缺失的百分比可能是现金/短期债券?
  • 基于此 - 选项可能是在使用 full_investment 约束时将现金回报添加到优化中,或者调整几何回报函数以警告权重 <> 100% 或包含权重 <> 100% 的逻辑不是一个选项?

最后但并非最不重要的一点是,或者我的日期索引仍然有问题?

不确定是否有人仍在阅读本文,但再次感谢任何支持或见解。非常感谢!

0 投票
1 回答
257 浏览

r - 为什么 PortfolioAnalytics 均值-标准有效边界存在差距?

我遇到了 PortfolioAnalytics 包 (v1.0.3636) 中 create.EfficientFrontier 函数的意外结果。我正在尝试使用均值方差优化创建一个有效的边界。我所有的约束都是线性的。我在通话中设置了 n.portfolios = 100。它仅返回下表和图表中显示的 32 个投资组合。出乎意料的行为是边界存在缺口。虽然有不少差距,但较大的差距之一是在 result.62 和 result.94 之间。这两点之间的回报和风险有很大的跳跃。这就是我所说的差距。例如,我不明白为什么没有平均值接近 0.04 的点。我可以使用目标为 0.04 的 optimize.portfolio 函数并找到解决方案。cov 向量是 54x54,所以我没有包含数据。如果有人愿意,
R<-xts(mvrnorm(n=120,cmf.tax.adjusted$ret,cmf.tax.adjusted$cov, empirical=TRUE),order.by=seq(as.Date("2000/12/31"),by="month",length.out=120)) eff<-create.EfficientFrontier(R=R,portfolio=pspec, type="mean-sd",match.col="StdDev",n.portfolios=100)

这是产生 return = 0.04 的代码

pspec 显示在有效边界之后

在此处输入图像描述 create.EfficientFrontier 产生的 32 个点

规格:

0 投票
2 回答
3749 浏览

r - R/PortfolioAnalytics optimize.portfolio()

我花了几个小时试图了解成功利用 PortfolioAnalytics 包中的optimize.portfolio()函数需要什么,但我收到了多个错误,尽管尝试了各种优化方法(例如,“DEoptim”、“ROI”)。

安装 PortfolioAnalytics 后,我尝试在指定投资组合约束后运行 optimize.portfolio(),但收到以下错误:

错误:paste0("package:", plugin) %in% search() || requireNamespace(plugin, .... is not TRUE

尝试下载“插件”,但我收到:

我首选的 optimize_method 是“ROI”,我已经安装了“ROI”包,但仍然收到需要“插件”的错误。

我尝试通过手动安装“DEoptim”来解决这个问题,但我仍然无法成功运行 optimize.portfolio():

尽管下载了多个包(当我第一次安装“PortfolioAnalytics”时,为什么 R 不会自动安装所需的包?),当我运行“DEoptim”时收到以下错误:

seq.default 中的错误(from = round(min,rounding),to = round(max,rounding),:'from' 不能是 NA、NaN 或无限

作为参考,这里是我加载的所有包:

0 投票
2 回答
1608 浏览

r - 投资组合分析包中的自定义预期回报

我无法在投资组合分析包中加入自定义预期回报。通常预期收益是一些专业的期望/观点或与基本面指标分开计算。投资组合分析允许创建自定义矩函数来计算过去收益的矩,但我不明白如何将已经计算的收益合并到优化问题中。任何帮助表示赞赏,这里是小示例数据集:

让我们创建具有一些目标的基本投资组合。

现在我想在每个时期优化投资组合 pf 并考虑观点(该时期的预期回报),但此时我已经没有想法了。

0 投票
1 回答
69 浏览

javascript - 找不到 HTML 文件 #!portfolio-item-2.html

我一直在研究这个免费模板,它非常棒,但是在到达投资组合页面时,我遇到了一个障碍。HTML 代码如下:

谈论 a 的部分是<a ref...>指我在模板文档中似乎找不到的 HTML 文件 (portfolio-item-2.html)。

我应该怎么办?

0 投票
0 回答
266 浏览

r - R Portfolio Analytics optimize.portfolio.rebalancing 功能 - 如何设置种子?

由于 optimize.portfolio.rebalancing 循环通过不同的日期,随机数生成的种子似乎正在发生变化。这导致结果无法复制且不一致。有什么建议吗?

我意识到可以在调用optimize.portfolio.rebalancing 之外设置种子,但这不起作用,因为此函数递归调用optimize.portfolio。

因此,这样的调用:

不会给出一致的结果。

0 投票
1 回答
2758 浏览

r - 尝试使用投资组合分析进行优化时出错

我正在尝试从网站复制代码以测试 R 中的投资组合分析库。但我收到错误,我不知道为什么。我得到的错误是:错误:“package:ROI”%in% search() || requireNamespace("ROI", quiet = TRUE) 不是 TRUE

0 投票
1 回答
1150 浏览

r - R/optimize.portfolio {PortfolioAnalytics} gives only NA weights

I am having a question and can't think of a reasonable answer. I hope someone can help me! Many thanks in advance!

I am doing a portfolio optimization maximizing the Sharpe Ratio with a rolling window approach. Afterwards, I am writing the portfolio weights in a new Matrix.

With several datatsets, everything is working fine. Although with two other datasets, one issues arises: Two or three rows get only NA weights.

There should not be an issue with the data, because there are only so few NAs. Furthermore, there can’t be an issue with one row of returns for the portfolio estimation as every row of returns is used several times in a rolling window approach. Do you maybe know why one row in particular could be filled with Nas?

Many thanks in advance and best regards,

Sebastian

As already said, I don't know one single explanation. The whole code works for several datasets. And for only 2 two datasets, two rows of weights are NA, the rest works fine. So there should not be an issue with the data?

0 投票
0 回答
94 浏览

r - “sigma.robust” momentFUN passthrough 是否适用于 StdDev 和 ES 风险模型

我在 R 中使用了很棒的 PortfolioAnalytics 包。

为了缩小协方差矩阵,我使用了“sigma.robust”示例。我使用 EDHEC 数据。

我创建了初始投资组合,并从中创建了我打算比较的 4 个投资组合。

我想看到的是,a)通过健壮的 covar 是有效的——通过将它与有和没有的 covar 进行比较,以及 b)它与 StdDev 和预期短缺的风险模型一起工作。

初始化 pf 并使用一些基本约束

以标准差为目标的投资组合

以预期短缺为目标的投资组合

健壮 covar 的函数

通过自定义函数

创建我打算对比效果的正常投资组合

将它们组合起来以便于查看

绘制它们

检查他们

结论

它确实适用于使用 StdDev 的风险模型。权重不同。通关已经奏效。但这似乎不会影响预期短缺模型。重量是相同的。我发现即使我放宽了框约束也是如此[我想知道我是否已经使任何其他结果不可行,所以我尝试了有无约束]。

所以我想我想知道我是否做错了什么。我虽然 ES 只是查看从变换后的协方差矩阵有效导出的分布的尾部。

因此,缩小/正则化 covar 将与 ES 兼容。

所以我得出结论,我做错了什么。

有人可以帮忙吗?