滚动 10 年 return R
Rolling 10 year return R
我想计算从 1965 年到 2021 年的滚动 10 年 return。这意味着结果应该是 table 或在 10 年(1965-1974、1966-1975、1967-1976 等)期间带有 return 的数据框,如下所示:
要计算 10 年 -return,请将 1974 年的最后一个可用股票价格(例如 1975 年 12 月 30 日)除以 1965 年的第一个可用股票价格(例如 1965 年 1 月 4 日) ) 并减去 1.
10年-return =(1974年最后股价/1965年第一个股价)-1
接下来的年份(1966-1975、1967-1976、1968-1977 等)将自动计算此计算。
我不知道如何在 R studio 中实现它。
以下是我的代码。股票价格在 N225Adjusted 列中。
library(quantmod)
data.N225 <- getSymbols("^N225",from="1965-01-01", to="2022-03-30", auto.assign=FALSE, src='yahoo') # funktion getSymbols wenn wir Kapitalmarkt haben wollten
class(data.N225)
data.N225[c(1:3, nrow(data.N225)),]
data.N225<- na.omit(data.N225)
N225 <- data.N225[,6]
N225$DiskreteRendite= Delt(N225$N225.Adjusted)
N225[c(1:3,nrow(N225)),]
options(digits=5)
N225$dailyretrunsplusone <- N225$DiskreteRendite+1
N225 <- fortify.zoo(N225)
N225 <- N225[,c(1,2,4)]
最大的问题是我需要一个包含日期的代码。
希望你能帮助我。提前致谢!
我用了几个包,但你真的不需要scales
。
library(quantmod)
library(scales)
library(tidyverse)
library(lubridate)
data <- getSymbols("^N225", from = "1965-01-01", to = "2022-03-30", auto.assign = F, src = "yahoo")
df <- as_tibble(data.frame(Date = index(data), coredata(data)))
df %>%
na.omit() %>%
group_by(year = year(Date)) %>%
summarise(fprice = first(N225.Adjusted), lprice = last(N225.Adjusted)) %>%
mutate(Returns = (lprice/lag(fprice, n = 9L))-1) %>%
na.omit() %>%
mutate(year_from_to = paste(year-9, year, sep = "-"), Returns = percent(Returns)) %>%
select(year_from_to, Returns)
给出以下输出
#> # A tibble: 49 × 2
#> year_from_to Returns
#> <chr> <chr>
#> 1 1965-1974 205.07%
#> 2 1966-1975 203.61%
#> 3 1967-1976 246.26%
#> 4 1968-1977 284.04%
#> 5 1969-1978 241.96%
#> 6 1970-1979 173.40%
#> 7 1971-1980 255.03%
#> 8 1972-1981 183.22%
#> 9 1973-1982 53.20%
#> 10 1974-1983 132.29%
#> # … with 39 more rows
根据需要。
我想计算从 1965 年到 2021 年的滚动 10 年 return。这意味着结果应该是 table 或在 10 年(1965-1974、1966-1975、1967-1976 等)期间带有 return 的数据框,如下所示:
要计算 10 年 -return,请将 1974 年的最后一个可用股票价格(例如 1975 年 12 月 30 日)除以 1965 年的第一个可用股票价格(例如 1965 年 1 月 4 日) ) 并减去 1.
10年-return =(1974年最后股价/1965年第一个股价)-1
接下来的年份(1966-1975、1967-1976、1968-1977 等)将自动计算此计算。
我不知道如何在 R studio 中实现它。
以下是我的代码。股票价格在 N225Adjusted 列中。
library(quantmod)
data.N225 <- getSymbols("^N225",from="1965-01-01", to="2022-03-30", auto.assign=FALSE, src='yahoo') # funktion getSymbols wenn wir Kapitalmarkt haben wollten
class(data.N225)
data.N225[c(1:3, nrow(data.N225)),]
data.N225<- na.omit(data.N225)
N225 <- data.N225[,6]
N225$DiskreteRendite= Delt(N225$N225.Adjusted)
N225[c(1:3,nrow(N225)),]
options(digits=5)
N225$dailyretrunsplusone <- N225$DiskreteRendite+1
N225 <- fortify.zoo(N225)
N225 <- N225[,c(1,2,4)]
最大的问题是我需要一个包含日期的代码。
希望你能帮助我。提前致谢!
我用了几个包,但你真的不需要scales
。
library(quantmod)
library(scales)
library(tidyverse)
library(lubridate)
data <- getSymbols("^N225", from = "1965-01-01", to = "2022-03-30", auto.assign = F, src = "yahoo")
df <- as_tibble(data.frame(Date = index(data), coredata(data)))
df %>%
na.omit() %>%
group_by(year = year(Date)) %>%
summarise(fprice = first(N225.Adjusted), lprice = last(N225.Adjusted)) %>%
mutate(Returns = (lprice/lag(fprice, n = 9L))-1) %>%
na.omit() %>%
mutate(year_from_to = paste(year-9, year, sep = "-"), Returns = percent(Returns)) %>%
select(year_from_to, Returns)
给出以下输出
#> # A tibble: 49 × 2
#> year_from_to Returns
#> <chr> <chr>
#> 1 1965-1974 205.07%
#> 2 1966-1975 203.61%
#> 3 1967-1976 246.26%
#> 4 1968-1977 284.04%
#> 5 1969-1978 241.96%
#> 6 1970-1979 173.40%
#> 7 1971-1980 255.03%
#> 8 1972-1981 183.22%
#> 9 1973-1982 53.20%
#> 10 1974-1983 132.29%
#> # … with 39 more rows
根据需要。