2 votos

Reproducir las funciones findDrawdowns y maxDrawdowns en R dadas las series de retorno

¿Existe alguna fórmula para calcular todas las reducciones (y la reducción máxima) directamente a partir de las series de rendimiento? ¿O siempre es necesario convertir primero los rendimientos en "precios" implícitos y luego proceder a encontrar las detracciones?

He aquí un ejemplo (realizado en Excel):

Date     Returns     100,00      Drawdown 
01.02.2000  0,30     100,30      -     
01.03.2000  2,60     102,91      -     
01.04.2000  1,10     104,04      -     
01.05.2000  -1,00    103,00     -1,00   
01.06.2000  1,50     104,54      -     
01.07.2000  2,50     107,16      -     
01.08.2000  1,60     108,87      -     
01.09.2000  6,70     116,17      -     
01.10.2000  -1,40    114,54     -1,40   
01.11.2000  4,00     119,12      -     
01.12.2000  -0,50    118,53     -0,50   
01.01.2001  8,10     128,13      -     
01.02.2001  4,00     133,25      -     
01.03.2001  -3,70    128,32     -3,70   
01.04.2001  -6,10    120,49     -9,57   
01.05.2001  1,70     122,54     -8,04   
01.06.2001  -4,90    116,54     -12,54   
01.07.2001  -2,20    113,97     -14,47   
01.08.2001  7,00     121,95     -8,48   
01.09.2001  5,80     129,03     -3,17   
01.10.2001  -6,50    120,64     -9,47   
01.11.2001  2,40     123,53     -7,29   
01.12.2001  -0,50    122,92     -7,76   
01.01.2002  -0,90    121,81     -8,59 

Tomo el "precio" actual, luego resto de este "precio" el "precio" máximo entre la fecha de inicio y la fecha actual, luego divido esta diferencia por ese "precio" máximo. Y por último, el drawdown es el mínimo entre este resultado y 0:

=MIN((C11-MAX($C$3:C11))/MAX($C$3:C11);0)*100

La reducción máxima sería la mínima entre las reducciones.

Me gustaría hacer esto en R. Preferiblemente sin crear la tabla de "precios". ¿Alguna idea?

2voto

BigCanOfTuna Puntos 210

No creo que se pueda hacer sin precios. Pero crear una serie de "precios" de este tipo es muy fácil en R.

r <- rnorm(10, sd = 0.01)  ## returns
cumprod(1 + r)             ## => 'prices'

A continuación, puede calcular fácilmente la reducción máxima:

require("NMOF")
drawdown(cumprod(1 + r))

De hecho, es posible que ni siquiera necesite un paquete para calcular las detracciones, ya que también es muy fácil en R.

v <- cumprod(1 + r)
1 - v/cummax(v)         ## drawdown
max(1 - v/cummax(v))    ## max. drawdown

Finanhelp.com

FinanHelp es una comunidad para personas con conocimientos de economía y finanzas, o quiere aprender. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X