Página 2 de 2
Re: Modelo MK y KaC
Publicado: 25 May 2026 22:45
por Iker_Jimenez
Escenario Robust WFA 1 (1Y Train / 6M OOS)
Escenario Robust WFA 2 (3Y Train / 6M OOS)
Total Score
Los resultados muestran una cosa sorprendente, la estabilidad del KaC ratio bajo todo tipo de prueba de robustez, los resultados totales muestran que no es el mejor ratio, pero si el mas estable, en cualquier de los 6 escenarios de robustez, el KaC ratio siempre está en la parte alta del ranking, y eso es una buena señal, una muy buena señal.
Re: Modelo MK y KaC
Publicado: 27 May 2026 21:34
por Iker_Jimenez
Una vez vistas las puntuaciones individuales de los ratios por prueba de robustez, podemos ver las puntuaciones globales
El podio queda de la siguiente manera: Gain to pain ocupa el puesto 1º, el Omega el 2º, y el ratio de Sharpe el 3º
El KaC ratio queda en un meritorio 4º puesto, de 20 posibles, lo cual indica que es un indicador que aporta valor al análisis. Pero lo bueno no es eso, ya que si nos fijamos en las puntuaciones por cada prueba de robustez, se observa que el KaC ratio siempre está arriba en todos los análisis, mientras que los otras ratios pueden caerse del top de raking en pruebas de robustez como el escenario estático 25% - 75%.
Re: Modelo MK y KaC
Publicado: 28 May 2026 12:40
por Iker_Jimenez
La robustez del KaC ratio se demuestra si calculamos la posiciçon medio y volatilidad del ranking ocupado por cada ranking, y en donde vemos que la volatilidad del KaC ratio es la mas baja de todas, y eso me gusta, se comporta igual bajo cualquier análisis de robustez.
Y fin leches ...
Re: Modelo MK y KaC
Publicado: 29 May 2026 00:31
por Fercho
Excelente el K-Ratio Iker, lo he probado en un par de muestras y pinta muy bien.
dejo el código para NT8, y aunque no es un K-Ratio de pura cepa, se aproxima bastante o al menos se parece
El optimization fitness:
Código: Seleccionar todo
using System;
namespace NinjaTrader.NinjaScript.OptimizationFitnesses
{
public class Kratio : OptimizationFitness
{
protected override void OnCalculatePerformanceValue(StrategyBase strategy)
{
var alltrades = strategy.SystemPerformance.AllTrades;
int n = alltrades.TradesCount;
if (n < 2)
{
Value = 0;
return;
}
double r2, eq, sd;
r2 = alltrades.TradesPerformance.RSquared;
eq = alltrades.TradesPerformance.Currency.CumProfit;
sd = alltrades.TradesPerformance.Currency.StdDev;
Value = FitnessHelper.Kratio(r2, eq, sd, n);
}
}
}
y este Helper dentro de alguna estrategia o como indicador (es q al final son lo mismo

)
Código: Seleccionar todo
namespace NinjaTrader.NinjaScript
{
#region Fitness Helper
public static class FitnessHelper
{
public static double Kratio(double r2, double eq, double sd, int n)
{
if (n < 2)
return 0;
if (sd < 1e-10 || r2 >= 1.0)
return (eq > 0) ? double.MaxValue : 0;
double r = Math.Sqrt(r2);
double stdErr = sd * Math.Sqrt(1.0 - r2);
return (r * eq) / (stdErr * n);
}
}
#endregion
}
Re: Modelo MK y KaC
Publicado: 29 May 2026 16:32
por Iker_Jimenez
Fercho escribió: 29 May 2026 00:31
Excelente el K-Ratio Iker, lo he probado en un par de muestras y pinta muy bien.
dejo el código para NT8, y aunque no es un K-Ratio de pura cepa, se aproxima bastante o al menos se parece
El optimization fitness:
Código: Seleccionar todo
using System;
namespace NinjaTrader.NinjaScript.OptimizationFitnesses
{
public class Kratio : OptimizationFitness
{
protected override void OnCalculatePerformanceValue(StrategyBase strategy)
{
var alltrades = strategy.SystemPerformance.AllTrades;
int n = alltrades.TradesCount;
if (n < 2)
{
Value = 0;
return;
}
double r2, eq, sd;
r2 = alltrades.TradesPerformance.RSquared;
eq = alltrades.TradesPerformance.Currency.CumProfit;
sd = alltrades.TradesPerformance.Currency.StdDev;
Value = FitnessHelper.Kratio(r2, eq, sd, n);
}
}
}
y este Helper dentro de alguna estrategia o como indicador (es q al final son lo mismo

)
Código: Seleccionar todo
namespace NinjaTrader.NinjaScript
{
#region Fitness Helper
public static class FitnessHelper
{
public static double Kratio(double r2, double eq, double sd, int n)
{
if (n < 2)
return 0;
if (sd < 1e-10 || r2 >= 1.0)
return (eq > 0) ? double.MaxValue : 0;
double r = Math.Sqrt(r2);
double stdErr = sd * Math.Sqrt(1.0 - r2);
return (r * eq) / (stdErr * n);
}
}
#endregion
}
Me gusta que te guste el ratio, es KaC ratio, jajajaja no le cambies el nombre.
Le ves alguna utilidad además de clasificación de las carteras o estretegias??'
Re: Modelo MK y KaC
Publicado: 30 May 2026 04:43
por Fercho
Vale, la he liado, estoy en otra función objetivo "K"
Parece que es un KaC ratio propio, la fórmula la has compartido ? no la veo...
Uso un ratio casero también, funciona de maravillas, no le he puesto un nombre aún.
Es un poco lo que mencionaba en otro hilo, el trader ecualiza, alínea, equilibra una estrategia con su propia psicología. La estrategia es un medio, no el fin. El fin es la paz mental que deja al trader tranquilo mientras las velitas suben y bajan. Es su punto zen.