Это пример кода, который использует подобный набор данных:
library(portfolio)
p <- new("portfolioBasic", instant = as.Date("2004-12-31"), id.var = "symbol",
in.var = "price", sides = "long",
ret.var = "month.ret", data = dow.jan.2005)
a <- performance(p)@ret
b <- log(1 + a)
sum <- b + sum #the sum variable should accumulate all returns
Приведенный выше пример очень похож на код, над которым я работаю, за исключением того, что он использует dow.jan.2005, который включен в библиотеку portfolio
.
Я хочу создать цикл в R, который вычисляет определенную функцию p <- new(... , data = "data20xx")
, и этот data20xx
, который используется в функции, должен идти с 2007 по 2017 год.
Есть также две другие функции, которые следуют за p
. Функция производительности performance(p)
вычисляет процент, который затем необходимо логарифмировать и сохранить в отдельной переменной b
. Переменные sum
отслеживают совокупный возврат журналов.
Вот описание функции performance
:
Formal class 'performance' [package "portfolio"] with 6 slots
..@ ret : num -0.366
..@ profit : num 0
..@ missing.price : num NA
..@ missing.return: int 0
Если я использую performance(p)@ret
, я получаю число, но я не могу использовать логарифм на нем.
Как я могу создать этот конкретный цикл?