9 votos

¿Cuáles son las ventajas de cambiar de plataforma/idiomas entre desarrollo y aplicación de estrategias?

Estoy interesada en la codificación de mediana frecuencia (el comercio a lo largo de minutos a horas, para la celebración de días a semanas) cuantitativo de la estrategia de inversión y comercio con Interactive Brokers.

He visto a muchas personas aquí mencionar que el uso de Matlab (o R, SAS, etc.) para el desarrollo de la estrategia/backtesting, pero que prefieren que se programa el código de ejecución para operaciones de trading en vivo en C++/C#/Java. ¿Cuáles son las ventajas de la re-codificación de la estrategia en un menor nivel de idioma y/o las desventajas de mantener la misma plataforma para el desarrollo y aplicación de estrategias?

Mi pensamiento es que el mantenimiento de la misma plataforma permite incorporar fácilmente las actualizaciones y mejoras a la estrategia a lo largo del tiempo, mientras que la IBrokers paquete y varios comerciales de Matlab tie-ins de IB de la API de hacer factible para comunicarse directamente con el IB de la plataforma de desarrollo. Hay algo que me estoy perdiendo aquí? Otros trataron de esto?

10voto

Johnny Edge Puntos 411

Esta es una planta de hojas perennes. He estado hablando de esto con muchas personas - sin una clara conclusión. La respuesta y la solución preferida dependen de su estilo de negociación (por ejemplo, frecuencia), sus habilidades, el tamaño del equipo, y muchos otros factores.

Por simplicidad, que yo llamo la "Investigación" del Matlab/R/etc. entornos, mientras que "en Vivo" se refiere a la re-programado en C++/Java/C# entornos.

Los autores de la propuesta de reprogramación generalmente afirman que los dos entornos son de naturaleza muy diferente, a saber:

  • Robustez: la Investigación es ad-hoc-ish por la naturaleza, su principal preocupación no es la velocidad, programación de robustez y estilo. Las necesidades de producción para ser más eficaz y más rápido, y desea que la reutilización de componentes, tales como, por ejemplo, un precio de corriente.
  • Los datos de la Investigación se realiza habitualmente en una cerrada conjunto de datos: se tiene un conjunto de datos de ejemplo y siempre que sea posible, usted está ejecutando pruebas retrospectivas con la matriz de funciones (por ejemplo, en Matlab o R). En operaciones de trading en vivo, se está trabajando con datos incrementales, la nueva información es de estallar en espaciado irregular. Por lo tanto, el comercio de vivir es mucho más orientado a eventos (al menos para frecuencias más altas).
  • Supuestos En un backtest, usted necesita para hacer suposiciones sobre la relación de relleno y precio, y muy a menudo calcular las posiciones de asintóticamente (es decir, como un porcentaje de su cartera, sin importar el tamaño mínimo que se puede mantener de una posición). En operaciones de trading en vivo, usted no puede hacer eso. Usted necesidad de generar un orden en términos de tamaño de futuros/acciones/etc. También, usted tendrá que alimentar de nuevo en su posición real (que depende de los rellenos que tienes), que es algo que usted no tiene que preocuparse en la investigación.

La gente suele intentar superar estas diferencias con diferentes estrategias, tales como:

  • El Python manera de tomar el centro de la ruta por la construcción de todo en un lenguaje de alto nivel que posiblemente se ajusta a ambos requisitos. Los opositores de esta estrategia afirman que de esta manera usted no terminará con las mejores soluciones, ni en la investigación ni en operaciones de trading en vivo.

  • El Matlab/R camino de la Investigación centrada en las tiendas de intentar construir todo alrededor de Matlab. En mi experiencia, esto funciona bien para un determinado tamaño, pero con equipos más grandes que las cosas pueden ser muy difíciles de mantener. La reutilización de componentes entre el equipo puede llegar a ser muy difícil.

  • La Reprogramación Esto requiere de muy buenas habilidades o un dedicado re-programación en equipo. Este suele ser caro y difícil, y el riesgo es añadir errores.

  • La integración Hay algunas plataformas que permiten el despliegue de estrategias en varios idiomas (por ejemplo, compilado a código de matlab, R automatización, etc.). Si se hace bien, esta puede ser la mejor solución.

Por ti mismo, si eres el único que está trabajando en la estrategia, y con la frecuencia que usted menciona, el Matlab/R manera suena como el camino a seguir.

7voto

icco Puntos 1808

Los únicos beneficios que puedo imaginar de re-codificación en C++ sería su velocidad. Pero la velocidad no parece ser una preocupación para su horizonte de tiempo (especialmente si usted escribir un código de Matlab). Algunos pueden argumentar que C++ es más estable, pero Matlab es bastante estable para el comercio de vivir.

Sin embargo, los aspectos negativos del uso de dos lenguas son incluso más importante que sólo la facilidad de actualización y mejora de la estrategia. No sólo usted tiene el código nuevas actualizaciones dos veces, pero en C++ y Matlab no son similares, por lo que tendrás que escribir diferente código. Esto aumentará drásticamente la probabilidad de cometer errores, que lo más probable es perder dinero.

En última instancia, a menos que usted está en el punto donde la velocidad es muy importante, tener dos diferentes bases de código para el desarrollo y la aplicación es una pesadilla.

3voto

Ant Puntos 121

Puede combinar los dos idiomas en una sola plataforma. Yo uso Octava mucho ( la fuente equivalente de MATLAB ) y donde la velocidad es un tema que me han re-escrito .oct funciones en C++ que son llamados de Octava. Esto tiene la ventaja de utilizar sólo Octava código funcional para el día a día de uso, pero con la velocidad de C++, donde sea necesario.

3voto

Vitalik Puntos 184

No hay ninguna ventaja. Usted va a introducir nuevos errores. Es un hecho básico de software de escritura. Sólo deseando que no estaban allí no hacer errores desaparecen.

Hace un par de años, yo tenía un trabajo (de media a alta frecuencia) donde todo el código se transformó a partir de la investigación / desarrollo para la producción, a menudo con una traducción. Fue un gran problema, incluso a los que más avanzado de la firma.

Mi siguiente trabajo fue más alto de frecuencia donde sucedieron las cosas en C++ sólo. Así que para hacer más alto el nivel de análisis en R, I necesaria para llevar a R y C++ más cerca juntos. Rcpp hace que esto sea posible.

Ahora, la elección de las lenguas, tanto personales (estilo, lo que usted puede haber aprendido de primera, ...) y el institucional (sea cual sea la tienda se ha asentado en este emparejamiento no se puede y no funciona para todo el mundo. Pero que hizo por mí, y, en gran medida porque alivia la división entre los investigación de software y software de comercio. Estos fueron los mismos C++ rutinas, simplemente implementan en diferentes contextos.

2voto

Chris Bunch Puntos 639

Todavía estoy investigando este tema con mayor profundidad, pero hasta ahora no he encontrado las siguientes ventajas para la re-codificación de la estrategia en un menor nivel de idioma (para mejor o peor, el idioma de mi elección en este caso es Java):

  1. Acceso a la última versión de la API. R IBrokers no implementa todos los de la oficina internacional de la API de funciones más recientes, y no hay ninguna garantía de que el paquete se mantiene hasta la fecha. No me gusta depender de un vendedor comercial para una interfaz de Matlab para IB, y la mayoría de los desarrolladores de estas interfaces podría llevar a creer que la configuración no es baladí.
  2. Personalizada de comercio de front-end/interfaz gráfica de usuario. R y Matlab GUI capacidades deja mucho que desear. Java Swing es un placer de usar.
  3. Multi-threading. Aunque el procesamiento en paralelo se ha integrado en R y Matlab algo si usted está dispuesto a pagar por ello, ambos fueron diseñados como, fundamentalmente, de un único subproceso idiomas.
  4. La capacidad de llamar a R/Matlab código de Java. Estoy aún seguro de lo bien que esto iba a funcionar, pero al menos parece posible utilizar directamente gran parte de la estrategia de código ya he construido llamando a una instancia de Matlab desde Java.

Ayuda o asesoramiento adicional sobre este tema todavía sería muy apreciada.

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