Aprendizaje automático en el trading: teoría, práctica, operaciones y más - página 1138

 
Konstantin Nikitin:

Según mis observaciones, afilar más de 1 no ha funcionado todavía. Sí, y las cuentas de otras personas / gráficos con un gran índice no ha visto. Todavía no lo sé.

Aleksey Vyazmikin:

En la descripción de la fórmula no queda claro cómo comprobarla, por ejemplo, ¿cómo se calculala "media aritmética de los beneficios a lo largo del tiempo de mantener una posición"?

¿Tal vez se trate de una pequeña expectativa matemática?

De todos modos, me he dado cuenta de que cuanto más alto sea este índice, mejor, y esto no es poco, y el informe principal se escribe en el archivo con esos índices que yo entiendo.

Bueno, qué puedo decirles estimados caballeros...

Son efectos secundarios de la utilización de cajas negras, bibliotecas ajenas, etc.

Solo puedo ofrecerte publicar la equidad en CSV de tu investigación y te diré cual es el Sharp Ratio correcto de tus modelos, puedes calcular tu mismo el código adjunto (python)

import random

import csv

import matplotlib

import matplotlib.pyplot as plt


def rndWalk(length, start, var):

    rndwalk = []

    curent = start

    for _ in range(length):

        curent*= 1 + random.gauss(0,3) * var

        rndwalk.append(curent)

    return rndwalk


def ParseCsv(path, columnName):

    tab = csv.DictReader(open(path))

    price = []

    for row in tab: price.append(float(row[columnName]))

    return price


def diff(ts):

    return [ts[n] - ts[n - 1] for n in range(1, len(ts))]


def SharpRatio(PnL):

    ret = sum(PnL) / len(PnL)

    var = ((sum([(x - ret) ** 2 for x in PnL]) / len(PnL))) ** 0.5

    return len(PnL) ** 0.5 * ret / var


rw = rndWalk(10000,100,0.001)

sr = SharpRatio(diff(rw))

print(sr)


plt.plot(rw)

plt.show()


El código de SharpRatio sólo tiene 3 líneas

def SharpRatio(PnL):

ret = suma(PnL) / len(PnL)

var = ((suma([(x - ret) ** 2 para x en PnL]) / len(PnL)) ** 0.5

return len(PnL) ** 0.5 * ret / var


Si me envías la equidad o el PnL, intentaré averiguar cuál es el problema. Puedo adivinar que el PnL se utiliza "descargado", es decir, con huecos entre las operaciones (lo que, por supuesto, no es correcto), y de ahí el escalamiento. Apostaría 100 dólares a que éste es el problema.

 
pantural:

Qué puedo decirles señores...

Estos son los efectos secundarios del uso de cajas negras, bibliotecas alienígenas, etc.

Sólo puedo ofrecerte que publiques la equidad en CSV de tu investigación y te diré cuál es el Sharp Ratio correcto de tus modelos, puedes calcular tú mismo el código adjunto (python)

¿Cómo darle el Sharp Ratio, por hora y por minuto?

 
Aleksey Vyazmikin:

¿Cómo se da la equidad, por hora y por minuto?

No importa, que sean ambos

Por cierto, uno de los signos de que el cálculo de Sharp es erróneo es cuando la equidad en diferentes escalas da números significativamente diferentes de Sharp Ratio mientras que normalmente deberían estar muy cerca
 
pantural:

No importa, hagamos las dos cosas.

Por cierto, uno de los signos de un cálculo erróneo de la baraja es cuando la equidad en diferentes escalas da números significativamente diferentes de las proporciones de la baraja mientras que normalmente deberían estar muy cerca

De acuerdo, pero un poco más tarde - ahora mismo todas las máquinas están jadeando por un ajuste de la historia :)

 
pantural:

No importa, hagamos las dos cosas.

Por cierto, uno de los signos de una estimación errónea de Sharp es que las acciones en diferentes escalas dan números esencialmente diferentes de Sharp Ratio mientras que normalmente deberían estar muy cerca.

Doy la variante por minuto, y adjunto el informe de operaciones del probador.

Es cierto que he mejorado un poco los indicadores.

El ratio de Sharpe es ahora de 0,29.

Archivos adjuntos:
KS.zip  102 kb
 
Aleksey Vyazmikin:

Doy una variante por minuto, y adjunto el informe de operaciones del probador.

Pero he mejorado un poco los indicadores.

El ratio de agudeza es ahora de 0,29.

Relación real de Sharp = ~3,79

El error de los que intentaron calcular sus cifras es evidente. Simplemente se olvidaron de escalar la relación entre el retorno y la variación por la raíz cuadrada de la longitud de la serie

def SharpRatio(PnL):

PnL = [x para x en PnL si abs(x) > 0]

ret = suma(PnL) / len(PnL)

var = ((suma([(x - ret) ** 2 para x en PnL]) / len(PnL)) ** 0.5

return len(PnL) ** 0.5 * ret / var


PS: SR=3.79 es muy optimista, por supuesto si no es un taller de explotación y probado correctamente

 
pantural:

ratio Sharp real = ~3,79

El error de los que hicieron el algoritmo para calcular tus números es evidente. Se olvidaron estúpidamente de escalar la relación entre el retornado y la variación por la raíz cuadrada de la longitud de la serie

def SharpRatio(PnL):

PnL = [x para x en PnL si abs(x) > 0]

ret = suma(PnL) / len(PnL)

var = ((suma([(x - ret) ** 2 para x en PnL]) / len(PnL)) ** 0.5

return len(PnL) ** 0.5 * ret / var


PS: SR=3.79 es muy optimista, por supuesto si no es un sudor (hasta cierto punto) y probado correctamente

Gracias por el recuento.

Si realmente es un error, tal vez valga la pena reportarlo en un hilo especial, ya que es un error global en la terminal?

En cuanto a la adaptación, tengo mi propio enfoque de MO, recojo las hojas de los árboles y luego miro su rendimiento en la historia en términos de muestra entrenada y desconocida, donde hubo un efecto positivo en ambas muestras pasan al siguiente grupo para la selección y el análisis detallado. Esto es en parte un ajuste, pero con ajustes por el hecho de que tal "hoja" funcionó antes y funciona ahora, y lo que pasará después - nadie lo sabe.

 
Aleksey Vyazmikin:

Gracias por el recuento.

Si realmente es un error, tal vez deberías reportarlo en un hilo especial, ya que es un error global en la terminal?

Sí, definitivamente es un error, debe ser reportado, ¿te importa si uso tu reporte como ejemplo?

Aleksey Vyazmikin:

En cuanto a la adaptación, tengo mi propio enfoque de MO, recojo las hojas de los árboles y luego miro su rendimiento en la historia en términos de muestra entrenada y desconocida, donde hubo un efecto positivo en ambas muestras pasan al siguiente grupo para la selección y el análisis detallado. Esto es en parte adecuado, pero con el ajuste de que tal "hoja" funcionaba antes y funciona ahora, y que nadie sabe lo que va a pasar después.

El ajuste está en todas partes, se mire como se mire, la cuestión es cómo reducirlo a un nivel aceptable.

 
pantural:

El ajuste está en todas partes, se mire como se mire, la cuestión es cómo reducirlo a un nivel aceptable.

No se puede. Cualquier optimización, cualquier puesta a punto, cualquier entrenamiento es un ajuste. Hay que aceptarlo como algo inevitable y trabajar con ello.

La cuestión debe plantearse de otra manera en este caso. Desgraciadamente, probablemente no haya recetas generales, y la propia formulación puede ser diferente para los distintos sistemas.

 
Yuriy Asaulenko:

No se puede. Cualquier optimización, cualquier puesta a punto, cualquier entrenamiento es un ajuste.

Aquí hay que plantear la cuestión de otra manera. Desgraciadamente, probablemente no haya recetas generales, y la propia formulación puede ser diferente para los distintos sistemas.

Ver

No utilice números que necesiten ser ajustados