FXCG如何计算投资组合 Beta?
Posted FXCG_Comunity
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FXCG如何计算投资组合 Beta?相关的知识,希望对你有一定的参考价值。
建立投资组合时要考虑的最重要的事情是投资多元化程度。当将投资分散到众多公司、行业、部门和资产类别时,那么一次市场事件就不会对您产生严重影响。多元化还有助于降低投资组合的波动性,让您在资产价值不发生剧烈波动的情况下实现稳定增长/Beta 是衡量股票对整体市场变化的敏感度的指标,可以用一些基本的数学来衡量投资组合中的 beta。
首先,重要的是要了解 Beta 的衡量标准是将个人投资与标准普尔 500指数等基准指数进行比较。Beta 值为 1.0 表示其波动性与基准相同。换句话说,它与基准同步移动。高于 1.0 的数字表明波动性高于基准,而较低的数字表明稳定性更高。例如,一只贝塔系数为 1.2的股票的波动性比市场大 20%,这意味着如果标准普尔指数下跌 10%,该股票预计将下跌 12%。可以通过检查每个持股的 beta 并执行相对简单的计算来确定投资组合的波动性。进行加权平均,即将每种证券的Beta 值相加并根据拥有的每种证券比例进行调整即可
beta,不仅适用于股票,还可以计算债券、共同基金、交易所交易基金和其他投资的beta 。
大多数在线折扣券商或可靠的投资研究出版商的网站上都可以轻松获得个股的 Beta 值。要确定整个股票投资组合的贝塔系数,您可以按照以下四个步骤进行操作:
- 将拥有的每只股票和整个投资组合的价值(股票数量乘以股价)相加。
- 根据这些值,确定每只股票占整个投资组合的百分比。
- 将这些百分比数字乘以每只股票的适当贝塔系数。例如,如果亚马逊占您投资组合的 25% 且贝塔系数为 1.43,则其加权贝塔系数为 0.3575。
- 将加权的 Beta 数字相加。
投资者可以使用 beta 作为评估特定投资风险的一种方式。
一只贝塔系数为 1.0 的股票的预期收益率是多少?
贝塔系数为 1.0 的股票与您要与之比较的市场具有相同的回报率。因此,例如,如果您将股票与标准普尔 500 指数进行比较,并且它的贝塔系数为 1.0,那么它会给您带来与标准普尔 500 指数相似的回报。
什么决定了股票的贝塔值?
Beta 衡量股票相对于市场的波动性,特定股票或证券或多或少波动的原因可能有很多。其中包括公司业绩、公司规模、供应链影响、投机者活动等。
如何使用 tidyquant(性能分析)来计算投资组合中的投资组合统计数据,该投资组合具有不同时期的资产
【中文标题】如何使用 tidyquant(性能分析)来计算投资组合中的投资组合统计数据,该投资组合具有不同时期的资产【英文标题】:How to use tidyquant (performance analytics) to calculate portfolio statistics in a portfolio with varying assets by period 【发布时间】:2021-04-22 00:44:46 【问题描述】:我知道有很好的资源可以使用 tidyquant for R 中的性能分析来计算股票和投资组合回报。例如,假设我们要确定包含“XOM”(0.5 )、"MA" (0.3) 和 "GOOG" (0.2),其中 () 表示投资组合中的资产权重。代码就是:
Ra_symbols <- c("XOM", "MA", "GOOG")
wts_map <- tibble(
symbols = c("XOM", "MA", "GOOG"),
weights = c(0.5, 0.3, 0.2)
)
Ra_2010to2020 <- Ra_symbols %>%
tq_get(get = "stock.prices",
from = "2010-12-31",
to = "2015-12-31") %>%
group_by(symbol) %>%
tq_transmute(select = adjusted,
mutate_fun = periodReturn,
period = "yearly",
col_rename = "Ra")
Ra_weightedportfolioreturn <- Ra_2010to2020 %>%
tq_portfolio(assets_col = symbol,
returns_col = Ra,
weights = wts_map,
col_rename = "Ra_using_wts_map")
但如果投资组合每年包含不同权重的不同资产,我找不到任何资源来帮助编写代码。例如,假设我们有两个数据框:一个带有每年的符号,另一个带有各自的投资组合权重。下面是读取 csv 文件的代码,其中包含符号和权重,以及用于说明数据帧的图像。
symbols2011to2015 <- read_csv("Symboltest_2011to2015.csv")
weights2011to2015 <- read_csv("wtstest_2011to2015.csv")
我认为这将涉及一些 tidyverse 功能,例如“应用”或“地图”,但我不确定。此外,tidyquant 是否可以像我拥有的那样在数据框中使用符号(和权重),或者我是否需要将它们转换为类似于 c("XOM"、"MA"、"GOOG") 的结果的字符值?最终,我想将这个概念扩展到每月的周期,但是一旦我弄清楚了多年,过程应该是相似的。
任何帮助将不胜感激!
【问题讨论】:
如果替代包也可以接受,那么这可能会有所帮助:quant.stackexchange.com/questions/60505/… 我一直在使用 PMwR 包,我相信它会起作用。但是在获取带有符号/调整后价格的数据框、带有日期的权重以及以正确格式重新平衡的日期时遇到了麻烦。从您的文档“计算回报”中可以看出,数据必须是动物园时间序列。那是对的吗?目前,我的交易品种列表和调整后的价格采用广泛的数据框格式,这不断给我带来错误。另外,您提到的“回报”函数是否有任何使用投资组合权重和重新平衡的示例。何时? 【参考方案1】:(这是对评论的跟进。)
the PMwR
manual 中有文档。
returns
的输入不必是zoo
系列:只要价格按列排列,矩阵或数据框也可以使用。但是,使用zoo
非常方便。举个例子:
library("zoo")
library("tidyquant")
P <- tq_get(c("XOM", "MA", "GOOG"),
get = "stock.prices",
from = "2010-12-31",
to = "2015-12-31")
P <- do.call(merge, by(P, P$symbol, function(x) zoo(x$adjusted, x$date)))
## GOOG MA XOM
## 2010-12-31 295.8760 21.09419 50.33540
## 2011-01-03 301.0466 20.78734 51.31982
## 2011-01-04 299.9358 21.05560 51.56077
## 2011-01-05 303.3978 21.67588 51.42308
## 2011-01-06 305.6045 21.76818 51.75351
## 2011-01-07 307.0690 21.76536 52.03575
现在假设您有一个矩阵 W
of 权重
W <- rbind(c(1/3, 1/3, 1/3),
c(0.6, 0.2, 0.2),
c(1/3, 1/3, 1/3),
c(0.6, 0.2, 0.2),
c(1/3, 1/3, 1/3))
以及重新平衡的日期:
when <- as.Date(c("2010-12-31", "2011-12-30", "2012-12-31",
"2013-12-31", "2014-12-31"))
when
中的每个元素对应W
中的一行。
现在我们可以计算投资组合收益了。
library("PMwR")
R <- returns(P, rebalance.when = when, weights = W)
## 2011-01-03 2011-01-04 2011-01-05 2011-01-06 ....
## 0.007495421 0.004549025 0.012637607 0.005984054 ....
## ## If 'P' had not been a zoo matrix:
## returns(coredata(P), t = index(P), rebalance.when = when, weights = W)
## ## would work as well
returns
期望输入一个价格序列。基于R
,我们可以轻松创建这样一个系列。
tmp <- cumprod(1 + returns(P, rebalance.when = when, weights = W, pad = 0))
这个系列我们可以转化为持有期收益。
returns(tmp, period = "month")
## Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec YTD
## 2011 5.7 3.5 -0.4 2.7 -0.9 -0.1 4.5 -1.7 -3.5 10.4 4.8 3.4 31.4
## 2012 -7.3 8.4 2.2 -1.7 -6.3 3.0 5.7 4.2 8.4 -5.4 2.3 0.5 13.2
## 2013 5.5 2.1 1.4 1.7 3.8 0.6 3.6 -3.8 4.7 9.7 4.6 7.9 49.7
## 2014 -0.4 3.3 -5.7 -2.6 4.3 1.0 -0.6 0.6 -0.9 1.0 -2.1 -1.6 -4.0
## 2015 -2.8 5.5 -3.3 1.8 -0.1 -1.0 6.8 -3.4 -1.8 13.0 1.3 0.7 16.6
returns(tmp, period = "year")
## 2011 2012 2013 2014 2015
## 31.4 13.2 49.7 -4.0 16.6
【讨论】:
这一切都很有道理,我已经让它工作得很好!谢谢!最后一个问题,我想。重新平衡时是否可以处理投资组合中的不同资产?考虑一下我在原始帖子中包含的图像,其中符号和权重从一个重新平衡期到下一个重新平衡期有所不同。这种情况可以用“returns”功能处理吗?我一直在尝试各种简单的例子,但似乎无法让它发挥作用。如果是这样,“何时”矩阵是否类似于符号 2011 至 2015,“权重”是否类似于 weights2011 至 2015?那么“P”矩阵是否需要一个矩阵呢? 该函数不能直接与您显示的数据结构一起使用。P
需要包含所有价格,weights
需要有与P
一样多的列,但当然有些权重可以为零。如果您不想合并数据,则需要围绕returns
进行循环。
Enrico,一个相关但不同的问题。我正在考虑您的 PMwR 包“重新平衡”中的功能,用于计算要重新平衡投资组合的确切交易。我认为这个功能正是我正在寻找的。但我很好奇如果现有投资组合的组件数量(即符号数量)与目标投资组合不匹配,它是否会起作用?例如,如果我在现有投资组合中有 10 个符号(每个符号都有股票数量和价格),并且我想重新平衡到 15 个符号(每个符号都有 % 分配),它会起作用吗?谢谢!
它应该也可以工作,并且使用命名的投资组合向量最容易:price <- c(a = 10, b = 20); current <- c(a = 5); target <- c(a = 0.2, b = 0.8); rebalance(current = current, target = target, price = price, match.names = TRUE)
以上是关于FXCG如何计算投资组合 Beta?的主要内容,如果未能解决你的问题,请参考以下文章
摩根大通报告:2019年是数字货币崛起重要一年,应谨慎投资加密货币