Я хотел бы найти общий доход, который кто-то получил за период, а также стандартное отклонение его доходов. Я нашел функцию apply.fromstart
в пакете PerformanceAnalytics
, которая выглядит многообещающе. Однако у меня возникают трудности с его реализацией.
Вот что у меня есть: кадр данных, содержащий различные данные, включая доход за период:
HourlyData
Time Position
2014-08-01 01:00:00 1.01
2014-08-01 02:00:00 0.99
2014-08-01 03:00:00 1.01
2014-08-01 04:00:00 1.02
Я хотел бы найти общий доход в каждом периоде следующим образом:
Period TotalReturn
2014-08-01 01:00:00 1.01
2014-08-01 02:00:00 1.01*0.99
2014-08-01 03:00:00 1.01*.099*1.01
2014-08-01 04:00:00 1.01*.099*1.01*1.02
Мой код в настоящее время гласит:apply.fromstart(hourlyData[,2,drop = FALSE],FUN="*",width=1)
Я также хотел бы найти стандартное отклонение его доходности. Мой код для этой части выглядит следующим образом:apply.fromstart(hourlyData[,2,drop = FALSE],FUN="sd",width=1)
Тип данных hourlyData$Position
— «зоопарк».
Я получаю следующую ошибку: In zoo(NA, order.by = as.Date(time(R))) :
some methods for “zoo” objects do not work if the index entries in ‘order.by’ are not unique
Я проверил, и в моих именах строк нет дубликатов.
Вот результат запуска dput(hourlyData):
> structure(list(Period = structure(c(1406844000, 1406847600,
> 1406851200, 1406854800, 1406858400, 1406862000), class = c("POSIXct",
> "POSIXt" )), Login = c(173908L, 173908L, 173908L, 173908L, 173908L,
> 173908L ), NetExposureUSD = c(2188640, 2188730, 2189230, 2189000,
> 2188310, 2187710), EquityUSD = c(9303.51, 9237.82, 8582.18, 9074.76,
> 9929.96,
> 10743.57), UnrealizedProfitUSD = c(-31.64, -97.33, -752.97, -260.39,
> 594.81, 1408.42), DepositWithdrawal = c(0, 0, 0, 0, 0, 0), LaggedEquity = structure(c(0,
> 9303.51, 9237.82, 8582.18, 9074.76, 9929.96), index = 1:6, class = "zoo"),
> Return = structure(c(0, -0.00706077598669755, -0.0709734547761268,
> 0.0573956733603816, 0.0942394068823857, 0.0819348718423841
> ), index = 1:6, class = "zoo"), Position = structure(c(1,
> 0.992939224013302, 0.929026545223873, 1.05739567336038, 1.09423940688239,
> 1.08193487184238), index = 1:6, class = "zoo"), SD = c(NA,
> NA, 0.0390979887599392, 0.0641847560185966, 0.0867288719859795,
> 0.0187573743033249)), .Names = c("Period", "Login", "NetExposureUSD", "EquityUSD", "UnrealizedProfitUSD",
> "DepositWithdrawal", "LaggedEquity", "Return", "Position", "SD"),
> row.names = c("2014-08-01 01:00:00", "2014-08-01 02:00:00",
> "2014-08-01 03:00:00", "2014-08-01 04:00:00", "2014-08-01 05:00:00",
> "2014-08-01 06:00:00"), class = "data.frame")
> Period Login NetExposureUSD EquityUSD UnrealizedProfitUSD DepositWithdrawal LaggedEquity
> Return Position SD 2014-08-01 01:00:00 2014-08-01 01:00:00
> 173908 2188640 9303.51 -31.64 0
> 0.00 0.000000000 1.0000000 NA 2014-08-01 02:00:00 2014-08-01 02:00:00 173908 2188730 9237.82 -97.33
> 0 9303.51 -0.007060776 0.9929392 NA 2014-08-01 03:00:00
> 2014-08-01 03:00:00 173908 2189230 8582.18
> -752.97 0 9237.82 -0.070973455 0.9290265 0.03909799 2014-08-01 04:00:00 2014-08-01 04:00:00 173908 2189000 9074.76 -260.39 0 8582.18
> 0.057395673 1.0573957 0.06418476 2014-08-01 05:00:00 2014-08-01 05:00:00 173908 2188310 9929.96 594.81
> 0 9074.76 0.094239407 1.0942394 0.08672887 2014-08-01 06:00:00
> 2014-08-01 06:00:00 173908 2187710 10743.57
> 1408.42 0 9929.96 0.081934872 1.0819349 0.01875737
Reduce(
*, hourlyData$Position)
? - person David Arenburg   schedule 12.11.2014unexpected * in Reduce
. Нужно ли устанавливать отдельный пакет? - person Mike   schedule 12.11.2014Reduce
- это основа R. Вам нужно поместить * в обратные кавычки, как в*
. Это просто НАСТОЛЬКО не позволяет это в комментариях - person David Arenburg   schedule 12.11.2014Error in x[[i]] : subscript out of bounds
. Не уверен, что это значит? - person Mike   schedule 12.11.2014Reduce("*", hourlyData$Position)
- person David Arenburg   schedule 12.11.2014dput(hourlyData)
? - person David Arenburg   schedule 12.11.2014Reduce("*", as.numeric(hourlyData$Position))
. Фотsd
, попробуйsd(as.numeric(hourlyData$Position))
- person David Arenburg   schedule 12.11.2014sapply(seq_len(nrow(hourlyData)), function(i) sd(hourlyData$Position[1:i]))
- person David Arenburg   schedule 12.11.2014zoo
класс, работаяcumprod
всего наcumprod(hourlyData$Position)
- person David Arenburg   schedule 12.11.2014