1 votos

Maximizar el patrimonio de la cuenta en una serie temporal histórica

Entradas:
conjunto de barras forex OHLC de tamaño N, apalancamiento máximo L, por ejemplo 200:1, un diferencial fijo bid ask S, una ventana fija lookahead whipsaw W (por ejemplo 3 barras de largo, ver más abajo).

Resultado deseado:
una lista de tuplas {índice de la matriz, acción = Comprar mercado|Vender mercado|No hacer nada, apalancamiento, recuento de retenciones}

Con el beneficio de la retrospectiva, construya un algoritmo codicioso (al que le importa muy poco el riesgo) que tenga como objetivo extraer el mayor beneficio posible de los datos dados.

El spread bid ask asegura que inmediatamente después de abrir o cerrar una posición se incurra en una pequeña pérdida. La ventana fija de lookahead whipsaw asegura que algo no siempre elija el máximo apalancamiento. Por ejemplo, si W=3 significa que si algo hubiera aguantado sólo 3 barras más, la acción de whipsaw podría haber causado una grave erosión de las pérdidas y ganancias. Por lo tanto, debido a W se debe utilizar un apalancamiento ajustado que perjudique menos el saldo de la cuenta flotante ("equidad" en la jerga forex).

Ejemplo de salida deseada:

[barra 0, Comprar, 180:1, 18] # La posición se cierra después de 18 barras, poco peligro de whipsaw
[bar 19, DoNothing, Nil, 12] # no hay acción durante 12 barras posiblemente debido al movimiento lateral y la propagación
[bar 32, Sell, 13:1, 11] # La posición se cierra después de 11 barras, alto peligro de whipsaw por delante
...etc...

Por favor, orienten cómo resolver esto con una torre numérica de python o R. No he hecho mucho para resolver esto porque no sé cómo hacerlo. Nota: el tamaño de la matriz de entrada puede ser bastante grande, así que si un máximo global es difícil de calcular en tiempo polinómico entonces un máximo local "suficientemente bueno" está bien.

Actualización: la única aclaración que merece la pena añadir es el efecto de W en el apalancamiento. Algunos ejemplos - suponga que cualquier barra en W llevó la P&L de la operación actual a un territorio negativo, en este caso debería salir DoNothing; suponga que cualquier barra en W llevó la P&L de la operación actual a un territorio ligeramente positivo, digamos +1%, en este caso la pregunta es cuánto deberíamos reducir el apalancamiento - no lo sé pero una función lineal puede ser apropiada, por ejemplo, 1% del máximo 200:1, es decir, 2:1 para las barras que preceden a W. Por ejemplo, el 1% del máximo de 200:1, es decir, 2:1 para las barras que preceden a W. No hace falta decir que cada operación comienza con el máximo apalancamiento y se ajusta después cuando se alcanza W.

1voto

BigCanOfTuna Puntos 210

Ayudaría si usted proporcionara un pequeño ejemplo numérico de lo que quiere conseguir, es decir, algunas barras de muestra más una buena solución.

Pero en cualquier caso, IIUC, yo enfocaría el problema directamente como un modelo de optimización: Tienes $N$ bares. Suponiendo que siempre se negocia al cierre, entonces una solución candidata sería un vector de longitud $N$ que mantiene la posición a lo largo de las barras. (Las operaciones son los cambios en este vector).

Ahora escriba una función que mapee dicho vector en una ganancia o pérdida final, dadas sus barras. (La función también podría traducirse en una medida de rentabilidad ajustada al riesgo ajustado al riesgo). Esta es su función objetivo. Ahora utilice un algoritmo de optimización para "evolucionar" algún vector de solución inicial en una buena solución.

Por último, transforme su vector solución en una colección de tuplas.


Actualización, en respuesta al comentario: La ventaja del enfoque que he esbozado es que es general y flexible: general, ya que tienes el de la serie temporal de la renta variable y se puede evaluar cualquier función objetivo (por ejemplo, la reducción de la renta variable); flexible, porque puedes añadir más restricciones y refinamientos más adelante.

La desventaja es que con un algoritmo de optimización iterativo algoritmo de optimización iterativa, la curva de equidad tiene que ser recalculada en cada iteración porque la curva depende de la trayectoria (el apalancamiento depende del éxito pasado de la estrategia).

¿Qué limitaciones de tiempo tiene usted al calcular la secuencia comercial óptima? ¿Y cuánto tiempo está dispuesto a tiempo está dispuesto a dedicar a implementarlo y a hacerlo más rápido? (Véase la referencia canónica https://xkcd.com/1205/ )

Personalmente, probaría un algoritmo basado en la búsqueda local algoritmo basado en la búsqueda local para aplicar el enfoque descrito. Un algoritmo de este tipo haría evolucionar la solución modificándola gradualmente, lo que debería proporcionar muchas oportunidades para actualizar la curva de equidad durante la optimización. Es decir, no se la curva de equidad desde cero en cada iteración, sino que sólo se actualiza para el último cambio en la solución candidata.

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