根据每日收益数据计算年收益

问题描述 投票:0回答:2

我已通过下载的Yahoo Finance .csv文件导入了ADSK的每日收益数据。

ADSKcsv <- read.csv("ADSK.csv", TRUE)

我已将.csv文件转换为数据框

class(ADSKcsv)

我已选择要使用的两个相关列,并试图取每一年所有日收益的平均值。我不知道该怎么做。

aggregate(Close~Date, ADSK, mean)

上面的代码产生每个日期的平均值计算。我的目标是根据此数据计算同比回报,首先将每日回报转换为年度回报,然后使用年度回报来计算同比回报。我将不胜感激。

r aggregate finance
2个回答
2
投票

我可以建议一种更简单的方法吗?

library(tidyquant)

ADSK_yearly_returns_tbl <- tq_get("ADSK") %>%
  tq_transmute(select = close,
            mutate_fun = periodReturn,
            period = "yearly")

ADSK_yearly_returns_tbl

如果运行上面的代码,它将下载感兴趣的代码的历史收益(在这种情况下为ADSK,然后计算年度收益。使用此工作流程的另一个好处是,您可以交换任何所需的交易品种,而无需手动下载和阅读它们。此外,它还节省了计算平均每日收益的额外步骤。


1
投票

您可以从date中提取年份值,然后执行aggregate

这可以在基数R中完成:

aggregate(Close~year, transform(ADSKcsv, year = format(Date, '%Y')), mean)

dplyr

library(dplyr)
ADSKcsv %>%
  group_by(year = format(Date, '%Y')) %>%
  #Or using lubridate's year function
  #group_by(year = lubridate::year(Date)) %>%
  summarise(Close = mean(Close))

data.table

library(data.table)
setDT(ADSKcsv)[, .(Close = mean(Close)), format(Date, '%Y')]
© www.soinside.com 2019 - 2024. All rights reserved.