Sunday, 2 July 2017

Automated Trading System In C ++


Membuat Sistem Perdagangan Otomatis Menggunakan Pialang Interaktif Trading Otomatis Dengan Broker Interaktif. Platform perdagangan Pialang Interaktif itu sendiri tidak menawarkan perdagangan otomatis Namun, beberapa solusi tersedia untuk pedagang yang ingin mengotomatisasi sistem perdagangan menggunakan platform IB Trader Workstation TSW, termasuk. Ketiga - API Pihak. Programming Consultants. Third-Party APIs Application Programming Interface API adalah format bahasa yang digunakan oleh program aplikasi untuk berkomunikasi dengan perangkat lunak sistem lain. API bertindak sebagai antarmuka atau perantara yang memungkinkan kode berkomunikasi dengan platform perdagangan IB. Vendor pihak ketiga menawarkan berbagai API eksklusif yang menyediakan algoritma prebuilt yang dapat disesuaikan, dan aplikasi perangkat lunak perdagangan plug-and-play yang dirancang untuk berjalan bersamaan dengan platform perdagangan IBer Trader Workstation TWS. Daftar API bagian ketiga tersedia di Situs Web IB dari beranda mengklik judul Pendidikan dan pilih The Marketplace IB Re Iklankan disclaimer dan jika Anda menyetujui persyaratannya, klik Jika Anda Setuju dengan Penafian, Harap Klik Disini untuk melanjutkan Klik tab Perangkat Lunak Perangkat Lunak dan Perangkat Lunak Manajemen Pesanan untuk melihat penyedia dan produk yang ditunjukkan pada Gambar 1.Gambar 1 - Pilih Tab Perangkat Lunak Perangkat di Marketplace IB untuk menjelajah vendor pihak ketiga. Konsultan Pemrograman Selain API yang tersedia secara komersial, IB Marketplace juga memiliki tautan ke Konsultan Pemrograman yang dapat membantu pedagang dan investor dengan pengembangan indikator dan strategi khusus untuk Digunakan dalam perdagangan otomatis Konsultan menyediakan pengkodean dalam berbagai bahasa termasuk Java, C, Visual Basic, SQL, Perl, Matlab dan juga platform perdagangan lainnya yang memiliki bahasa proprietary yang dapat dihubungkan dengan IB. Ingatlah bahwa pemrogram hanya dapat memprogram Aturan mutlak, dan biasanya tidak menawarkan saran untuk meningkatkan profitabilitas sistem - hanya kinerja kode Sebelum bekerja dengan a Programmer, penting untuk dapat mendefinisikan semua sistem perdagangan masuk, keluar dan logika manajemen Jika dapat didefinisikan, mungkin kode tersebut dapat diprogram. Pemrograman dengan API IB Solusi ketiga adalah untuk pedagang dengan keterampilan atau keinginan untuk Belajar memprogram API mereka sendiri Interactive Brokers menyediakan beberapa API yang dapat digunakan para trader untuk terhubung melalui TWS atau IB Gateway Connecting through the TWS mengharuskan aplikasi berjalan, namun memungkinkan trader untuk menguji dan mengkonfirmasi bahwa perintah API berfungsi dengan benar. Menghubungkan melalui Gateway IB, di sisi lain, tidak menyediakan antarmuka untuk pengujian dan konfirmasi, namun mengizinkan API berjalan tanpa aplikasi GUI yang besar. Di mana API pihak ketiga menyediakan algoritma prebuilt yang dapat disesuaikan, API IB Lingkungan pemrograman pada dasarnya adalah bahan baku IB menyediakan peralatan dan komponen, dan pengguna melakukan semua pemrograman Pengguna dapat memprogram dalam berbagai bahasa, termasuk C , Java, ActiveX atau DDE untuk Excel Ada beberapa pengaturan yang berhubungan dengan API di TWS yang dapat dikonfigurasi oleh pedagang, yang ditunjukkan pada Gambar 2 Panduan Referensi IB API yang tersedia di situs Web Interaktif Brokers untuk Panduan Referensi API juga memberikan gambaran umum. Sebagai petunjuk yang spesifik untuk berbagai bahasa pemrograman. Gambar 2 - Mengkonfigurasi pengaturan API di TWS. Cintlusion Pedagang yang ingin menerapkan sistem perdagangan otomatis melalui platform Interactive Brokers memiliki beragam pilihan Non-programer mungkin ingin menjelajahi API pihak ketiga Vendor yang menawarkan berbagai pilihan yang dapat disesuaikan atau plug and play Pedagang dengan ide unik dapat bekerja dengan konsultan pemrograman yang berkualitas Mereka yang memiliki pengalaman pemrograman atau waktu dan keinginan untuk belajar bahasa pemrograman dapat menggunakan API IB saat mengembangkan sistem perdagangan otomatis. Senior C Automated Trading System Developer. Getting excited tentang pengembangan sistem perdagangan otomatis di C Apakah Anda, sebagai Developer, tertantang b Masalah teknis yang rumit dalam lingkungan dinamis yang cepat dan cepat Apakah Anda dapat menggunakan teknologi terbaru untuk menerjemahkan masalah ini ke dalam solusi teknis yang elegan Jika Anda memiliki pengalaman minimal 5 tahun bekerja dengan C, Anda mungkin adalah Senior C Automated Trading System Pengembang yang kami cari. Siapa kami Kami adalah Optiver, perusahaan perdagangan internasional, berkantor pusat di Amsterdam Dengan lebih dari 700 rekan kerja di empat benua, kami senantiasa menawarkan harga yang wajar dan sangat kompetitif untuk pembelian dan penjualan saham, obligasi, opsi, masa depan. , ETF s et cetera Ini disebut pembuatan pasar Kami membangun pasar dan menyediakan likuiditas ke bursa internasional di Eropa, Amerika Serikat dan Asia Pasifik. Kami membuat pasar keuangan menjadi adil, terbuka dan dapat diandalkan Kami tidak hanya berdagang saat kami merasa seperti itu Tidak hanya ketika Pandangan kita cerah, tapi 24 jam sehari Apapun cara pasar pergi, kita berada di sana, selalu dengan risiko kita sendiri, menggunakan modal kita sendiri Nilai selisihnya menguraikannya dengan sempurna. Menjelaskan secara singkat apa yang kami lakukan setiap hari Ini juga mengundang Anda untuk mengeksplorasi bagaimana kami melakukan pekerjaan kami secara berbeda. Kami telah menghargai perbedaan itu sejak tahun 1986 tahun yang kami mulai di Bursa Pilihan Eropa berbasis Amsterdam dengan pedagang lantai tunggal Hari ini kami adalah salah satu dari Paling dinamis, inovatif dan sukses di Belanda dan sekitarnya. IT di Optiver Sejak berdagang di lantai berubah menjadi perdagangan berbasis layar, kita senantiasa membutuhkan teknologi paling maju, software trading dan koneksi ke pasar Singkatnya, kita membutuhkan yang terbaik. IT-profesional untuk mengembangkan, mengoptimalkan dan mendukung sistem dan alat kami Suasana yang kami jalani cepat, tapi menarik Hal ini membuat TI di Optiver menjadi tantangan besar dimana keahlian, inovasi dan kesenangan berjalan beriringan setiap hari. Sebagai Senior C Automated Pengembang Sistem Perdagangan Anda akan bertanggung jawab untuk mengembangkan sistem perdagangan otomatis berkecepatan tinggi di C untuk sistem operasi Linux Dengan bekerja sama dengan pengembang lain, para pedagang Peneliti, Anda akan menanggapi permintaan kompleks dengan solusi teknis yang elegan dengan menggunakan teknologi terbaru Dengan keterampilan C berorientasi objek yang kuat, Anda dapat merancang dan menerapkan strategi perdagangan baru yang menguntungkan, sekaligus mengelola ekspektasi yang jelas terhadap pemangku kepentingan internal Anda Dengan berbagi pengetahuan luas Anda Dengan anggota tim Anda dan membimbing kolega junior dalam keputusan teknis, Anda akan mendukung Tim Pengembangan untuk memahami kompleksitas bisnis. Gelar Master di bidang Ilmu Komputer, Teknik TI atau Sistem Informasi. Setidaknya 5 tahun pengalaman kerja sebagai Seorang pengembang perangkat lunak di C, dengan pengalaman rekam jejak yang sangat baik di STL, Boost dan perpustakaan open source C lainnya yang populer. Mengeksplorasi pengetahuan tentang sistem operasi UNIX dan Linux. Pengetahuan tentang High Performance Computing, latensi rendah dan pengembangan real-time. Dengan multithreading dalam pengetahuan C. strong tentang pasar keuangan dan perdagangan derivatif. preferably 2 tahun o F pengalaman kerja dalam dunia pengembangan perdagangan otomatis. Ambisi untuk mengembangkan diri Anda terus-menerus melalui pelatihan dan pengembangan lapangan. Pemahaman yang baik tentang C11 adalah latar belakang. Latar belakang Matematika dan pengalaman kerja dengan algoritme adalah nilai tambah. Pemain tim dan komunikator yang menikmati kebebasan kreatif dan kemandirian. Apa yang akan Anda dapatkan Optiver adalah di atas semua keadaan pikiran Kami mencari Anda saat Anda percaya pada perbaikan harian, bila Anda ingin mendapat penghargaan serius atas kinerja Anda dan saat Anda dengan mudah beradaptasi Untuk mengubah dan menikmati humor dan kesenangan Untuk menjadi konkret, kami menawarkan remunerasi yang sangat baik Tapi kami juga menawarkan beragam manfaat sekunder seperti biaya komuter kelas 1, pensiun bebas premi, struktur pembagian keuntungan yang menarik, paket relokasi, Kesempatan pelatihan, diskon untuk asuransi kesehatan, fasilitas sarapan dan makan siang, kegiatan olah raga dan rekreasi, minuman sore hari Jumat dan bahkan di rumah mingguan Ssages. Interested Kami adalah 350 profesional berpendidikan tinggi dari lebih 30 negara yang berbeda yang bekerja di Optiver di Amsterdam Kami bertujuan untuk menjadi tak tertandingi di industri kami, dengan menjadi berbakat, kreatif dan berorientasi pada hasil Dan tidak masalah bagaimana kami berpakaian atau apa yang kami percaya , Selama kami melebihi harapan kami dan satu sama lain. Jika Anda siap untuk mendaftar, dan kami harap Anda, terapkan langsung melalui tombol di bawah untuk posisi Senior C Automated Trading System Developer Mohon berikan CV dan surat dari kami Motivasi dalam bahasa Inggris Aplikasi tanpa surat motivasi tidak akan ditinjau Bila menurut kami keajaiban itu ada, Anda akan mendengar kabar dari kami lebih cepat dari yang Anda harapkan. Jika ada pertanyaan, silakan hubungi Marlouk Stek di 31 20 708 70 00. Sebuah penilaian Adalah bagian dari prosedur aplikasi. Ikuti Rapat C. Best Programming Language untuk Algorithmic Trading Systems. Salah satu pertanyaan paling sering saya dapatkan di QS mailbag adalah bahasa pemrograman terbaik untuk algori. Thmic trading Jawaban singkatnya adalah tidak ada parameter strategi, kinerja, modularitas, pengembangan, ketahanan dan biaya terbaik untuk semua semua dipertimbangkan. Artikel ini akan menjelaskan komponen penting dari arsitektur sistem perdagangan algoritmik dan bagaimana keputusan mengenai implementasi mempengaruhi pilihan dari Bahasa. Pertama, komponen utama dari sistem perdagangan algoritmik akan dipertimbangkan, seperti alat penelitian, optimizer portofolio, manajer risiko dan mesin eksekusi Selanjutnya, strategi perdagangan yang berbeda akan diperiksa dan bagaimana pengaruhnya terhadap perancangan sistem. Frekuensi perdagangan dan volume perdagangan kemungkinan keduanya akan dibahas. Setelah strategi trading dipilih, perlu dilakukan arsitek seluruh sistem. Ini termasuk pilihan perangkat keras, sistim operasi dan ketahanan sistem terhadap kejadian langka dan berpotensi bencana. Sementara Arsitektur sedang dipertimbangkan, karena harus dibayar terhadap kinerja - baik ke alat penelitian maupun lingkungan eksekusi langsung. Apa itu Sistem Perdagangan Mencoba Melakukannya. Sebelum memutuskan bahasa terbaik untuk menulis sistem perdagangan otomatis, penting untuk menentukan persyaratannya. Apakah sistem akan menjadi Murni berbasis eksekusi Akankah sistem memerlukan manajemen risiko atau modul konstruksi portofolio Apakah sistem memerlukan backtester berkinerja tinggi Untuk kebanyakan strategi sistem perdagangan dapat dipartisi menjadi dua kategori Penelitian dan pembangkitan sinyal. Penelitian berkaitan dengan evaluasi kinerja strategi selama Data historis Proses evaluasi strategi perdagangan terhadap data pasar sebelumnya dikenal dengan backtesting. Ukuran data dan kompleksitas algoritmik akan memiliki dampak yang besar terhadap intensitas komputasi kecepatan CPU backtester dan konkurensi sering merupakan faktor pembatas dalam mengoptimalkan kecepatan eksekusi penelitian. Generasi sinyal berkaitan dengan menghasilkan satu set sinyal perdagangan dari sebuah algoritma M dan mengirim pesanan semacam itu ke pasar, biasanya melalui broker Untuk strategi tertentu, tingkat kinerja yang tinggi diperlukan. Masalah IO seperti bandwidth jaringan dan latensi sering menjadi faktor pembatas dalam mengoptimalkan sistem eksekusi. Jadi pilihan bahasa untuk setiap komponen Anda. Keseluruhan sistem mungkin sangat berbeda. Tipe, Frekuensi dan Volume Strategi. Jenis strategi algoritmik yang digunakan akan berdampak besar pada disain sistem. Perlu mempertimbangkan pasar yang diperdagangkan, konektivitas ke vendor data eksternal, Frekuensi dan volume strategi, trade-off antara kemudahan pengembangan dan pengoptimalan kinerja, serta perangkat keras khusus, termasuk server kustom bersama, GPU atau FPGA yang mungkin diperlukan. Pilihan teknologi untuk frekuensi rendah Strategi ekuitas AS akan jauh berbeda dari strategi perdagangan arbitrase statistik frekuensi tinggi di pasar berjangka Sebelum pilihan l Banyak data vendor harus dievaluasi yang sesuai dengan strategi yang ada. Penting untuk mempertimbangkan konektivitas ke vendor, struktur API, ketepatan waktu data, persyaratan penyimpanan dan ketahanan saat menghadapi vendor yang sedang offline. Juga bijaksana untuk memiliki akses cepat ke beberapa vendor Berbagai instrumen memiliki kebiasaan penyimpanan sendiri, contohnya mencakup beberapa simbol ticker untuk ekuitas dan tanggal kedaluwarsa untuk masa depan, tanpa menyebutkan data OTC spesifik. Hal ini perlu dipertimbangkan dalam desain platform. Frekuensi strategi cenderung menjadi salah satu penggerak terbesar tentang bagaimana tumpukan teknologi akan didefinisikan. Strategi yang menggunakan data lebih sering daripada bar kecil atau kedua memerlukan pertimbangan yang signifikan berkaitan dengan kinerja. Strategi yang melampaui bar kedua adalah data kutu yang mengarah ke Desain berbasis kinerja sebagai persyaratan utama Untuk strategi frekuensi tinggi, sejumlah besar data pasar perlu dilakukan Disimpan dan dievaluasi Perangkat lunak seperti HDF5 atau kdb biasanya digunakan untuk peran ini. Agar memproses volume data yang dibutuhkan untuk aplikasi HFT secara ekstensif, sistem backtester dan pengoptimalan yang dioptimalkan secara ekstensif harus digunakan oleh CC mungkin dengan beberapa assembler cenderung Kandidat bahasa terkuat Strategi frekuensi ultra tinggi pasti akan membutuhkan perangkat keras khusus seperti FPGAs, pertukaran co-location dan tuning antarmuka jaringan kernal. Sistem Pencarian. Sistem pencarian biasanya melibatkan campuran pengembangan interaktif dan skrip otomatis Yang sebelumnya sering terjadi dalam IDE seperti Visual Studio, MatLab atau R Studio Yang terakhir melibatkan perhitungan numerik yang ekstensif pada banyak parameter dan titik data. Hal ini mengarah pada pilihan bahasa yang menyediakan lingkungan langsung untuk menguji kode, namun juga memberikan kinerja yang memadai untuk mengevaluasi strategi dibandingkan parameter parameter yang beragam. IDE di ruang ini termasuk Microsoft Visual CC, Yang berisi utilitas debugging yang luas, kemampuan penyelesaian kode melalui Intellisense dan tinjauan langsung keseluruhan tumpukan proyek melalui database ORM, LINQ MatLab yang dirancang untuk aljabar linier numerik dan operasi vektor yang ekstensif, namun dengan cara konsol interaktif R Studio yang membungkus R Konsol bahasa statistik dalam IDE Eclipse IDE yang lengkap untuk Linux dan IDE semi-proprietary Java seperti Enthought Canopy for Python, yang mencakup analisis data perpustakaan seperti NumPy SciPy scikit-learn dan panda dalam lingkungan konsol interaktif tunggal. Backtesting numerik, semua bahasa di atas sesuai, walaupun tidak perlu menggunakan IDE GUI karena kode akan dieksekusi di latar belakang Pertimbangan utama pada tahap ini adalah kecepatan eksekusi. Bahasa terkompilasi seperti C sering berguna. Jika dimensi parameter backtesting besar Ingatlah bahwa perlu diwaspadai sistem seperti itu jika itu Adalah kasusnya. Bahasa yang diinterpretasikan seperti Python sering menggunakan pustaka berkinerja tinggi seperti panda NumPy untuk langkah backtesting, untuk mempertahankan tingkat daya saing yang wajar dengan kompilasi yang setara Akhirnya bahasa yang dipilih untuk backtesting akan ditentukan secara spesifik. Kebutuhan algoritmik serta jangkauan perpustakaan yang tersedia dalam bahasa lebih banyak di bawah ini. Namun, bahasa yang digunakan untuk lingkungan penelitian dan pendahuluan dapat sepenuhnya terlepas dari komponen yang digunakan dalam komponen konstruksi, manajemen risiko dan pelaksanaan portofolio, seperti yang akan terlihat..Portfolio Konstruksi dan Manajemen Risiko Komponen konstruksi dan manajemen portofolio portofolio sering diabaikan oleh pedagang algoritmik eceran Hal ini hampir selalu merupakan kesalahan Alat-alat ini menyediakan mekanisme dimana modal akan dipertahankan Mereka tidak hanya berusaha meringankan jumlah taruhan berisiko, Tetapi juga meminimalkan churn dari perdagangan itu sendiri, mengurangi biaya transaksi Versi canggih komponen ini dapat memiliki pengaruh yang signifikan terhadap kualitas dan konsistensi profitabilitas. Sangat mudah untuk menciptakan strategi yang stabil karena mekanisme konstruksi portofolio dan manajer risiko dapat dengan mudah dimodifikasi untuk menangani banyak sistem. Jadi, hal itu harus dianggap penting. Komponen pada awal perancangan sistem perdagangan algoritmik. Tugas sistem konstruksi portofolio adalah mengambil sekumpulan perdagangan yang diinginkan dan menghasilkan serangkaian perdagangan aktual yang meminimalkan churn, mempertahankan eksposur terhadap berbagai faktor seperti sektor, kelas aset , Volatilitas dll dan mengoptimalkan alokasi modal ke berbagai strategi dalam portofolio. Konstruksi portofolio seringkali mengurangi masalah aljabar linear seperti matriks factorisation sehingga kinerjanya sangat bergantung pada keefektifan pelaksanaan aljabar linier numerik yang tersedia. Perpustakaan umum mencakup uBLAS LAPACK dan NAG untuk C MatLab juga memiliki ekstensivel Y operasi matriks dioptimalkan Python menggunakan NumPy SciPy untuk perhitungan semacam itu Portofolio yang sering diseagalisasi akan memerlukan sebuah perpustakaan matriks yang disusun dan dioptimalkan dengan baik untuk melakukan langkah ini, agar tidak menghambat sistem perdagangan. Manajemen waktu adalah bagian penting lain dari perdagangan algoritmik. Sistem Risiko dapat muncul dalam berbagai bentuk Peningkatan volatilitas meskipun hal ini dapat dipandang sebagai sesuatu yang diinginkan untuk strategi tertentu, peningkatan korelasi antara kelas aset, default pihak ketiga, pemadaman server, kejadian angsa hitam dan bug yang tidak terdeteksi dalam kode perdagangan, untuk beberapa nama. Komponen manajemen risiko mencoba dan mengantisipasi dampak dari volatilitas yang berlebihan dan korelasi antara kelas aset dan efek selanjutnya terhadap modal perdagangan Seringkali hal ini mengurangi seperangkat perhitungan statistik seperti uji stres Monte Carlo Ini sangat mirip dengan kebutuhan komputasi derivatif. Mesin harga dan dengan demikian akan CPU-bound Simulasi ini sangat paralel Dapat dilihat di bawah dan, sampai tingkat tertentu, adalah mungkin untuk membuang perangkat keras pada masalah tersebut. Sistem Eksekusi. Tugas sistem eksekusi adalah menerima sinyal perdagangan yang disaring dari komponen manajemen portofolio dan manajemen risiko dan mengirimkannya ke broker Atau sarana akses pasar lainnya Untuk sebagian besar strategi perdagangan algoritmik eceran, ini melibatkan koneksi API atau FIX ke broker seperti Interactive Brokers Pertimbangan utama saat menentukan bahasa termasuk kualitas API, ketersediaan bahasa-wrapper untuk API, Frekuensi eksekusi dan selip yang diantisipasi. Kualitas API mengacu pada seberapa baik dokumen itu didokumentasikan, jenis kinerja apa yang diberikannya, apakah memerlukan perangkat lunak mandiri untuk diakses atau apakah gateway dapat dibuat dengan cara tanpa kepala, tidak ada GUI In Kasus Pialang Interaktif, alat WorkStation Trader harus berjalan di lingkungan GUI agar bisa mengakses API yang pernah saya instal. La Desktop edisi Ubuntu ke server awan Amazon untuk mengakses Pialang Interaktif dari jarak jauh, murni untuk alasan ini. Sebagian besar API akan menyediakan antarmuka C dan atau Java Biasanya hingga ke masyarakat untuk mengembangkan bungkus bahasa khusus untuk C, Python, R, Excel dan MatLab Perhatikan bahwa dengan setiap plugin tambahan yang digunakan terutama bungkus API, ada cakupan bagi bug untuk masuk ke dalam sistem. Selalu uji plugin semacam ini dan pastikan mereka secara aktif dipertahankan Alat pengukur yang layak adalah untuk melihat berapa banyak pembaruan baru pada basis kode yang telah Dibuat dalam beberapa bulan terakhir. Frekuensi eksekusi adalah yang paling penting dalam algoritma eksekusi Perhatikan bahwa ratusan pesanan dapat dikirim setiap menit dan karena kinerja seperti itu kritis Slippage akan dikeluarkan melalui sistem eksekusi yang buruk dan ini akan memiliki dampak dramatis. Pada profitabilitas. Bahasa yang diketik secara statistik lihat di bawah seperti Java umumnya optimal untuk eksekusi namun ada trade-off dalam waktu pengembangan, pengujian dan Kemudahan pemeliharaan Bahasa yang diketik secara dinamis, seperti Python dan Perl sekarang umumnya cukup cepat Selalu pastikan komponen dirancang dengan mode modular lihat di bawah sehingga bisa ditukar keluar sebagai skala sistem. Perencanaan Arsitektur dan Proses Pengembangan. Komponen sistem perdagangan, persyaratan frekuensi dan jatahnya telah dibahas di atas, namun infrastruktur sistem belum tercakup. Mereka yang bertindak sebagai pedagang eceran atau bekerja dalam dana kecil kemungkinan akan mengenakan banyak topi. Perlu ditutupi. Model alfa, parameter manajemen risiko dan eksekusi, dan juga implementasi akhir sistem Sebelum mempelajari bahasa-bahasa tertentu disain arsitektur sistem yang optimal akan dibahas. Pemisahan Masalah. Salah satu keputusan terpenting yang harus dilakukan pada Awal adalah bagaimana untuk memisahkan kekhawatiran dari sistem perdagangan Dalam pengembangan perangkat lunak, ini pada dasarnya berarti bagaimana memecah aspek yang berbeda dari Sistem perdagangan menjadi komponen modular yang terpisah. Dengan memaparkan antarmuka di masing-masing komponen, mudah untuk menukar bagian-bagian dari sistem untuk versi lain yang dapat membantu kinerja, keandalan atau perawatan, tanpa memodifikasi kode ketergantungan eksternal. Ini adalah praktik terbaik untuk Sistem Untuk strategi pada frekuensi yang lebih rendah, praktik semacam itu disarankan Untuk perdagangan dengan frekuensi sangat tinggi, buku peraturan mungkin harus diabaikan dengan mengorbankan sistem tweaker untuk kinerja yang lebih ketat. Sistem yang digabungkan dengan lebih ketat mungkin diinginkan. Membuat peta komponen perdagangan algoritmik Sistem bernilai artikel itu sendiri Namun, pendekatan yang optimal adalah memastikan ada komponen terpisah untuk input data pasar real-time dan historis, penyimpanan data, API akses data, backtester, parameter strategi, konstruksi portofolio, manajemen risiko dan otomatis. Sistem eksekusi. Misalnya, jika penyimpanan data yang digunakan saat ini berkinerja buruk, bahkan pada tingkat yang signifikan Dari optimasi, dapat ditukar dengan penulisan ulang yang minimal dengan penggunaan data atau API akses data Sejauh yang dibutuhkan oleh komponen backtester dan komponen berikutnya, tidak ada perbedaan. Manfaat lain dari komponen terpisah adalah memungkinkan berbagai bahasa pemrograman. Untuk digunakan dalam keseluruhan sistem Tidak perlu dibatasi pada satu bahasa jika metode komunikasi komponennya adalah bahasa yang independen Hal ini akan terjadi jika mereka berkomunikasi melalui TCP IP, ZeroMQ atau beberapa protokol independen bahasa lainnya. Sebagai contoh konkret, perhatikan kasus sistem backtesting yang ditulis dalam C untuk kinerja jumlah kuartalan, sedangkan manajer portofolio dan sistem eksekusi ditulis dengan Python menggunakan SciPy dan IBPy. Performance Considerations. Performance adalah pertimbangan yang signifikan untuk kebanyakan strategi perdagangan. Strategi frekuensi yang lebih tinggi itu adalah faktor terpenting. Kinerja mencakup berbagai isu, seperti eksekusi algoritmik Kecepatan ion, latency jaringan, bandwidth, data IO, paralelisme konkurensi dan penskalaan Masing-masing bidang ini secara tertutup oleh buku teks besar, jadi artikel ini hanya akan menggores permukaan setiap topik. Pilihan arsitektur dan bahasa sekarang akan dibahas dalam hal efeknya. Pada kinerja. Kebijaksanaan yang berlaku seperti yang dinyatakan oleh Donald Knuth salah satu bapak Ilmu Komputer, adalah bahwa optimasi prematur adalah akar dari semua kejahatan Ini hampir selalu terjadi - kecuali saat membangun algoritma perdagangan frekuensi tinggi Bagi mereka yang tertarik pada Strategi frekuensi yang lebih rendah, pendekatan yang umum adalah membangun sistem dengan cara yang paling sederhana dan hanya mengoptimalkannya saat kemacetan mulai muncul. Peralatan profiling digunakan untuk menentukan kemacetan mana yang muncul. Profil dapat dibuat untuk semua faktor yang tercantum di atas, baik dalam Lingkungan MS Windows atau Linux Ada banyak sistem operasi dan alat bahasa yang tersedia untuk digunakan, serta utilitas pihak ketiga Pilihan bahasa w Sakit sekarang dibahas dalam konteks performance. C, Java, Python, R dan MatLab semua berisi perpustakaan berkinerja tinggi baik sebagai bagian dari standar atau eksternal untuk struktur data dasar dan kerja algoritmik kapal C dengan Perpustakaan Template Standar, sementara Python Berisi NumPy SciPy Tugas matematika yang umum dapat ditemukan di perpustakaan ini dan jarang bermanfaat untuk menulis sebuah implementasi baru. Satu pengecualian adalah jika arsitektur perangkat keras yang sangat disesuaikan diperlukan dan algoritma memanfaatkan ekstensif ekstensi proprietary seperti cache kustom. Namun, Sering kali reinvention dari roda menghabiskan waktu yang bisa lebih baik dihabiskan untuk mengembangkan dan mengoptimalkan bagian lain dari infrastruktur perdagangan Waktu pengembangan sangat berharga terutama dalam konteks pengembang tunggal. Latency seringkali merupakan isu sistem eksekusi karena alat penelitian biasanya terletak Pada mesin yang sama Untuk yang terdahulu, latency bisa terjadi pada banyak titik sepanjang jalur eksekusi Databa Ses harus dikonsultasikan latency jaringan disk, sinyal harus dihasilkan syste operasi, latency kernal messaging, sinyal perdagangan mengirim latency NIC dan perintah sistem pertukaran yang diproses latency. Untuk operasi frekuensi yang lebih tinggi perlu untuk akrab dengan optimasi kernal dan optimasi Dari transmisi jaringan Ini adalah area yang dalam dan secara signifikan berada di luar cakupan artikel tetapi jika algoritma UHFT diinginkan maka waspadalah terhadap kedalaman pengetahuan yang dibutuhkan. Caching sangat berguna di toolkit sebuah pengembang perdagangan kuantitatif Caching mengacu pada Konsep penyimpanan data yang sering diakses dengan cara yang memungkinkan akses berkinerja lebih tinggi, dengan mengorbankan potensi staleness data Kasus penggunaan umum terjadi dalam pengembangan web saat mengambil data dari database relasional yang didukung disk dan memasukkannya ke memori. Permintaan untuk data tidak harus memukul database dan kinerja sehingga keuntungan dapat signifikan. Untuk trad Situasi caching bisa sangat bermanfaat Misalnya, keadaan portofolio strategi saat ini dapat disimpan dalam cache sampai dapat diseimbangkan kembali, sehingga daftar tidak perlu diregenerasikan pada setiap lingkaran algoritma perdagangan Regenerasi semacam itu cenderung Jadilah operasi CPU atau disk IO yang tinggi. Namun, caching bukan tanpa masalah tersendiri. Regenerasi data cache sekaligus, karena sifat penyimpanan cache yang volatile, dapat memberi permintaan yang signifikan terhadap infrastruktur. Masalah lainnya adalah menumpuk di mana banyak generasi Dari tembolok tembolok baru dilakukan di bawah beban yang sangat tinggi, yang menyebabkan kegagalan kaskade. Aliran memori dinamis adalah operasi yang mahal dalam pelaksanaan perangkat lunak. Jadi, penting bagi aplikasi perdagangan kinerja yang lebih tinggi untuk mengetahui dengan baik bagaimana memori dialokasikan dan deallokasi Selama aliran program Standar bahasa yang lebih baru seperti Java, C dan Python semuanya melakukan pengumpulan sampah otomatis yang mengacu pada deallokasi dynamicall Y mengalokasikan memori ketika benda-benda keluar dari ruang lingkup. Pengumpulan sampah sangat berguna selama pengembangan karena mengurangi kesalahan dan kemampuan pembacaan. Namun, seringkali suboptimal untuk strategi perdagangan frekuensi tinggi tertentu Pengumpulan sampah khusus sering diinginkan untuk kasus-kasus ini. Di Jawa, Sebagai contoh, dengan menyetel pengumpul sampah dan konfigurasi tumpukan, adalah mungkin untuk mendapatkan kinerja tinggi untuk strategi HFT. Tidak menyediakan pengumpul sampah asli dan oleh karena itu diperlukan penanganan keseluruhan alokasi alokasi memori sebagai bagian dari implementasi objek. Berpotensi rawan kesalahan yang berpotensi mengarah ke petunjuk menjuntai sangat berguna untuk memiliki kontrol yang halus tentang bagaimana objek muncul di tumpukan untuk aplikasi tertentu Saat memilih bahasa pastikan untuk mempelajari bagaimana pengumpul sampah bekerja dan apakah dapat dimodifikasi untuk dioptimalkan untuk Kasus penggunaan tertentu. Banyak operasi dalam sistem perdagangan algoritmik dapat disesuaikan dengan paralelisasi Hal ini mengacu pada th Konsep menjalankan beberapa operasi program pada saat bersamaan, yaitu secara paralel Algoritma paralel yang disebut embarassingly mencakup langkah-langkah yang dapat dihitung sepenuhnya terlepas dari langkah-langkah lain Operasi statistik tertentu, seperti simulasi Monte Carlo, adalah contoh bagus dari paralel embarassingly. Algoritma sebagai masing-masing pengambilan acak dan operasi jalur berikutnya dapat dihitung tanpa pengetahuan tentang jalur lain. Algoritma lainnya hanya sebagian simulasi simetri dinamika parallelisable contohnya, di mana domain perhitungan dapat dibagi, namun pada akhirnya domain ini harus berkomunikasi satu sama lain. Dan dengan demikian operasinya sebagian berurutan Algoritma Parallelisable tunduk pada Hukum Amdahl yang memberikan batas atas teoritis untuk peningkatan kinerja algoritma paralel ketika dikenai proses terpisah pada N misalnya pada inti atau benang CPU. Perelasi menjadi semakin penting sebagai Sarana optimasi sejak prosesor clo Kecepatan ck telah mengalami stagnasi, karena prosesor yang lebih baru mengandung banyak core untuk melakukan perhitungan paralel Maraknya perangkat keras grafis konsumen yang didominasi oleh permainan video telah menyebabkan pengembangan Unit GPU Unit Grafis, yang berisi ratusan core untuk operasi yang sangat bersamaan GPU semacam itu. Sekarang sangat terjangkau Kerangka kerja tingkat tinggi, seperti Nvidia s CUDA telah menyebabkan adopsi yang meluas di dunia akademis dan keuangan. Perangkat keras GPU pada umumnya hanya cocok untuk aspek penelitian keuangan kuantitatif, sedangkan perangkat keras khusus lainnya termasuk Field-Programmable Gate Arrays - FPGA digunakan untuk U HFT Saat ini, langauges modern mendukung tingkat konkurensi multithreading. Jadi mudah untuk mengoptimalkan backtester, karena semua perhitungan pada umumnya bebas dari yang lain. Penamaan dalam rekayasa perangkat lunak dan operasi mengacu pada kemampuan sistem Untuk menangani beban yang terus meningkat secara konsisten dalam bentuk permintaan yang lebih besar, hig Penggunaan prosesor dan alokasi memori lebih banyak Dalam perdagangan algoritmik strategi dapat diukur jika dapat menerima jumlah modal yang lebih besar dan tetap menghasilkan imbal hasil yang konsisten Skala tumpukan teknologi perdagangan jika dapat bertahan dalam volume perdagangan yang lebih besar dan peningkatan latency, tanpa bottlenecking. Sementara sistem Harus dirancang untuk skala, seringkali sulit untuk diprediksi terlebih dahulu di mana kemacetan akan terjadi Pembalakan, pengujian, profil dan pemantauan yang ketat akan sangat membantu dalam membiarkan sistem untuk skala Bahasa sendiri sering digambarkan sebagai tidak dapat diperbaiki Ini biasanya akibat dari informasi yang keliru, Daripada fakta keras Ini adalah tumpukan teknologi total yang harus dipastikan untuk skalabilitas, bukan bahasa Jelas bahasa tertentu memiliki kinerja yang lebih baik daripada yang lain dalam kasus penggunaan tertentu, namun satu bahasa tidak pernah lebih baik daripada yang lain dalam segala arti. Salah satu cara untuk mengelola skala Adalah untuk memisahkan perhatian, seperti yang dinyatakan di atas Untuk lebih mengenalkan kemampuan menangani spi Kes dalam sistem yaitu volatilitas tiba-tiba yang memicu rakit perdagangan, ada gunanya membuat arsitektur antrian pesan. Ini berarti menempatkan sistem antrian pesan antar komponen sehingga pesanan ditumpuk jika komponen tertentu tidak dapat memproses banyak permintaan. Daripada permintaan yang hilang mereka hanya disimpan dalam tumpukan sampai pesan ditangani Ini sangat berguna untuk mengirim perdagangan ke mesin eksekusi Jika mesin menderita di bawah latency berat maka akan menghasilkan transaksi Antrian antara generator sinyal perdagangan dan Eksekusi API akan meringankan masalah ini dengan mengorbankan selip perdagangan potensial Broker pesan open source pesan yang dihormati adalah RabbitMQ. Hardware dan Sistem Operasi. Perangkat keras yang menjalankan strategi Anda dapat memiliki dampak signifikan pada profitabilitas algoritma Anda Ini bukan Sebuah isu yang dibatasi pada pedagang dengan frekuensi tinggi. Salah satu pilihan buruk pada perangkat keras dan sistem operasi dapat menyebabkan kecelakaan atau rebo mesin Atau pada saat yang paling tidak tepat Jadi, perlu mempertimbangkan di mana aplikasi Anda akan berada. Pilihannya umumnya antara mesin desktop pribadi, server jarak jauh, penyedia awan atau server pertukaran co-located. Mesin komputer mudah dipasang dan dikelola. , Terutama dengan sistem operasi yang user friendly yang lebih baru seperti sistem Windows 7 8, Mac OSX dan Ubuntu Desktop memang memiliki beberapa kekurangan yang signifikan, namun yang terpenting adalah versi sistem operasi yang dirancang untuk mesin desktop cenderung memerlukan reboot dan sering di Kali terburuk Mereka juga menggunakan lebih banyak sumber komputasi dengan menggunakan antarmuka pengguna grafis GUI. Utilising hardware di lingkungan rumah atau kantor lokal dapat menyebabkan konektivitas internet dan masalah uptime daya Manfaat utama dari sistem desktop adalah komputasi yang signifikan. Tenaga kuda dapat dibeli untuk sebagian kecil dari biaya dedicated server remote atau sistem berbasis awan Kecepatan yang sebanding. Sebuah dedicated server atau mesin berbasis cloud, sementara seringkali lebih mahal daripada opsi desktop, memungkinkan infrastruktur redundansi lebih signifikan, seperti backup data otomatis, kemampuan untuk lebih jelas memastikan pemantauan uptime dan remote Mereka lebih sulit untuk mengelola sejak Mereka memerlukan kemampuan untuk menggunakan kemampuan login jarak jauh dari sistem operasi. Pada Windows ini umumnya melalui GUI Remote Desktop Protocol RDP Dalam sistem berbasis Unix, command line Secure SHell SSH digunakan oleh server berbasis Unix yang hampir selalu command - line based which immediately renders GUI-based programming tools such as MatLab or Excel to be unusable. A co-located server, as the phrase is used in the capital markets, is simply a dedicated server that resides within an exchange in order to reduce latency of the trading algorithm This is absolutely necessary for certain high frequency trading strategies, which rely on low latency in order to generate alpha. The fin al aspect to hardware choice and the choice of programming language is platform-independence Is there a need for the code to run across multiple different operating systems Is the code designed to be run on a particular type of processor architecture, such as the Intel x86 x64 or will it be possible to execute on RISC processors such as those manufactured by ARM These issues will be highly dependent upon the frequency and type of strategy being implemented. Resilience and Testing. One of the best ways to lose a lot of money on algorithmic trading is to create a system with no resiliency This refers to the durability of the sytem when subject to rare events, such as brokerage bankruptcies, sudden excess volatility, region-wide downtime for a cloud server provider or the accidental deletion of an entire trading database Years of profits can be eliminated within seconds with a poorly-designed architecture It is absolutely essential to consider issues such as debuggng, testing, logging, back ups, high-availability and monitoring as core components of your system. It is likely that in any reasonably complicated custom quantitative trading application at least 50 of development time will be spent on debugging, testing and maintenance. Nearly all programming languages either ship with an associated debugger or possess well-respected third-party alternatives In essence, a debugger allows execution of a program with insertion of arbitrary break points in the code path, which temporarily halt execution in order to investigate the state of the system The main benefit of debugging is that it is possible to investigate the behaviour of code prior to a known crash point. Debugging is an essential component in the toolbox for analysing programming errors However, they are more widely used in compiled languages such as C or Java, as interpreted languages such as Python are often easier to debug due to fewer LOC and less verbose statements Despite this tendency Python does ship with the p db which is a sophisticated debugging tool The Microsoft Visual C IDE possesses extensive GUI debugging utilities, while for the command line Linux C programmer, the gdb debugger exists. Testing in software development refers to the process of applying known parameters and results to specific functions, methods and objects within a codebase, in order to simulate behaviour and evaluate multiple code-paths, helping to ensure that a system behaves as it should A more recent paradigm is known as Test Driven Development TDD , where test code is developed against a specified interface with no implementation Prior to the completion of the actual codebase all tests will fail As code is written to fill in the blanks , the tests will eventually all pass, at which point development should cease. TDD requires extensive upfront specification design as well as a healthy degree of discipline in order to carry out successfully In C , Boost provides a unit testing framework In Java, the JUnit library exi sts to fulfill the same purpose Python also has the unittest module as part of the standard library Many other languages possess unit testing frameworks and often there are multiple options. In a production environment, sophisticated logging is absolutely essential Logging refers to the process of outputting messages, with various degrees of severity, regarding execution behaviour of a system to a flat file or database Logs are a first line of attack when hunting for unexpected program runtime behaviour Unfortunately the shortcomings of a logging system tend only to be discovered after the fact As with backups discussed below, a logging system should be given due consideration BEFORE a system is designed. Both Microsoft Windows and Linux come with extensive system logging capability and programming languages tend to ship with standard logging libraries that cover most use cases It is often wise to centralise logging information in order to analyse it at a later date, since it can often l ead to ideas about improving performance or error reduction, which will almost certainly have a positive impact on your trading returns. While logging of a system will provide information about what has transpired in the past, monitoring of an application will provide insight into what is happening right now All aspects of the system should be considered for monitoring System level metrics such as disk usage, available memory, network bandwidth and CPU usage provide basic load information. Trading metrics such as abnormal prices volume, sudden rapid drawdowns and account exposure for different sectors markets should also be continuously monitored Further, a threshold system should be instigated that provides notification when certain metrics are breached, elevating the notification method email, SMS, automated phone call depending upon the severity of the metric. System monitoring is often the domain of the system administrator or operations manager However, as a sole trading developer, t hese metrics must be established as part of the larger design Many solutions for monitoring exist proprietary, hosted and open source, which allow extensive customisation of metrics for a particular use case. Backups and high availability should be prime concerns of a trading system Consider the following two questions 1 If an entire production database of market data and trading history was deleted without backups how would the research and execution algorithm be affected 2 If the trading system suffers an outage for an extended period with open positions how would account equity and ongoing profitability be affected The answers to both of these questions are often sobering. It is imperative to put in place a system for backing up data and also for testing the restoration of such data Many individuals do not test a restore strategy If recovery from a crash has not been tested in a safe environment, what guarantees exist that restoration will be available at the worst possible moment. Sim ilarly, high availability needs to be baked in from the start Redundant infrastructure even at additional expense must always be considered, as the cost of downtime is likely to far outweigh the ongoing maintenance cost of such systems I won t delve too deeply into this topic as it is a large area, but make sure it is one of the first considerations given to your trading system. Choosing a Language. Considerable detail has now been provided on the various factors that arise when developing a custom high-performance algorithmic trading system The next stage is to discuss how programming languages are generally categorised. Type Systems. When choosing a language for a trading stack it is necessary to consider the type system The languages which are of interest for algorithmic trading are either statically - or dynamically-typed A statically-typed language performs checks of the types e g integers, floats, custom classes etc during the compilation process Such languages include C and Java A dy namically-typed language performs the majority of its type-checking at runtime Such languages include Python, Perl and JavaScript. For a highly numerical system such as an algorithmic trading engine, type-checking at compile time can be extremely beneficial, as it can eliminate many bugs that would otherwise lead to numerical errors However, type-checking doesn t catch everything, and this is where exception handling comes in due to the necessity of having to handle unexpected operations Dynamic languages i e those that are dynamically-typed can often lead to run-time errors that would otherwise be caught with a compilation-time type-check For this reason, the concept of TDD see above and unit testing arose which, when carried out correctly, often provides more safety than compile-time checking alone. Another benefit of statically-typed languages is that the compiler is able to make many optimisations that are otherwise unavailable to the dynamically - typed language, simply because the t ype and thus memory requirements are known at compile-time In fact, part of the inefficiency of many dynamically-typed languages stems from the fact that certain objects must be type-inspected at run-time and this carries a performance hit Libraries for dynamic languages, such as NumPy SciPy alleviate this issue due to enforcing a type within arrays. Open Source or Proprietary. One of the biggest choices available to an algorithmic trading developer is whether to use proprietary commercial or open source technologies There are advantages and disadvantages to both approaches It is necessary to consider how well a language is supported, the activity of the community surrounding a language, ease of installation and maintenance, quality of the documentation and any licensing maintenance costs. The Microsoft stack including Visual C , Visual C and MathWorks MatLab are two of the larger proprietary choices for developing custom algorithmic trading software Both tools have had significant battle testing in the financial space, with the former making up the predominant software stack for investment banking trading infrastructure and the latter being heavily used for quantitative trading research within investment funds. Microsoft and MathWorks both provide extensive high quality documentation for their products Further, the communities surrounding each tool are very large with active web forums for both The software allows cohesive integration with multiple languages such as C , C and VB, as well as easy linkage to other Microsoft products such as the SQL Server database via LINQ MatLab also has many plugins libraries some free, some commercial for nearly any quantitative research domain. There are also drawbacks With either piece of software the costs are not insignificant for a lone trader although Microsoft does provide entry-level version of Visual Studio for free Microsoft tools play well with each other, but integrate less well with external code Visual Studio must also be executed on Microsoft Windows, which is arguably far less performant than an equivalent Linux server which is optimally tuned. MatLab also lacks a few key plugins such as a good wrapper around the Interactive Brokers API, one of the few brokers amenable to high-performance algorithmic trading The main issue with proprietary products is the lack of availability of the source code This means that if ultra performance is truly required, both of these tools will be far less attractive. Open source tools have been industry grade for sometime Much of the alternative asset space makes extensive use of open-source Linux, MySQL PostgreSQL, Python, R, C and Java in high-performance production roles However, they are far from restricted to this domain Python and R, in particular, contain a wealth of extensive numerical libraries for performing nearly any type of data analysis imaginable, often at execution speeds comparable to compiled languages, with certain caveats. The main benefit of using inte rpreted languages is the speed of development time Python and R require far fewer lines of code LOC to achieve similar functionality, principally due to the extensive libraries Further, they often allow interactive console based development, rapidly reducing the iterative development process. Given that time as a developer is extremely valuable, and execution speed often less so unless in the HFT space , it is worth giving extensive consideration to an open source technology stack Python and R possess significant development communities and are extremely well supported, due to their popularity Documentation is excellent and bugs at least for core libraries remain scarce. Open source tools often suffer from a lack of a dedicated commercial support contract and run optimally on systems with less-forgiving user interfaces A typical Linux server such as Ubuntu will often be fully command-line oriented In addition, Python and R can be slow for certain execution tasks There are mechanisms for integrating with C in order to improve execution speeds, but it requires some experience in multi-language programming. While proprietary software is not immune from dependency versioning issues it is far less common to have to deal with incorrect library versions in such environments Open source operating systems such as Linux can be trickier to administer. I will venture my personal opinion here and state that I build all of my trading tools with open source technologies In particular I use Ubuntu, MySQL, Python, C and R The maturity, community size, ability to dig deep if problems occur and lower total cost ownership TCO far outweigh the simplicity of proprietary GUIs and easier installations Having said that, Microsoft Visual Studio especially for C is a fantastic Integrated Development Environment IDE which I would also highly recommend. Batteries Included. The header of this section refers to the out of the box capabilities of the language - what libraries does it contain and how goo d are they This is where mature languages have an advantage over newer variants C , Java and Python all now possess extensive libraries for network programming, operating system interaction, GUIs, regular expressions regex , iteration and basic algorithms. C is famed for its Standard Template Library STL which contains a wealth of high performance data structures and algorithms for free Python is known for being able to communicate with nearly any other type of system protocol especially the web , mostly through its own standard library R has a wealth of statistical and econometric tools built in, while MatLab is extremely optimised for any numerical linear algebra code which can be found in portfolio optimisation and derivatives pricing, for instance. Outside of the standard libraries, C makes use of the Boost library, which fills in the missing parts of the standard library In fact, many parts of Boost made it into the TR1 standard and subsequently are available in the C 11 spec, inclu ding native support for lambda expressions and concurrency. Python has the high performance NumPy SciPy Pandas data analysis library combination, which has gained widespread acceptance for algorithmic trading research Further, high-performance plugins exist for access to the main relational databases, such as MySQL MySQL C , JDBC Java MatLab , MySQLdb MySQL Python and psychopg2 PostgreSQL Python Python can even communicate with R via the RPy plugin. An often overlooked aspect of a trading system while in the initial research and design stage is the connectivity to a broker API Most APIs natively support C and Java, but some also support C and Python, either directly or with community-provided wrapper code to the C APIs In particular, Interactive Brokers can be connected to via the IBPy plugin If high-performance is required, brokerages will support the FIX protocol. As is now evident, the choice of programming language s for an algorithmic trading system is not straightforward and require s deep thought The main considerations are performance, ease of development, resiliency and testing, separation of concerns, familiarity, maintenance, source code availability, licensing costs and maturity of libraries. The benefit of a separated architecture is that it allows languages to be plugged in for different aspects of a trading stack, as and when requirements change A trading system is an evolving tool and it is likely that any language choices will evolve along with it. Just Getting Started with Quantitative Trading.

No comments:

Post a Comment