He desarrollado un algoritmo de trading, sorprendentemente simple en su naturaleza (comencé con grandes planes de aplicar Machine Learning a este problema ya que soy un científico de datos de profesión).
Colocaría el código aquí, pero me gustaría hacer algún backtesting apropiado antes de lanzarlo para la revisión por pares. En cualquier caso, estoy viendo precisiones de predicted_trading_signal
en comparación con perfect_insight
de $+80\%$ a través de muchos del grupo russell 2000, que como un científico de datos, y una persona racional parece demasiado bueno para ser verdad. Para ello, me gustaría saber si esto es una prueba adecuada
Aquí hay un pseudocódigo:
# generate trading signal up onto data[i]
predicted_trading_signal = some_algo(data[:i])
# generate perfect insight signal
perfect_insight = another_algo(data[i], data[i+1])
# where data[i+1] is say the next day
if some_statistical_property_of_data > lambda:
if predicted_trading_signal == perfect_insight:
correct+=1
else:
incorrect+=1
# after running over all windows of interest for a particular stock
accuracy = 100.0* correct /float(correct + incorrect)
¡Ojalá pudiera ser más concreto con el código!
- ¿Es este un enfoque válido para la precisión de los cálculos?
- es condicionar la información hasta la fecha de hoy y utilizar el precio del día siguiente típico en las estrategias de prueba sin fuga de datos (un problema sutil para una persona ingenua como yo en el comercio)
- ¿Existe un enfoque mejor?
Mi última pregunta (espero que se considere parte de la pregunta más grande - odio las preguntas múltiples en un post en mathstackexchange)
¿Puedo determinar el cálculo de pérdidas y ganancias como $$ P_i = \text{trading_signal}_{i-1}\left(S_{i} - S_{i-1}\right)\cdot C_{i-i} $$
Aquí
- $C_{i-1}$ es el capital inicial invertido.
- $S_i$ precio de las acciones
- $\text{trading_signal}_{i-1}$ es la señal comercial inicial