Optimal-f: Cómo calcularlo con Excel

El espacio de los traders quant: sistemas de trading, gestión monetaria, automatización de sistemas.
Responder
Avatar de Usuario
Rafa7
Mensajes: 4919
Registrado: 17 Dic 2009 21:36
Contactar:

Optimal-f: Cómo calcularlo con Excel

Mensaje por Rafa7 »

Sres. foristas.

el presente hilo es sobre como calcular Optimal-f de Ralph Vince.
Primero veremos como se calcula teóricamente y luego como hacerlo en Excel.

Primero un poco de fundamento:

Supongamos que queremos, en un sistema de trading, calcular cual es la fracción de nuestro capital podemos arriesgar para hacer crecer mas nuestro capital.
Supongamos que los rendimientos los expresamos como fracción respecto al precio de compra ((PrecioVenta - PrecioCompra) / PrecioCompra)) y que los trades históricos son W1, ..., Wn.
Sea W = mín(W1, ..., Wn).
Podemos suponer que W va a ser la máxima fracción de pérdida.
Sea la expresión F(f) = (1 + f * W1 / -W) * ... * (1 + f * Wn / -W).
Entonces la fracción f que maximiza F(f) la llamaremos Optimal-f.
¿Cómo calcular f?
Sea G(f) = Ln(F(f)) = Ln(1 + f * W1 / -W) + ... + Ln(1 + f * Wn / -W)
La f será aquella que cumpla G'(f) = 0, donde G' es la derivada de G respecto a f.

Sea H = G'.
Si aplicamos el método de Newton, tenemos que la siguiente sucesión converge en la f que buscamos:
X0 = 0;
X(n + 1) = Xn - H(Xn) / H'(Xn) tiende a f cuando n tiende a infinito.

Calculemos H(f) y H'(f):

H(f) = G'(f) = (Ln(1 + f * W1 / -W) + ... + Ln(1 + f Wn / -W))' =
= W1 / (W * (1 + f * W1 / -W)) + ... + Wn / (W * (1 + f * Wn / -W)) =
= W1 /(W - f * W1) + ... + Wn / (W - f * Wn)

H'(f) = W1^2 /(W - f * W1)^2 + ... + Wn^2 /(W - f * Wn)^2 =
(W1 /(W - f * W1))^2 + ... + (Wn / (W - f * Wn))^2

Ahora podemos trasladar nuestras conclusiones a una hoja de cálculo.
Os cuelgo una hoja de cálculo de ejemplo de como calcular el Optimal-f.
Optimal-f.xls
Optimal-f
(21 KiB) Descargado 1086 veces
Voy a explicar como funciona el cálculo.
En E2 está la fracción f que provamos, o sea Xn
En la columna "Profit" estan los resultados en fracción.
En la columna "A" están los sumandos para calcular nuestra H.
En la columna "B" están los sumandos para calcular nuestra H'.
En la celda E3 está H.
En la celda E4 está H'.
En la celda E5 está X(n+1).

En la celda E2 hay un 0 y en la celda E5 hay 0,2790.
1.- Pongamos en E2, manualmente, 0,2790. En E5 da 0,5134.
2.- Pongamos en E2 0,5134. En E5 da 0,5277.
3.- Pongamos en E2 0,5277. En E5 da 0,5276.
4.- Pongamos en E2 0,5276. En E5 da 0,5276.

Hemos acabado, ya que coinciden E2 y E5.

En el sistema de trading reflejado en la hoja, Optimal-f es 52,76%

Un favor, si hay alguien que el Excel le es útil, que me lo diga, me gustaría saberlo.

Saludos.
Última edición por Rafa7 el 16 May 2010 20:25, editado 4 veces en total.
¡Jesús es el Rey de Reyes y el Señor de Señores!
https://loquepermanece.blogspot.com
Avatar de Usuario
X-Trader
Administrador
Mensajes: 12781
Registrado: 06 Sep 2004 10:18
Contactar:

Re: Optimal-f. Cómo calcularlo con Excel.

Mensaje por X-Trader »

Excelente aporte Rafa7, gracias!!!!

Saludos,
X-Trader
"Los sistemas de trading pueden funcionar en ciertas condiciones de mercado todo el tiempo, en todas las condiciones de mercado en algún momento del tiempo, pero nunca en todas las condiciones de mercado todo el tiempo."
Avatar de Usuario
bolsa1
Mensajes: 1347
Registrado: 13 May 2008 09:53
Ubicación: Gallaecia

Re: Optimal-f: Cómo calcularlo con Excel

Mensaje por bolsa1 »

Buena explicación! ;-)
"Mercaderes e industriales no deben ser admitidos a la ciudadanía; porque su género de vida es abyecto y contrario a la virtud."

Aristóteles.
Avatar de Usuario
Rafa7
Mensajes: 4919
Registrado: 17 Dic 2009 21:36
Contactar:

Re: Optimal-f: Cómo calcularlo con Excel

Mensaje por Rafa7 »

Gracias X-Trader y bolsa1.
¡Jesús es el Rey de Reyes y el Señor de Señores!
https://loquepermanece.blogspot.com
Avatar de Usuario
Rafa7
Mensajes: 4919
Registrado: 17 Dic 2009 21:36
Contactar:

Re: Optimal-f: Cómo calcularlo con Excel

Mensaje por Rafa7 »

Sres. foristas,



El presente aporte es para compartiros una aproximación de la f-óptima que espero que sea de vuestro interés.
Iba a crear un nuevo hilo, pero prefiero aprovechar este antigüo que yo abrí, ya que en realidad lo que os comparto es un corolario de este hilo.

Voy a usar un lenguaje inspirado en el de Excel para expresarme. Por ejemplo, 1:n quiere decir 1, ..., n.

La serie de MacLaurin de la función Ln(1 + X), cuando X es próximo a cero, es la siguiente:
Ln(1 + X) = Suma((-1)^(n + 1) * X^n / n; n >= 1).
Según la serie de MacLaurin, para n = 1:2, la función Ln(1 - X), tiene la siguiente aproximación, cuando X es próxima a cero:
Ln(1 - X) == -X - X^2 / 2

Entonces, supongamos que queremos maximizar la fórmula de Ralph Vince, en un sistema de trading con una fiabilidad < 100% y retornos fraccionales relativos a la pérdida máxima próximos a cero:
O sea, Maximizar F(f) = Producto(1 - f * Wi / W; i = 1:n)
Donde
f = f-óptima de Ralph Vince.
Wi = retorno fraccional (o sea, GananciaNeta / ImporteEntradaIncluyendoComisiones), para todo i = 1:n.
ImporteEntradaIcluyendoComisiones, en bolsa sería el importe neto. En futuros sería el importe neto equivalente en el contado.
W = mín(W1:Wn)

Como estamos suponiendo un sistema de trading con fiabilidad < 100%, al menos habrá un retorno negativo, y, por lo tanto, W será el retorno más negativo.

Sea G(f) = Ln(F(f))
G(f)= Ln(Producto(1 - f * Wi / W; i = 1:n)) = Suma(Ln(1 - f * Wi / W); i = 1:n)
Ahora apliquemos la aproximación por MacLaurin cuando X es próximo a cero:
G(f) == Suma(-f * Wi / W - f^2 * Wi^2 / (2 * W^2); i = 1:n) = -f * Suma(W1:Wn) / W - f^2 * Suma.Cuadrado(W1:Wn) / (2 * W^2)
Ahora calculemos f, tal que G'(f) = 0
G'(f) == -Suma(W1:Wn) / W - f * Suma.Cuadrado(W1:Wn) / W^2 = 0
Multiplicamos ambos miembros por -W^2
0 == W * Suma(W1:Wn) + f * Suma.Cuadrado(W1:Wn)
Despejamos f:
f == -W * Suma(W1:Wn) / Suma.Cuadrado(W1:Wn)
Por tanto:

f-óptima == -Min(W1:Wn) * Suma(W1:Wn) / Suma.Cuadrado(W1:Wn)
Donde W1:Wn son los retornos fraccionales, después de comisiones, de un sistema de trading.

La ventaja de esta fórmula respecto a la de Kelly es que no se basa en una distribución binomial sino multinomial. Y la ventaja de esta fórmula respecto a la de Ralph Vince, la cual también es multinomial, es que para resolver la f-óptima no necesitamos ningún proceso iterativo.

En lenguaje estadístico:

f-óptima == -Min(X) * E(X) / E(X^2)
Donde X = variable aleatoria de los retornos fraccionales, después de comisiones, de un sistema de trading y E = Esperanza matemática.

La f-óptima, calculada así, no es exactamente la f-óptima de Ralph Vince, pero sí una aproximación a la misma. Sería interesante ver si es más agresiva, o más conservadora, que la f-óptima de Ralph Vince. De momento he visto, en algún ejemplo, que es más conservaddora que la f-óptima de Ralph Vince, pero tal vez no sea siempre así.
He observado que cuando en un sistema de trading los buenos resultados extremos se desvián exageradamente del promedio, la f-óptima, calculada como sugiero, es muy conservadora. En cambio cuando los buenos resultados extremos no se desvían exageradamente del promedio, la f-óptima, calculada así, es más agresiva. O sea, que la f-óptima, tal como sugiero, penaliza a los sistemas de trading con mayor volatilidad en sus resultados.

Por favor, un poco de feedback. ¿Comentarios?



Gracias.
Última edición por Rafa7 el 03 Mar 2016 00:46, editado 3 veces en total.
¡Jesús es el Rey de Reyes y el Señor de Señores!
https://loquepermanece.blogspot.com

Avatar de Usuario
Wikmar
Mensajes: 3868
Registrado: 29 Sep 2010 00:01
Ubicación: Madrid

Re: Optimal-f: Cómo calcularlo con Excel

Mensaje por Wikmar »

Pues que estas aportaciones son lo más interesante del foro.

Gracias.
            https://wikmar.wordpress.com
            Si quieres algo de privacidad, cuidado con las Nubes, que nadie ha conseguido todavía ponerles una puerta.
Avatar de Usuario
Rafa7
Mensajes: 4919
Registrado: 17 Dic 2009 21:36
Contactar:

Re: Optimal-f: Cómo calcularlo con Excel

Mensaje por Rafa7 »

Sres foristas,

He mejorado el Excel.
Os lo adjunto.

optimalFf.xls
Optimal F
(46 KiB) Descargado 420 veces

Se usa así:
1. En la casilla C2 informamos 0.
2. El resultado en D2 (que será, en el ejemplo, 0,279), lo ponemos en la casilla C2.
Y así sucesivamente hasta que coincidan C2 y D2.

En el ejemplo:
C2 = 0 genera D2 = 0,279
C2 = 0,279 genera D2 = 0,5134
C2= 0,5134 genera D2= 0,5277
C2 = 0,5277 genera D2 = 0,5276
C2 = 0,5276 genera D2 = 0,5276

Hemos acabado.

La f-óptima del ejemplo del Excel es 52,76%.



Saludos.
¡Jesús es el Rey de Reyes y el Señor de Señores!
https://loquepermanece.blogspot.com
Si te ha gustado este hilo del Foro, ¡compártelo en redes!


Responder

Volver a “Sistemas de Trading”