Aplicación de prediccion de redes neuronales

El espacio de los traders quant: sistemas de trading, gestión monetaria, automatización de sistemas.
edge2k
Mensajes: 31
Registrado: 18 Feb 2012 16:40

Re: Aplicación de prediccion de redes neuronales

Mensaje por edge2k »

Efectivamente no voy a entrar en discusión sobre lenguajes, es algo que no viene al caso y que tengo bastante solventado. Programo en mas de 10 lenguajes, me es indiferente usar uno u otro, los uso dependiendo de la casuistica y el problema a resolver. Y portar toda esta red a otro lenguaje (sobretodo C por ejemplo) es totalmente inviable. Es muy complejo.

Centremos el problema en como conectar un backtesting de NT con una fuente externa.
cls escribió: edge2k a fin de cuentas lo que tiene es una señal de entrada. Eso no es ni la mitad de un sistema automático. Le queda lo difícil y lo que determinará si el sistema es ganador o no; gestión de la posición y señal de salida. Eso también podría incluirlo en una red neuronal aunque la complejidad ya sería enorme, con demasiados factores interdependientes y con relaciones muy frágiles. No sé hasta qué punto los resultados serían fiables.

Una posibilidad (de entre unas cuantas que podría haber) rápida y fácil para saber si la predicción es aprovechable es entrar a mercado. Y analizar el MAE y MFE para averiguar el recorrido medio de las entradas y a partir de ahí ir afinando y ver si el sistema tiene posibilidades. Eso ninja te lo da en su report de backtesting.

Saludos
No podría estar mas de acuerdo contigo cls. Ni siquiera una señal de entrada, simplemente una predicción.. por eso ahora busco el poder hacer esos estudios.

Tanto el Cómo (como conectar NT con fuente externa) hacerlo, como el Qué (tengo la predicción, y ahora?) hacer. Eso era el objetivo de este hilo

Gracias!!
Avatar de Usuario
cls
Mensajes: 1336
Registrado: 24 May 2007 18:46
Contactar:

Re: Aplicación de prediccion de redes neuronales

Mensaje por cls »

edge2k,

Para poder hacer el backtesting tendrás que tener un sistema (saber qué quieres hacer: básicamente cuándo entrar y cuándo salir, y cómo hacerlo. Ahora sólo tienes una predicción). Y luego automatizarlo. Para la automatización tendrás que aprenderte las clases de Ninja para programar estrategias. En la ayuda de Ninja encontrarás todo lo necesario y en su foro hay infinidad de código libre. Este paso es inevitable elijas la plataforma que elijas (Ninja, metatrader, multicharts, esignal, etc).

Te resumo lo que yo haría en tu caso para testear un vencimiento del mini-sp. Por ejemplo el anterior de diciembre-2015:
1.- Desde Ninja me bajo el histórico en 1min desde el 20-09-2015 al 20-12-2015 del ES 12-15. Este fichero contendrá el OHLC de todas las barras de 1 min.
2.- Ese fichero lo paso por la red neuronal en Python (dijiste que sólo usabas el OHLC así que estos datos te servirán) e identifico las predicciones como una pareja de datos formada cada una por el número de barra en que ocurre la predicción y el tipo de predicción: alcista, bajista, sin predicción. Estos datos los bajo a fichero.
3.- Ahora ya dentro de la estrategia en Ninja (que te habrás tenido que programar por tu cuenta) simplemente cargas el fichero en memoria (p.ej. durante la primera ejecución del método OnBarUpdate) y vas comprobando si el índice de la barra para la que se ejecuta cada OnBarUpdate subsiguiente está en el fichero de predicciones. Y si está lanzas la entrada. Luego tu estrategia ya se encargará de gestionar la salida.

Esta solución la podrías pasar por el backtesting. Y te serviría para cualquier vencimiento, timeframe, instrumento, etc.

Como ves integrar tus predicciones de Python con Ninja para hacer un backtesting sería muy sencillo. Lo complicado y que te llevará mucho más tiempo será programar la estrategia (independientemente de la plataforma que elijas).

Y ya para la integración en tiempo real podrías hacerlo con ficheros o por sockets o usando alguna librería de interoperabilidad como te comenté en otro post.

Saludos
edge2k
Mensajes: 31
Registrado: 18 Feb 2012 16:40

Re: Aplicación de prediccion de redes neuronales

Mensaje por edge2k »

Cierto. Para hacer backtesting no necesito una predicción "online", con volcar todos los datos a un fichero e importarlos en el backtesting debería ser suficiente.
Sobre la estrategia en NT, tengo algo de experiencia de esos 3 años hacia atrás.

Aunque por otra parte, tal vez intente ya directamente hacerlo a través de sockets.

Nueva pregunta, Ninjatrader 7 o Ninjatrader 8?

Un saludo
Avatar de Usuario
cls
Mensajes: 1336
Registrado: 24 May 2007 18:46
Contactar:

Re: Aplicación de prediccion de redes neuronales

Mensaje por cls »

Si ya controlas algo en Ninja podrías hacer un sistema muy sencillo de entrar a mercado en la barra pronosticada y salir al cierre. Y tras el backtesting ya tendrás una idea aproximada de las posiblidades de tu red.

Por otro lado, si tu red puede trabajar con el OHLC no te costaría mucho incluirle cualquier otro dato (Bollinger, macd, atr, rsi, ...). Esto te lo puedes bajar desde Ninja también aunque ya tendrías que programarlo pero dificutad cero. Y ya se te abre un mundo de posibilidades más allá del OHLC de las barras.

Sobre la pregunta de la versión: Ninja8. Está en beta9 y no creo que tarde mucho en salir la release.

Saludos
Avatar de Usuario
X-Trader
Administrador
Mensajes: 12793
Registrado: 06 Sep 2004 10:18
Contactar:

Re: Aplicación de prediccion de redes neuronales

Mensaje por X-Trader »

Edge2k, creo que tengo la solución al problema. Se llama PyAlgoTrade, échale un vistazo:

http://gbeced.github.io/pyalgotrade/

Como puedes ver en la documentación (http://gbeced.github.io/pyalgotrade/docs/v0.17/html/) permite linkar con NinjaTrader.



Saludos,
X-Trader
"Los sistemas de trading pueden funcionar en ciertas condiciones de mercado todo el tiempo, en todas las condiciones de mercado en algún momento del tiempo, pero nunca en todas las condiciones de mercado todo el tiempo."

edge2k
Mensajes: 31
Registrado: 18 Feb 2012 16:40

Re: Aplicación de prediccion de redes neuronales

Mensaje por edge2k »

cls escribió:Por otro lado, si tu red puede trabajar con el OHLC no te costaría mucho incluirle cualquier otro dato (Bollinger, macd, atr, rsi, ...). Esto te lo puedes bajar desde Ninja también aunque ya tendrías que programarlo pero dificutad cero. Y ya se te abre un mundo de posibilidades más allá del OHLC de las barras.
Ese es el mundo que yo quiero. Hay que ir haciendo poco a poco
X-Trader escribió:Edge2k, creo que tengo la solución al problema. Se llama PyAlgoTrade, échale un vistazo:

http://gbeced.github.io/pyalgotrade/

Como puedes ver en la documentación (http://gbeced.github.io/pyalgotrade/docs/v0.17/html/) permite linkar con NinjaTrader.

Saludos,
X-Trader
Permite linkar pero guardando un csv de NT. Gracias por la libreria, para otras cosas me sera muy util.

Estuve probando y con este pequeño codigo dentro de la estrategia de NT:

Código: Seleccionar todo

var request = (HttpWebRequest)WebRequest.Create("http://192.168.8.106:8080");
request.ContentType = "text/json";
request.Method = "POST";

using (var streamWriter = new StreamWriter(request.GetRequestStream()))
{
    string json = new JavaScriptSerializer().Serialize(new
                {
                    user = "Foo",
                    password = "Baz"
                });

    streamWriter.Write("hola");
}

var response = (HttpWebResponse)request.GetResponse();
using (var streamReader = new StreamReader(response.GetResponseStream()))
{
        var result = streamReader.ReadToEnd();
}
Soy capaz de enviar a mi endpoint 192.168.8.106:8080 los datos que yo quiera. En ese endpoint funcionará como una api que estara mi red neuronal escuchando cada entrada y devolviendo la respuesta.

Veremos que resultados voy obteniendo, porque solventada la primera fase de "interconexion", ahora queda lo mas dificil, una estregia y mucho analisis!!

Un saludo
Si te ha gustado este hilo del Foro, ¡compártelo en redes!


Responder

Volver a “Sistemas de Trading”