问题标签 [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 投票
0 回答
52 浏览

r - 如何知道哪种优化方法是正确的

R 中的 PortfolioAnalytics 包有四个用于 optimize.portfolio 的选项:“DEoptim”、“random”、“ROI”、“ROI old”、“pso”、“GenSA”。如何知道何时使用一种或另一种?

0 投票
0 回答
362 浏览

r - 在 R 中解决投资组合优化问题的最快方法是什么?

我正在研究如何以最高性能/最快的方式在 R 中实现修改后的夏普比率优化。

我为这个问题定义的修正夏普比率 (MSR) 是

(其中 r 是特定资产的回报率,sd 是特定资产回报率的标准差,f 是标量,是波动率因子或波动率衰减器)。

我可以看到 PortfolioAnalytics 在 add.objective 函数中有一个参数 risk_aversion 似乎做了我想要的相同/相似的事情(对于 f=0,算法将选择具有最高回报的组合,而不管波动性如何,对于 f=1 它将选择最大化经典夏普比率的组合,对于 f > 1,算法将选择低波动性组合,极端情况是均值方差组合)。

这正是我从这里看到的参数 risk_aversion 正在做的事情https://github.com/R-Finance/PortfolioAnalytics/blob/master/demo/demo_max_quadratic_utility.R

我可以使用 PortfolioAnalytics 使用随机投资组合方法或 DEoptim(见下面的代码)来解决这个优化问题,但是,也许使用 ROI 可能有一个最快(和准确)的解决方案。

0 投票
0 回答
90 浏览

r - 如何避免在 R 语言中构建投资组合时的典型错误

我刚开始学习 R 语言的投资组合分析,我偶然发现了一篇通过示例解释基本原理的文章。但是这段代码有问题。该代码包含以下错误: 1) 由于约束 full_investment 无法优化 Portfolio;2)写向量有问题;3) 未计算夏普比率;4) 绘图问题。那么谁对此感兴趣,我们开始解析代码

这部分代码通过没有错误,但随后......

针对目标进行优化时,每个点都会显示以下错误:

我不知道为什么会发生这个错误,但由于某种原因,用 Leverage 或其他替换 full_investment 方面,错误消失了。然后是第二个错误:

接收 vec 元素时抛出错误:

也许这个错误可以忽略,因为数据仍然被写入

经过这些操作,创建了满足条件的有效投资组合,但无法建立有效边界(在名为 eff.frontier 的表中没有填写 Sharp ratio 列)

接下来,我还想根据可用数据构建绘图,但又出现错误:

虽然 eff.frontier 表中有一个 Risk 列,但函数仍然没有找到它:

我只是想解释一下这些问题,因为我的编程能力还不足以理解这些问题的本质。

原始代码:https ://www.r-bloggers.com/portfolio-optimization-using-r-and-plotly/

0 投票
2 回答
986 浏览

r - R中的投资组合优化,只有一个平均收益和协方差矩阵的向量

我看到的每个包裹似乎都需要我的资产的时间序列回报。

例如,我喜欢 PortfolioAnalytics 包,我需要提供许多约束(框约束、组约束等)。然而,据我所知,它需要某种时间序列的回报,即使我指定了自己的时刻(我可能是错的)。

我所拥有的只是我 14 种资产中每一种资产的预期收益和协方差矩阵。

如何以此为出发点进行各种形式的优化?最终,我想建立一个完整的有效边界,并能够在给定的风险水平(标准差)下最大化回报给我的限制。如果我有一个时间序列,这不会是一个问题......但可惜我没有。

谢谢。我觉得这应该很容易,但我一直在绕圈子。

最坏的情况是我可以构建一个符合 E(R) 和协方差矩阵参数的假时间序列。如果您认为这是我的解决方案,您能否提供一种简单的方法来做到这一点...但这就是为什么我在这里 :)

0 投票
1 回答
212 浏览

r - 如何使用投资组合分析库中的 optimize.portfolio

我正在尝试使用投资组合分析库来创建和优化投资组合

第一步是创建投资组合规范

port_spec.minES <- add.objective(portfolio=port_spec, type="risk", name="ES", arguments=list(p=0.925, clean="boudt"))

比我运行优化器

opt_minES <- optimize.portfolio(asset_returns, portfolio = port_spec.minES, optimize_method = "ROI",trace=TRUE )

但是我收到了这个错误

clean.boudt(na.omit(R[, column, drop = FALSE]), alpha = alpha, 中的错误:requireNamespace("robustbase", quiet = TRUE) 不是 TRUE

这是回溯

5.stop(simpleError(msg, call = if (p <- sys.parent(1L)) sys.call(p)))

4.stopifnot(requireNamespace("robustbase", quiet = TRUE))

3.clean.boudt(na.omit(R[, column, drop = FALSE]), alpha = alpha, ...)

2.Return.clean(R = R,方法=清洁)

1.optimize.portfolio(asset_returns,portfolio = port_spec.RiskBudgetES,optimize_method = “ROI”,trace = TRUE)

0 投票
0 回答
265 浏览

r - 具有预定义回报和 cov 矩阵的投资组合分析

PortfolioAnalytics在 r 中使用并尝试使用预定义的协方差并返回矩阵。

例如,我的资产的估计回报是

并且可能的协方差矩阵估计如下:

我尝试了一些示例,例如在没有 xts 对象的 PortfolioAnalytics 中创建有效前沿Portfolio Analytics 包中的自定义预期回报,但似乎在这两种情况下仍然提供时间序列的回报并且时刻是仍然是估计的,而我的投资组合的预期收益和协方差矩阵已经给出。

按照示例,我尝试通过以下方式将我的数据强制转换为 xts(假设这是我需要做的):

我不断得到

我想我确定我错过了一些东西。

0 投票
1 回答
191 浏览

r - 基于 R 中重新平衡的概率创建股票投资组合

我在 R 中使用随机森林来获取股票属于某个类别的概率。有了这些概率,我想构建包含数据集第一个日期概率最高的 5 只股票的投资组合,然后每 10 天用当时排名最高的股票重新平衡一次。投资组合应该是等权重的。

这是我认为可以代表我的数据的一些示例数据。

因此,投资组合将在前 10 天包含股票 F、A、B、E 和 G,然后将其与百分比最高的股票重新平衡。

我不太擅长编码和 R,并尝试查看如何使用 PortfolioAnalytics、PerformanceAnalytics 和 tidyquant 执行此操作的选项,但我无法找到我了解如何执行此操作的解决方案,因为我不是有兴趣使用任何形式的优化。我需要一个由我计算的百分比确定的简单投资组合,并进行再平衡。

如果有人对我如何做到这一点有任何建议,我将不胜感激。如果这是发布此问题的错误论坛,我很抱歉并将其发布到其他地方。

0 投票
1 回答
204 浏览

r - R PortfolioAnalytics create.EfficientFrontier() 对自定义预期回报的混淆

背景:我想知道你是否可以帮助我。我熟悉投资组合优化。我不是专家,但我通常会根据 quadprog 或数值方法构建自己的优化器来创建有效的边界。我刚开始使用 PortfolioAnalytics,因为它看起来非常好,而且我对可用的不同求解器很感兴趣。

目标:我想使用一组历史收益来计算资产收益的第二时刻(或更高),但要指定第一时刻(即使用我自己的预期收益)。我已经按照包装文档和小插图中的说明指定了预期回报。

问题:我不明白 create.EfficientFrontier() 在做什么。我输入了自己的预期收益,有效边界没有改变。为了测试发生了什么,(i)我输入了更高的预期回报作为测试,并且边界没有上升;但是 (ii) 输入正在做某事,因为如果我将回报最高的资产归零,则前沿收缩;(iii) 如果我颠倒预期收益的顺序,使波动较大的资产具有较低的预期收益,则边界会发生变化。

问题:如果有人能告诉我如何使用我自己的预期回报而不是默认的历史回报来建立边界,我将不胜感激。

非常感谢,

约翰

可重现的例子

0 投票
1 回答
255 浏览

r - 在 PortfolioAnalytics for R 中创建组约束

我正在使用 R 中的 PortfolioAnalytics 软件包对 11 种证券进行投资组合优化。在 11 种证券中,5 种是股票基金,2 种是优先股基金,3 种是固定收益基金,1 种是货币市场基金。我想将我的资产类别配置设置为 55% 的股权、10% 的优先股、30% 的固定收益和 5% 的货币市场,以便在没有杠杆和没有营业额的情况下进行完全投资。我希望看到的输出是投资组合的各种排列,但静态资产类别分配。

我尝试使用 add.constraint 函数来实现这一点,并且我使用了以下代码:

当我尝试生成随机投资组合时,我收到以下错误消息:

关于我要去哪里错的任何想法?

0 投票
1 回答
259 浏览

r - 如果 PF 权重偏离阈值以上,则动态投资组合重新平衡

用给定的权重和设定的重新平衡频率(例如每天/每周......)对投资组合进行回测并不难。有 R 包执行此操作,例如 PerformanceAnalytics 或tq_portfolio使用该功能的 tidyquant。

我想回测当权重偏离以百分比给出的某个阈值时重新平衡的投资组合。

假设我有两只同等权重的股票和 +/-15 个百分点的阈值,当其中一个权重超过 65% 时,我会重新平衡到初始权重。

在此处输入图像描述

例如,我有 3 支相同权重的股票(我们也应该能够设置其他权重)。

以下是未重新平衡的实际权重:

所以我希望,如果在任何时期任何股票的权重超过或低于阈值(例如 0.33+/-0.1),则应将投资组合权重设置回初始权重。

这必须动态完成,所以我们可以有很多时期和很多股票。可能需要多次重新平衡。

我试图解决的问题:lag当实际权重超过阈值时,我尝试使用并设置初始权重,但是我无法动态地这样做,因为权重取决于重新平衡权重的回报。