R 是否有一种基于股票创建列的方法';是否在用户定义的期间内返回?

R 是否有一种基于股票创建列的方法';是否在用户定义的期间内返回?,r,quantmod,tidyquant,R,Quantmod,Tidyquant,编辑: 我尝试过改变,选择了下面评论中共享的tidyquant包 这一次我用变量设置了一个范围,但我想我在把它转换成函数或向量时遇到了麻烦。这可能是因为我没有为循环编写一个错误的,也可能是由于对底层库的限制 这个循环背后的想法是,它提取该期间的调整价格,然后取第一个和最后一个价格来计算变化(也称为股价回报) 我不确定,但我想听听你的想法 start_date = "2019-05-20" end_date = "2019-05-30" Symbol_list <- c("CTVA","I

编辑:

我尝试过改变,选择了下面评论中共享的
tidyquant

这一次我用变量设置了一个范围,但我想我在把它转换成函数或向量时遇到了麻烦。这可能是因为我没有为循环编写一个错误的
,也可能是由于对底层库的限制

这个循环背后的想法是,它提取该期间的调整价格,然后取第一个和最后一个价格来计算变化(也称为股价回报)

我不确定,但我想听听你的想法

start_date = "2019-05-20"
end_date = "2019-05-30"

Symbol_list <- c("CTVA","IBM", "GOOG", "GE")

range_returns <- for (Symbol in Symbol_List) {
  frame <- tq_get(Symbol, get = "stock.prices", from = start_date, to = end_date, complete_cases = FALSE)[,7]
  (frame[nrow(frame),] - frame[1,]) / frame[1,]
}
start_date=“2019-05-20”
结束日期=“2019-05-30”

符号列表不需要循环的
。你可以用tidyquant和dplyr做任何事情。对于组的第一次和最后一次观察,您可以使用dplyr的功能
first
last
。请参阅下面的代码以了解工作示例

library(tidyquant)
library(dplyr)

start_date = "2019-05-20"
end_date = "2019-05-30"

Symbol_list <- c("CTVA","IBM", "GOOG", "GE")

stocks <- tq_get(Symbol_list, get = "stock.prices", from = start_date, to = end_date, complete_cases = FALSE)

stocks %>% 
  group_by(symbol) %>% 
  summarise(returns = (last(adjusted) / first(adjusted)) - 1) # calculate returns

# A tibble: 4 x 2
  symbol returns
  <chr>    <dbl>
1 CTVA   -0.0172
2 GE     -0.0516
3 GOOG   -0.0197
4 IBM    -0.0402
库(tidyquant)
图书馆(dplyr)
开始日期=“2019-05-20”
结束日期=“2019-05-30”
符号列表%
总结(收益=(最后一次(调整)/第一次(调整))-1)#计算收益
#一个tibble:4x2
符号返回
1 CTVA-0.0172
2 GE-0.0516
3 GOOG-0.0197
4 IBM-0.0402

您可以阅读该软件包的小插曲。使用tidyquant的
tq_get
将排除您有错误的股票,或者在循环中使用
tryCatch
环绕
getSymbols
保持循环。试着把你的问题缩小到每个SO问题一个问题。这样更容易得到答案。这真的很有帮助。回复:tq_不要陷入困境@phiver我试着玩tq_get,做了一些很棒的编辑,我真的想太多了!谢谢@phiver
start_date <- "2003-01-05"
end_date <- "2019-01-05"

df$defined_period_return <- ROC(getSymbol(df$symbol, src = yahoo, from = start_date, to = end_date, periodicity = "monthly"))
price_history <- null

for (Symbol in sp_500$Symbol)
        price_history <- cbind(price_history,
                           getSymbols(df$symbol, from = start_date, 
                           to = end_date, periodicity = "daily", 
                           auto.assign=FALSE)[,6])

library(tidyquant)
library(dplyr)

start_date = "2019-05-20"
end_date = "2019-05-30"

Symbol_list <- c("CTVA","IBM", "GOOG", "GE")

stocks <- tq_get(Symbol_list, get = "stock.prices", from = start_date, to = end_date, complete_cases = FALSE)

stocks %>% 
  group_by(symbol) %>% 
  summarise(returns = (last(adjusted) / first(adjusted)) - 1) # calculate returns

# A tibble: 4 x 2
  symbol returns
  <chr>    <dbl>
1 CTVA   -0.0172
2 GE     -0.0516
3 GOOG   -0.0197
4 IBM    -0.0402