Sto costruendo un sistema di gestione del portafoglio di negoziazione che è responsabile della produzione, dell'ottimizzazione e della simulazione di portafogli di trading non ad alta frequenza (che si occupano di barre di dati di 1min o 3min, non di tick).Quale linguaggio di programmazione per la simulazione del portafoglio di trading ad alta intensità di calcolo?
Ho intenzione di utilizzare i servizi Web di Amazon per assumere l'intero carico dell'applicazione.
Ho quattro scelte che sto considerando come lingua.
- Java
- C++
- C#
- Python
Ecco la portata degli estremi della portata del progetto. Questo non è come sarà, forse mai, ma è nel campo di applicazione dei requisiti:
- Simulazione settimanale di 10.000.000 sistemi di trading.
- (Ogni sistema di trading prevede i propri metodi di data mining, inclusi algoritmi di selezione delle caratteristiche estremamente costosi.) Immaginate le funzioni 500-5000 usando i wrapper, che non vengono eseguiti spesso con qualsiasi mezzo, ma è comunque una considerazione)
- di produzione in tempo reale del portafoglio w/100.000 strategie di trading
- Prendendo in 1 min o 3 dati minimo da tutti i mercati azionari/dei futures in tutto il mondo (circa 100.000) ottimizzazione
- portafoglio dei portafogli con fino a 100.000 strategie. (algoritmo piuttosto intensivo)
La velocità è un problema, ma credo che Java possa gestire il carico.
Voglio solo assicurarmi che Java possa gestire comodamente i requisiti di cui sopra. Non voglio fare il progetto in C++, ma lo farò se è necessario.
Il motivo per cui C# è attivo è perché ho pensato che fosse una buona alternativa a Java, anche se non mi piace affatto Windows e preferirei Java se tutte le cose fossero uguali.
Python - Ho letto qualcosa su PyPy e pyscho che sostengono che Python può essere ottimizzato con la compilazione JIT per essere eseguito a velocità simili a quelle di C ... Questo è praticamente l'unico motivo per cui è presente in questo elenco, oltre a questo fatto che Python è un ottimo linguaggio e probabilmente sarebbe il linguaggio più divertente da codificare, il che non è affatto un fattore per questo progetto, ma un vantaggio.
Per riassumere:
- tempo reale la produzione
- simulazioni settimanali di un gran numero di sistemi
- settimanali ottimizzazioni/mensili di portafogli
- un gran numero di connessioni per raccogliere dati da
Non si tratta di transazioni con millisecondo o anche secondo.L'unica considerazione è se Java può eventualmente gestire questo tipo di carico quando si diffonde da una quantità necessaria di server EC2.
Grazie ragazzi per la vostra saggezza.
Non c'è motivo di supporre che C++ sia più veloce di Java (come sembra che tu stia assumendo), perché non è sempre così. – Jesper
Ok, punto preso Jesper. Conosco a malapena qualsiasi C++. Sto solo provando a scegliere una direzione e ad attenervici. Per le persone che difendono Python ... oltre agli ovvi benefici dell'uso di Python, c'è una differenza di prestazioni tra Java e Python? Considera che questo alla fine sarà usato per il trading dal vivo - non posso dire onestamente se Python è molto più lento di Java o se è più veloce ("vicino a C-like speed") che sta ostacolando la mia decisione. Pensavo che stavo andando java ma non è ancora scolpito nella pietra. Grazie a tutti! – Bijan
Si noti che è possibile utilizzare Jython sulla JVM insieme a Java (la lingua). Anche se non sono sicuro di quanto sia maturo Jython. Se non conosci bene Python, allora mi limiterei a restare in Java. –