Функция просадки Performance Analytics не работает r

Я пытаюсь построить график просадки ежедневной прибыли, используя пакет Performance Analytics. Мне удалось сделать это с помощью кода:

cols = rainbow(ncol(pdrawdown),s=0.7, v=0.8, alpha= 0.7)
chart.Drawdown(pdrawdown, legend.loc = "bottomleft",colorset = cols,
               main = "Drawdown Chart", xlab ="Date", ylab = "Drawdown")

для процентной доходности. Однако, когда я использую прибыль (которая имеет дело с гораздо большими числами), графическое окно даже не показывает никакой таблицы, и не выводятся сообщения об ошибках или предупреждения.

Мои данные pdrawdown структурированы следующим образом:

structure(list(Arbitrage = c(-410344.36040002, 43186613.0914002, 
-56243745.8289002, 33212085.9369, 2685633.86650004, 52056396.8137002
), Cmdty = c(-5661740.59000004, -12816611.3327999, -15271367.5797001, 
30328698.7996001, 2346206.95040001, -20111667.3121), Cnvt = c(-0.448500000005879, 
-4.09389999999985, -3.76900000000023, -4.46530000000348, 9.47310000000289, 
5.57809999999154), FI = c(-4959851.92789985, 51301719.2496983, 
19347533.8012021, -45928596.3382014, -126566982.481699, 7039919.16710053
), IndexArb = c(465514.007300064, 712460.314099789, -1241298.64239982, 
859103.288600107, -9142.46960010222, 1670160.15220016), OptVolD = c(3207463.8402, 
-2645827.2004, 1917467.1194, -1645717.199, 1346643.9976, 1249267.9222
), OptVolG = c(1809178.81009999, -1247076.75579998, 1208738.92329999, 
-998966.340099988, 474978.958799993, 2312496.41480001), Other = c(3121114.45319998, 
-7558428.4574, 28751941.5262, -8287057.41060003, -5057308.97439997, 
25541692.1845), RVG = c(107064420.2606, 41122417.5658004, -33634242.2959002, 
-25318480.7920002, -9396822.53510034, 69874891.7186005), SAAsia = c(-31022426.4966, 
-1381533.43030003, 21484053.8479001, 15456037.1175, 11307323.7993999, 
8081090.74740009)), .Names = c("Arbitrage", "Cmdty", "Cnvt", 
"FI", "IndexArb", "OptVolD", "OptVolG", "Other", "RVG", "SAAsia"
), row.names = c("2015-08-03", "2015-08-04", "2015-08-05", "2015-08-06", 
"2015-08-07", "2015-08-10"), class = "data.frame")

Обновление: установка значения ylim, т.е.

cols = rainbow(ncol(pdrawdown),s=0.7, v=0.8, alpha= 0.7)
chart.Drawdown(pdrawdown, legend.loc = "bottomleft",colorset = cols,
               main = "Drawdown Chart", xlab ="Date", ylab = "Drawdown",ylim = c(-1,0))

вызывает появление графика, но он по-прежнему отображает фактически бессмысленные данные, независимо от того, какова моя нижняя граница для ylim. Однако с возвратом этот член ylim работает, как и ожидалось, фиксируя оси графика.


person alex1stef2    schedule 21.08.2017    source источник


Ответы (1)


Поскольку никто не смог дать ответ, я опубликую свое лучшее решение на случай, если кто-то еще столкнется с этой проблемой в будущем.

Насколько я могу судить, проблема (как и ожидалось) просто вызвана тем, что просадка PnL слишком велика. Мой «хак» для исправления этого заключался в том, чтобы разделить таблицу данных на число, из-за которого все значения будут ниже 1. В моем случае это означало, что моя шкала y составляет миллиарды, например:

pdrawdown = pdrawdown/1000000000 # PnL displays in billions (set units here)

cols = rainbow(ncol(pdrawdown),s=0.7, v=0.8, alpha= 0.7)
chart.Drawdown(pdrawdown, legend.loc = "bottomleft",colorset = cols, 
               main = "Drawdown Chart", xlab ="Date", ylab = "Drawdown ($billions)

Деление на любое меньшее число просто дало очень странный график с огромными скачками, который не был похож на график возвратов для тех же данных.

Я подозреваю, что это связано с тем, что график просадки рассчитан на проценты и, таким образом, может иметь дело только с числами от 0 до -1 (максимальная просадка в процентах, конечно же, составляет -100%).

person alex1stef2    schedule 22.08.2017