Rencana Belajar Sendiri untuk Menjadi Pengembang Kuantitatif

Penulis:Kebaikan, Dibuat: 2019-02-12 09:08:19, Diperbarui:

Saya baru-baru ini menerima banyak email dari individu yang ingin mengubah karir dari teknik, akademisi dan TI. Keuangan kuantitatif telah menjadi bidang yang sangat menarik baru-baru ini karena tantangan intelektual dan remunerasi yang tinggi. Pertanyaan yang terus-menerus muncul dalam email ini adalah apa yang perlu saya pelajari untuk meyakinkan seorang pewawancara untuk memberi saya pekerjaan?. Ini adalah yang pertama dalam seri tiga bagian yang akan membahas cara membentuk rencana belajar mandiri untuk mendapatkan pekerjaan di industri keuangan kuantitatif. Pos ini akan membahas cara belajar mandiri untuk menjadi pengembang kuantitatif. Dua lainnya akan berkonsentrasi pada analis kuantitatif dan pedagang kuantitatif.

Setiap karir di bidang keuangan kuantitatif membutuhkan tingkat generalisasi daripada spesialisasi yang luas. Pengembang kuantitatif tidak berbeda. Mereka harus cocok dengan tim pedagang, insinyur keuangan dan dukungan TI untuk membantu bank investasi harga dan menjual produk investasi terstruktur baru atau membantu dana mengembangkan infrastruktur perdagangan dan sistem manajemen portofolio.

Komputer Ilmiah

Jalur yang paling umum ke dalam pengembangan kuantitatif adalah melalui latar belakang akademik dalam komputasi ilmiah. Ini karena keterampilan inti yang diperlukan untuk pengembangan kuantitatif adalah keterampilan pemrograman lanjutan dan implementasi algoritma numerik. Keterampilan ini dikembangkan sebagai hal yang wajar dalam lingkungan penelitian sekolah pascasarjana untuk ilmu fisika atau teknik.

Namun, jika latar belakang Anda tidak dalam komputasi ilmiah, masih ada banyak peluang untuk menjadi pengembang kuantitatif memanfaatkan latar belakang dalam pemrograman.

Keterampilan Pemrograman

Pertama dan terpenting pengembang kuantitatif adalah pengembang perangkat lunak. Dengan demikian peran hampir secara eksklusif akan 100% berbasis pemrograman. Anda akan menemukan diri Anda mengoptimalkan prototipe perdagangan atau mengembangkan infrastruktur perdagangan dari awal. Jika Anda menargetkan peran bank, maka Anda mungkin perlu menggunakan C ++, Java atau C # dalam lingkungan Microsoft / Windows. Jika Anda menargetkan dana lindung nilai maka Anda mungkin menerjemahkan MatLab atau R ke dalam C ++ dan / atau Python. Dana cenderung menggunakan Java dan C # kurang, karena mereka sering berada di lingkungan UNIX di mana C ++ dan Python lebih masuk akal. Jika Anda memiliki latar belakang dalam salah satu lingkungan pemrograman ini, masuk akal untuk mengoptimalkan kekuatan Anda dan tetap dengan perangkat lunak yang Anda ketahui dengan baik. Jadi jika Anda tahu Java, misalnya, akan bijaksana untuk menargetkan peran perbankan investasi.

Dengan asumsi Anda seorang programmer yang kompeten dan senang beralih ke perangkat lunak yang paling banyak digunakan di industri keuangan, maka saya sarankan belajar C ++ dan Python sangat baik, karena itu memberi Anda kemampuan paling lintas-penampang di berbagai sektor industri.

Baca seluruh Akselerasi C ++ oleh Andrew Koenig. Buku ini akan membuat Anda mulai dari awal pada sintaksis C ++ dan, khususnya, akan membahas secara rinci tentang penunjuk dan manajemen memori. Ini adalah area yang banyak programmer (termasuk mereka dari latar belakang Java dan C #) tidak akan begitu akrab dengan. Yang terbaik adalah membaca melalui saat menerapkan contoh, baik dengan Microsoft Visual Studio atau GCC compiler di Linux / UNIX, untuk berlatih sintaksis, daripada hanya membacanya! Bacalah (beberapa kali!) keseluruhan Efektif C ++ oleh Scott Meyers. Saya telah mengulangi saran ini secara konsisten di seluruh situs, tetapi masih perlu dikatakan lagi. Buku ini akan membawa Anda dari programmer C ++ pemula ke programmer menengah yang siap untuk wawancara. Buku ini lebih sulit untuk benar-benar berlatih di depan terminal, karena Meyers mengatur beberapa contoh yang rumit. Salah satu cara untuk menjalankan buku ini adalah dengan menentukan di mana dalam proyek Anda sendiri Anda dapat menerapkan pola. Jika Anda mendaftar untuk pekerjaan C ++ secara langsung, Anda mungkin ingin melampaui dua karya ini. Scott Meyers juga telah menulis Lebih Efektif C ++ dan Efektif STL. Anda kemudian perlu mempertimbangkan perpustakaan Boost, pemrograman multithreaded dan dasar-dasar sistem operasi Linux untuk menjadi ahli sejati. Demikian pula untuk Python:

Jika Anda sudah seorang programmer C++/Java/C# yang terampil, maka bacalah bagian-bagian tertentu dari Learning Python oleh Mark Lutz. Secara khusus, bacalah Bab 4-9, yang membahas Python yang dibangun dalam jenis. Bab 10-13 membahas sintaksis Python untuk percabangan dan looping, sehingga mereka juga dapat dibaca dengan ringan untuk menentukan sintaksis. Namun, perlu menghabiskan waktu yang signifikan pada Bab 14-20, karena mereka membahas fitur spesifik Python seperti Iterasi/Pengertian dan penggunaan fungsi lanjutan. Bagian V dan VI mencakup ruang nama dan pemrograman berorientasi objek, dan bagaimana konsep-konsep ini berbeda dalam Python dari bahasa seperti C++/Java. Jika Anda ingin menjadi programmer Python menengah yang baik, maka Anda juga harus mempertimbangkan bab-bab yang tersisa dalam buku ini. Buku kedua Mark Lutz, Programming Python, adalah tentang benar-benar membangun aplikasi dalam Python. Ini akan mengambil semua pengetahuan sintaksis yang diperoleh di yang pertama dan memungkinkan Anda untuk mulai membangun aplikasi yang kuat. Ini akan membantu Anda menjadi insinyur perangkat lunak Python yang jauh lebih baik. Untuk mereka yang pasti tertarik pada sisi perdagangan kuantitatif dari industri, akan perlu untuk belajar bagaimana melakukan analisis data dalam Python. ini adalah keterampilan yang sering diambil saat di sekolah pascasarjana, tetapi Python untuk Analisis Data oleh Wes McKinney dengan baik mencakup beberapa perpustakaan yang lebih baru tersedia seperti SciPy dan panda. Setelah mengikuti rencana di atas, Anda harus memiliki kesempatan yang baik di setiap wawancara C ++ atau Python. Namun, untuk memperkuat keterampilan pengembang Anda, perlu untuk mengetahui beberapa inovasi terbaru dalam rekayasa perangkat lunak, yang hanya cenderung dipelajari di tempat kerja, tetapi pasti dapat dipelajari dan dipraktekkan di rumah di waktu luang Anda.

Teknik Perangkat Lunak

Menjadi kandidat wawancara yang baik untuk posisi pengembang kuantum mengharuskan Anda menjadi programmer yang baik DAN pengembang perangkat lunak yang baik. Banyak yang dapat belajar yang pertama dari buku teks dan praktek. Namun yang terakhir hanya dapat dipelajari dari bekerja pada proyek perangkat lunak yang lebih besar, umumnya dengan pengembang lain. Namun, ini tidak berarti tidak dapat dimasukkan ke dalam program studi rumah!

QuantLib

Membaca melalui (beberapa) kode sumber untuk proyek ini akan memberi Anda ide yang baik tentang bagaimana proyek perangkat lunak C ++ skala besar ditulis.

Untuk menjadi pengembang perangkat lunak yang baik, Anda perlu memahami cara membuat proyek perangkat lunak berskala besar. Untuk pengembangan perangkat lunak modern, ini membutuhkan penggunaan kontrol versi, integrasi terus menerus, dan praktik gesit lainnya. Berikut adalah rencana studi untuk membantu Anda memahami konsep-konsep ini:

Baca baik Steve McConnell's Code Complete dan Robert Martin's Clean Code. Kedua buku ini akan membuat Anda serius memikirkan kembali bagaimana Anda merancang perangkat lunak, dari prinsip-prinsip awal. Misalnya - berapa banyak waktu yang Anda habiskan untuk merancang perangkat lunak Anda sebelum menyentuh keyboard? Kedua buku ini akan menghemat waktu yang terbuang untuk pengembangan kode. Saya sarankan menerapkan banyak tips dalam buku ini ke proyek Anda sesegera mungkin untuk menghilangkan kebiasaan buruk. Mereka juga bagus untuk dibahas pada wawancara, karena Anda selalu akan diminta untuk menulis beberapa kode. Sebuah diskusi tentang kerajinan perangkat lunak yang baik tidak akan lengkap tanpa menyebutkan Pola Desain, juga dikenal sebagai buku Gang Of Four. Buku ini sangat relevan untuk bahasa seperti C ++, meskipun kurang untuk bahasa skrip seperti Python. Anda mungkin akan melihat bahwa Anda menggunakan desain yang sama dalam kode Anda. Buku ini membantu Anda menentukan kapan dan di mana mereka harus diterapkan. Salah satu manfaatnya adalah bahwa pengembang yang baik lainnya akan menyadari mereka - membuat Anda lebih populer di kalangan kelompok rekan pengembangan Anda. Ketika bekerja pada proyek perangkat lunak berskala besar dengan beberapa anggota tim adalah suatu keharusan mutlak untuk menggunakan perangkat lunak kontrol versi. Revisi otomatis, rollback, percabangan / penggabungan dan kemampuan pengujian yang lebih baik berarti bahwa kontrol versi ada di hampir semua lembaga perangkat lunak (yang baik). Dua pesaing besar adalah Git dan Subversion (SVN). Saya sarankan menjadi akrab hanya dengan Git karena SVN mirip (jika sedikit lebih sulit digunakan!) dan sebagian besar lembaga mengganti repositori SVN mereka dengan Git setara. Ada eBook gratis tentang belajar Git, Git Pro, yang saya sarankan Anda bekerja melalui. Ini akan menghemat waktu pengembangan yang terbuang! Beberapa industri sekarang beralih ke praktik integrasi terus menerus, yang mendorong pengujian terus menerus dan penyebaran kode melalui sistem pengujian dan penyebaran yang sepenuhnya otomatis. Interaksi Basis Data

Meskipun menjadi programmer yang sangat baik dan pengembang perangkat lunak yang sangat baik adalah prasyarat untuk mendapatkan posisi wawancara, Anda juga akan ditanya masalah yang berkaitan dengan penyimpanan dan analisis data. Salah satu komponen kunci dalam kehidupan sehari-hari seorang pengembang kuantum adalah berinteraksi dengan basis data. Dengan demikian tingkat kematangan tertentu dengan penanganan basis data diharapkan. Jika Anda belum pernah menggunakan sistem penyimpanan data, maka cara terbaik untuk memulai adalah dengan mulai memahami Sistem Manajemen Basis Data Relasional (RDBMS) dan bahasa mereka - Structured Query Language (SQL).

Cara terbaik untuk mulai belajar tentang RDBMS adalah dengan menginstal versi open source (karena Anda dapat mengunduhnya secara gratis!) dan mengikuti daftar bacaan di bawah ini. Ini melampaui ruang lingkup artikel ini untuk mengajarkan Anda cara menginstal RDBMS, tetapi Anda dapat mencoba MySQL, karena ini adalah database yang sangat umum dalam hedge fund. SQL Server dan Oracle lebih mungkin lazim dalam perbankan. Setelah Anda menginstal database seperti MySQL, gunakan panduan berikut untuk membantu Anda memahami penyimpanan dan akses data:

Jika Anda tidak terbiasa dengan SQL maka buku OReilly Learning SQL oleh Alan Beaulieu adalah awal yang bagus. Buku ini mencakup semua SQL pemula dan menengah yang perlu Anda ketahui untuk menyimpan, mengakses dan memberikan laporan untuk data. Buku ini juga akan membahas optimasi database dengan cara yang singkat. Pastikan Anda membaca seluruh buku karena semua materi relevan untuk tugas database quant dev sehari-hari. Untuk tugas database tertentu, Anda akan ingin melihat OReilly SQL Cookbook. Saya menemukan buku ini sangat berguna ketika saya seorang dev, karena saya terus-menerus menariknya dari rak untuk mencari tanggal/waktu tertentu atau kueri pelaporan! Meskipun quant dev tidak sering administrator database, jika Anda ingin belajar lebih banyak tentang optimasi MySQL lanjutan, maka dua buku berikut, meskipun tentu saja tidak perlu, sangat berguna jika Anda mengalami masalah database: MySQL Berkinerja Tinggi dan MySQL Ketersediaan Tinggi. Keuangan dan Algoritma Numerik

Karena pengembang kuantitatif bekerja di pasar keuangan, sangat berguna untuk memiliki pemahaman yang relatif baik tentang produk yang diproduksi bank atau instrumen yang akan diperdagangkan dana. Dengan demikian, Anda perlu membiasakan diri (secara luas) dengan ekuitas, forex, pendapatan tetap, komoditas dan pasar derivatif terkait. Secara khusus, Anda ingin terus berpikir tentang bagaimana data ini diwakili, disimpan dan diakses karena sebagian besar pekerjaan pengembang kuantitatif adalah untuk menyediakan penyimpanan dan akses ke data keuangan. Setelah bekerja, Anda hampir pasti akan berkonsentrasi pada satu area tertentu secara mendalam, jadi pastikan penelitian awal Anda cukup luas.

Yang lebih relevan adalah algoritma yang digunakan dalam keuangan kuantitatif untuk melakukan penetapan harga instrumen dan perdagangan algoritmik. Teknik penetapan harga derivatif bank investasi hampir pasti akan berkonsentrasi pada Metode Monte Carlo dan Metode Perbedaan Berakhir, yang keduanya bergantung pada pengetahuan tentang probabilitas, statistik, analisis numerik dan persamaan diferensial parsial.

Untuk hedge fund, Anda mungkin akan menerapkan infrastruktur perdagangan - baik frekuensi rendah atau tinggi. Ini akan melibatkan mengambil algoritma yang sudah dikodekan dalam MatLab, R atau Python (atau bahkan C ++) dan kemudian mengoptimalkannya dalam bahasa yang lebih cepat, seperti C ++, serta menghubungkan algoritma ini ke antarmuka pemrograman aplikasi pialang utama (API) dan mengeksekusi perdagangan. Keterampilan yang dibutuhkan di sini cukup berbeda. Anda harus dapat mengumpulkan data dari berbagai sumber, meletakkannya ke dalam konteks yang benar, mengulanginya dengan cepat dan kemudian menghasilkan laporan sesuai permintaan baik dalam format tetap (PDF), melalui web atau sebagai API itu sendiri.

Untuk membaca lebih lanjut tentang topik ini, silakan lihat artikel Implementasi C ++, artikel Implementasi Python dan Daftar Bacaan Keuangan Kuantitatif.

Memohon Pekerjaan

Meskipun daftar di atas terlihat seperti sejumlah besar materi untuk dipelajari, ini hanya akan berlaku untuk seseorang yang benar-benar baru dalam pemrograman. Tidak mungkin bahwa posisi pengembang kuantitatif akan cocok untuk individu seperti itu dan saya berasumsi bahwa latar belakang Anda sendiri akan berada dalam pemrograman atau ilmu fisika. Pastikan untuk membaca hanya bagian yang Anda anggap relevan dengan situasi Anda sendiri, karena jika tidak Anda dapat dengan mudah menghabiskan beberapa tahun waktu luang Anda belajar materi di atas!

Setelah Anda yakin Anda siap untuk wawancara maka Anda perlu memulai proses menghubungi perekrut kuantitatif. Ada perusahaan spesialis yang berurusan dengan bank investasi dan hedge fund. Jika Anda memerlukan nama-nama tertentu, maka jangan ragu untuk mengirim email kepada saya dimike@quantstart.comdan aku akan dengan senang hati menunjuk Anda ke arah yang benar.

Setiap perekrut yang baik akan mendiskusikan latar belakang Anda dengan tingkat detail yang wajar karena mereka mempertaruhkan reputasi mereka ketika mereka merekomendasikan Anda untuk wawancara. Rekrut umumnya tidak sangat akrab dengan teknis teknologi kuantitatif dan mereka juga tidak perlu. Namun, ini berarti mereka harus lebih mengandalkan pencocokan kata kunci untuk penyaringan CV / resume mereka sendiri. Pastikan jika Anda kuat dengan C ++ bahwa Anda menyatakan keterampilan C ++ - kuat dan referensi STL, Boost dan proyek C ++ yang telah Anda kerjakan, misalnya.

Karena pasar kerja (pada 2013) saat ini tidak terbaik (terutama di tingkat awal), Anda mungkin menemukan bahwa akan memakan waktu untuk mendapatkan pekerjaan yang Anda cari.


Lebih banyak