Estoy construyendo un sistema de gestión de cartera de negociación que es responsable de la producción, optimización y simulación de carteras de negociación no de alta frecuencia (que se ocupan de barras de datos de 1min o 3min, no de datos de tics).¿Qué lenguaje de programación para la simulación de la cartera de negociación de uso intensivo de cómputo?
Planeo emplear los servicios web de Amazon para asumir toda la carga de la aplicación.
Tengo cuatro opciones que considero como idioma.
- Java
- C++
- C#
- Python
Aquí es el alcance de los extremos del alcance del proyecto. No es así como será, quizás nunca, pero está dentro del alcance de los requisitos:
- Simulación semanal de 10,000,000 sistemas comerciales.
- (Se espera que cada sistema comercial tenga sus propios métodos de minería de datos, incluidos algoritmos de selección de características que son extremadamente costosos en términos de computación. Imagine las características 500-5000 utilizando envoltorios. No se ejecutan con frecuencia de ninguna manera, pero sigue siendo una consideración)
- la producción en tiempo real de la cartera w/100.000 estrategias de negociación
- Tomando en 1 minuto o 3 datos min de todos los mercados de valores/futuros de todo el mundo (aproximadamente 100.000) optimización
- cartera de carteras con hasta 100.000 estrategias. (Algoritmo bastante intenso)
La velocidad es una preocupación, pero creo que Java puede manejar la carga.
Solo quiero asegurarme de que Java PUEDA manejar los requisitos anteriores cómodamente. No quiero hacer el proyecto en C++, pero lo haré si fuera necesario.
La razón por la que C# está allí es porque pensé que era una buena alternativa a Java, aunque no me gusta Windows en absoluto y preferiría Java si todas las cosas son las mismas.
Python - He leído algo sobre PyPy y pyscho que dicen que python se puede optimizar con la compilación de JIT para ejecutarse a velocidades cercanas a C ... Esa es la única razón por la que está en esta lista, además de ese hecho Python es un lenguaje excelente y probablemente sea el idioma más divertido para codificar, lo cual no es un factor en absoluto para este proyecto, sino un beneficio.
Para resumir:
- producción en tiempo real
- simulaciones semanales de un gran número de sistemas
- optimizaciones semanal/mensual de carteras
- gran número de conexiones para recopilar datos de
No se trata de intercambios en milisegundos o incluso segundos.La única consideración es si Java puede tratar con este tipo de carga cuando se extiende de una cantidad necesaria de servidores EC2.
Muchas gracias muchachos por su sabiduría.
No hay ninguna razón para suponer que C++ sea más rápido que Java (como parece estar asumiendo), porque ese no es siempre el caso. – Jesper
Bien, punto tomado Jesper. Sé apenas C++ en absoluto. Solo estoy tratando de elegir una dirección y atenerme a ella. Para las personas que defienden Python ... además de los beneficios obvios de usar Python, ¿hay alguna diferencia en el rendimiento entre Java y Python? Considere que esto eventualmente se utilizará para el comercio en vivo: honestamente no puedo decir si Python es mucho más lento que Java o si es más rápido ("cerca de la velocidad C") lo cual está obstaculizando mi decisión. Pensé que iba a ir a Java, pero aún no está escrito en piedra. ¡Gracias a todos! – Bijan
Tenga en cuenta que puede usar Jython en la JVM junto con Java (el idioma). Aunque no estoy seguro de cuán maduro es Jython. Si no conoces bien a Python, me quedaré con Java. –