首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用tidyquant计算多只股票的投资价值?

如何使用tidyquant计算多只股票的投资价值?
EN

Stack Overflow用户
提问于 2021-10-04 15:24:23
回答 1查看 45关注 0票数 1

我想要得到每只股票的投资价值,但我认为我得到的是整体数据集。

代码语言:javascript
运行
复制
library(tidyquant)
library(dplyr)
data(FANG)
monthly_returns_stocks <- FANG %>%
  group_by(symbol) %>%
  tq_transmute(adjusted, periodReturn, period = "monthly")

weights <- c(0.50, 0.25, 0.25, 0)

monthly_returns_stocks %>%
  tq_portfolio(assets_col   = symbol,
               returns_col  = monthly.returns, 
               weights = weights,
               col_rename   = "investment.growth",
               wealth.index = TRUE) %>%
mutate(investment.growth = investment.growth*100)

我做错了什么?

我想通过每个符号来获得一段时间内的投资价值,假设在时间0的投资为100美元。因此,所需的输出将类似于...

代码语言:javascript
运行
复制
desired_output <-
  tibble::tribble(
    ~symbol,       ~date, ~investment.growth,
       "FB", "1/31/2013",               100L,
       "FB", "2/28/2013",               103L,
       "FB", "3/28/2013",               106L,
       "FB", "4/30/2013",               101L,
       "FB", "5/31/2013",                99L,
     "AMZN", "1/31/2013",               100L,
     "AMZN", "2/28/2013",               105L,
     "AMZN", "3/28/2013",               109L,
     "AMZN", "4/30/2013",               123L,
     "AMZN", "5/31/2013",               112L,
     "GOOG", "1/31/2013",               100L,
     "GOOG", "2/28/2013",                98L,
     "GOOG", "3/28/2013",                96L,
     "GOOG", "4/30/2013",               102L,
     "GOOG", "5/31/2013",               106L)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-05 13:34:07

看一下您的预期输出,下面几行代码可以帮助您实现这一点。STarting点就是你的monthly_returns_stocks data.frame。基本上,每月收益的累积和+1乘以100美元的投资。如果您希望看到每只股票1000美元的投资增长,请将100更改为1000。

代码语言:javascript
运行
复制
monthly_returns_stocks %>% 
  mutate(investment.growth = 100 * (1 + cumsum(monthly.returns)))

# A tibble: 192 x 4
# Groups:   symbol [4]
   symbol date       monthly.returns investment.growth
   <chr>  <date>               <dbl>             <dbl>
 1 FB     2013-01-31        0.106                111. 
 2 FB     2013-02-28       -0.120                 98.6
 3 FB     2013-03-28       -0.0613                92.5
 4 FB     2013-04-30        0.0856               101. 
 5 FB     2013-05-31       -0.123                 88.7
 6 FB     2013-06-28        0.0218                90.9
 7 FB     2013-07-31        0.479                139. 
 8 FB     2013-08-30        0.122                151. 
 9 FB     2013-09-30        0.217                173. 
10 FB     2013-10-31       -0.000398             173. 
# ... with 182 more rows

作为额外的:以美元为单位的加权投资组合回报:

代码语言:javascript
运行
复制
monthly_returns_stocks %>% 
  mutate(investment.growth = 100 * (1 + cumsum(monthly.returns))) %>% 
  # get the last records per symbol
  filter(row_number() == max(row_number())) %>%  
  ungroup() %>% 
  # weigths in order of the stock order: FB, AMZN, NFLX, GOOG
  summarise(portfolio_return = sum(investment.growth * weights)) 

# A tibble: 1 x 1
  portfolio_return
             <dbl>
1            2111.
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69438555

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档