Página 1 de 1

Optimal-f: Cómo calcularlo con Excel

Publicado: 13 May 2010 15:00
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 1163 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.

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

Publicado: 13 May 2010 16:51
por X-Trader
Excelente aporte Rafa7, gracias!!!!

Saludos,
X-Trader

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

Publicado: 13 May 2010 17:36
por bolsa1
Buena explicación! ;-)

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

Publicado: 14 May 2010 13:31
por Rafa7
Gracias X-Trader y bolsa1.

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

Publicado: 02 Mar 2016 12:35
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.

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

Publicado: 02 Mar 2016 21:33
por Wikmar
Pues que estas aportaciones son lo más interesante del foro.

Gracias.

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

Publicado: 21 Feb 2018 12:46
por Rafa7
Sres foristas,

He mejorado el Excel.
Os lo adjunto.

optimalFf.xls
Optimal F
(46 KiB) Descargado 466 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.