Rancangan Pengajian Sendiri untuk Menjadi Pengembang Kuantitatif

Penulis:Kebaikan, Dicipta: 2019-02-12 09:08:19, Dikemas kini:

Saya baru-baru ini menerima banyak e-mel dari individu yang ingin menukar kerjaya dari kejuruteraan, akademik dan IT. Kewangan kuantitatif telah menjadi bidang yang sangat menarik baru-baru ini kerana cabaran intelektual dan bayaran yang tinggi. Satu soalan yang sentiasa timbul dalam e-mel ini adalah apa yang saya perlu belajar untuk meyakinkan seorang pewawancara untuk memberi saya pekerjaan?. Ini adalah yang pertama dalam siri tiga bahagian yang akan membincangkan bagaimana untuk membentuk rancangan belajar sendiri untuk mendapatkan pekerjaan dalam industri kewangan kuantitatif.

Mana-mana kerjaya dalam kewangan kuantitatif memerlukan tahap generalisasi dan bukannya pengkhususan yang luas. Pemaju kuantitatif tidak berbeza. Mereka mesti sesuai dengan pasukan peniaga, jurutera kewangan dan sokongan IT untuk membantu bank pelaburan harga dan menjual produk pelaburan berstruktur baru atau membantu dana membangunkan infrastruktur perdagangan dan sistem pengurusan portfolio.

Komputer Saintifik

Jalan yang paling biasa ke dalam pembangunan kuantitatif adalah melalui latar belakang akademik dalam pengkomputeran saintifik. Ini kerana kemahiran teras yang diperlukan untuk quant dev adalah kemahiran pengaturcaraan lanjutan dan pelaksanaan algoritma berangka. Kemahiran ini dibangunkan sebagai perkara yang semestinya dalam persekitaran penyelidikan sekolah siswazah untuk sains fizikal atau kejuruteraan. Jika ini adalah latar belakang anda maka tugas anda adalah untuk memahami produk tertentu dan algoritma berangka yang digunakan dalam kewangan kuantitatif, kerana pelaksanaan umum dan kemahiran pengaturcaraan anda mungkin cukup maju.

Walau bagaimanapun, jika latar belakang anda bukan dalam pengkomputeran saintifik, masih ada banyak peluang untuk menjadi pembangun kuantitatif yang memanfaatkan latar belakang dalam pengaturcaraan.

Kemahiran Pengaturcaraan

Pertama dan terpenting, pembangun kuantitatif adalah pembangun perisian. Oleh itu, peranannya hampir sepenuhnya berdasarkan pengaturcaraan. Anda akan mendapati diri anda mengoptimumkan prototaip perdagangan atau membangunkan infrastruktur perdagangan dari awal. Jika anda menargetkan peranan bank, maka anda mungkin perlu menggunakan C ++, Java atau C # dalam persekitaran 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, kerana mereka sering berada di persekitaran UNIX di mana C ++ dan Python lebih masuk akal. Jika anda mempunyai latar belakang dalam mana-mana persekitaran pengaturcaraan ini, masuk akal untuk melihat kekuatan anda dan berpegang pada perisian yang anda tahu dengan baik. Oleh itu, jika anda tahu Java, misalnya, adalah bijaksana untuk menargetkan peranan perbankan pelaburan.

Dengan asumsi anda seorang pengaturcara yang kompeten dan gembira beralih ke perisian yang paling banyak digunakan dalam industri kewangan, maka saya akan mencadangkan belajar C ++ dan Python dengan sangat baik, kerana itu memberi anda keupayaan penampang paling merentas sektor yang berbeza dalam industri.

Baca keseluruhan Cepat C ++ oleh Andrew Koenig. Buku ini akan membawa anda ke awal pada sintaks C ++ dan, khususnya, akan terperinci mengenai penunjuk dan pengurusan memori. Ini adalah kawasan yang banyak pengaturcara (termasuk mereka yang mempunyai latar belakang Java dan C #) tidak akan begitu biasa. Baca keseluruhan (beberapa kali!) C ++ yang berkesan oleh Scott Meyers. Saya telah mengulangi nasihat ini secara konsisten di seluruh laman web, tetapi ia masih perlu dikatakan lagi. Buku ini akan membawa anda dari pengaturcara C ++ pemula ke pengaturcara pertengahan yang bersedia untuk wawancara. Buku ini lebih sukar untuk benar-benar berlatih di hadapan terminal, kerana Meyers menetapkan beberapa contoh yang rumit. Salah satu cara untuk menjalankan buku ini adalah untuk menentukan di mana dalam projek anda sendiri anda boleh menggunakan corak. Jika anda memohon pekerjaan C ++ secara langsung, anda mungkin ingin melampaui dua karya ini. Scott Meyers juga telah menulis Lebih berkesan C ++ dan STL yang berkesan. Begitu juga untuk Python:

Jika anda sudah seorang pengaturcara C++/Java/C# yang mahir, maka bacalah bahagian-bahagian tertentu dari Learning Python oleh Mark Lutz. Khususnya, bacalah Bab 4-9, yang membincangkan Python yang dibina dalam jenis. Bab 10-13 membincangkan sintaks Python untuk percabangan dan gelung, jadi mereka juga boleh dibaca dengan ringan untuk menentukan sintaks. Walau bagaimanapun, perlu meluangkan masa yang banyak pada Bab 14-20, kerana mereka membincangkan ciri-ciri tertentu Python seperti Iterasi / Pengertian dan penggunaan fungsi lanjutan. Bahagian V dan VI meliputi ruang nama dan pengaturcaraan berorientasikan objek, dan bagaimana konsep ini berbeza dalam Python daripada bahasa seperti C++/Java. Jika anda ingin menjadi pengaturcara Python pertengahan yang baik, maka anda juga harus mempertimbangkan bab-bab yang tersisa dalam buku ini. Buku kedua Mark Lutz, Programming Python, adalah mengenai membina aplikasi dalam Python. Ini akan mengambil semua pengetahuan sintaks yang diperoleh dalam yang pertama dan membolehkan anda memulakan membina aplikasi yang kukuh. Ini akan membantu anda menjadi jurutera perisian Python yang lebih baik. Bagi mereka yang benar-benar berminat dengan sisi perdagangan kuantitatif industri, perlu belajar bagaimana untuk menjalankan analisis data dalam Python. Ini adalah kemahiran yang sering diambil semasa di sekolah pascasiswazah, tetapi Python untuk Analisis Data oleh Wes McKinney dengan baik merangkumi beberapa perpustakaan yang lebih baru seperti SciPy dan panda. Selepas mengikuti rancangan di atas, anda harus mempunyai peluang yang baik di mana-mana wawancara C ++ atau Python. Walau bagaimanapun, untuk mengukuhkan kemahiran pemaju anda, perlu mengetahui beberapa inovasi baru-baru ini dalam kejuruteraan perisian, yang hanya cenderung difahami di tempat kerja, tetapi pasti dapat dipelajari dan dipraktikkan di rumah pada masa lapang anda.

Kejuruteraan Perisian

Menjadi calon temuduga yang baik untuk jawatan pemaju kuant memerlukan anda menjadi pengaturcara yang baik DAN pemaju perisian yang baik. Ramai yang dapat belajar yang pertama dari buku teks dan amalan. Walau bagaimanapun yang terakhir hanya dapat dipelajari dari bekerja pada projek perisian yang lebih besar, umumnya dengan pemaju lain. Walau bagaimanapun, ini tidak bermakna ia tidak boleh dimasukkan ke dalam program pengajian rumah! Sebagai contoh, sekarang mudah untuk menyumbang kepada projek perisian sumber terbuka melalui internet.

QuantLib

Membaca melalui (beberapa) kod sumber untuk projek ini akan memberi anda idea yang baik tentang bagaimana projek perisian C ++ berskala besar ditulis.

Untuk menjadi pemaju perisian yang baik, anda perlu memahami cara membuat projek perisian berskala besar. Untuk pembangunan perisian moden, ini memerlukan penggunaan kawalan versi, integrasi berterusandan amalan lincah yang lain. Berikut adalah rancangan kajian untuk membantu anda memahami konsep-konsep ini:

Baca kedua-dua Steve McConnell's Code Complete dan Robert Martin's Clean Code. Kedua-dua buku ini akan menyebabkan anda memikirkan semula cara anda merancang perisian, dari prinsip-prinsip pertama. Sebagai contoh - berapa banyak masa yang anda habiskan untuk merancang perisian anda sebelum menyentuh papan kekunci? Kedua-dua buku ini akan menyelamatkan anda dari pembinaan kod yang sia-sia. Saya akan mencadangkan menggunakan banyak petua dalam buku ini untuk projek anda secepat mungkin untuk menghilangkan sebarang tabiat buruk. Mereka juga hebat untuk dibincangkan pada temu bual, kerana anda akan selalu diminta untuk menulis beberapa kod. Buku ini sangat relevan untuk bahasa seperti C ++, walaupun kurang untuk bahasa skrip seperti Python. Anda mungkin akan melihat bahawa anda menggunakan reka bentuk yang sama dalam kod anda. Buku ini membantu anda menentukan kapan dan di mana mereka harus digunakan. Satu faedahnya adalah bahawa pemaju lain yang baik akan menyedarinya - menjadikan anda lebih popular di kalangan kumpulan rakan pembangunan anda. Apabila bekerja pada projek perisian berskala besar dengan beberapa ahli pasukan, adalah suatu keperluan mutlak untuk menggunakan perisian kawalan versi. Penambahbaikan automatik, pembalikan, percabangan / penggabungan dan keupayaan pengujian yang lebih baik bermakna bahawa kawalan versi berada di mana-mana di hampir semua institusi perisian (yang baik). Dua pesaing besar adalah Git dan Subversion (SVN). Saya akan mencadangkan menjadi biasa dengan Git kerana SVN serupa (walaupun sedikit lebih sukar digunakan!) dan kebanyakan institusi mengganti repositori SVN mereka dengan setara Git. Terdapat eBook percuma untuk belajar Git, Git Pro, yang saya cadangkan anda bekerja melalui. Ia akan menjimatkan masa pembangunan yang sia-sia! Sesetengah industri kini beralih kepada amalan integrasi berterusan, yang menggalakkan ujian berterusan dan penggunaan kod melalui sistem ujian dan penggunaan automatik sepenuhnya. Interaksi Pangkalan Data

Walaupun menjadi pengaturcara yang sangat baik dan pemaju perisian yang sangat baik adalah prasyarat untuk mendapatkan jawatan temu bual, anda juga akan ditanya masalah yang berkaitan dengan penyimpanan dan analisis data. Salah satu komponen utama dalam kehidupan seharian seorang pembangun kuantum adalah berinteraksi dengan pangkalan data. Oleh itu, tahap kematangan tertentu dengan pengendalian pangkalan data diharapkan. Jika anda tidak pernah menggunakan sistem penyimpanan data, maka cara terbaik untuk bermula adalah dengan mula memahami Sistem Pengurusan Pangkalan Data Relasional (RDBMS) dan bahasa mereka - Bahasa Kueri Berstruktur (SQL).

Cara terbaik untuk mula belajar tentang RDBMS adalah dengan memasang versi sumber terbuka (kerana anda boleh memuat turunnya secara percuma!) dan mengikuti senarai bacaan di bawah. Ia melampaui skop artikel ini untuk mengajar anda cara memasang RDBMS, tetapi anda boleh mencuba MySQL, kerana ini adalah pangkalan data yang sangat biasa dalam dana lindung nilai. SQL Server dan Oracle lebih cenderung berlaku dalam perbankan. Setelah anda memasang pangkalan data seperti MySQL, gunakan panduan berikut untuk membantu anda memahami penyimpanan dan akses data:

Jika anda tidak biasa dengan SQL maka buku OReilly Belajar SQL oleh Alan Beaulieu adalah permulaan yang baik. Ia merangkumi semua SQL pemula dan pertengahan yang anda perlu tahu untuk menyimpan, mengakses dan menyediakan laporan untuk data. Ia akan membincangkan pengoptimuman pangkalan data dengan cara yang ringkas juga. Pastikan anda membaca keseluruhan buku kerana semua bahan adalah relevan untuk tugas pangkalan data kuantiti harian. Untuk tugas pangkalan data tertentu, anda ingin melihat OReilly SQL Cookbook. Saya mendapati buku ini sangat berguna ketika saya seorang dev, kerana saya terus menariknya dari rak untuk mencari tarikh / masa tertentu atau pertanyaan pelaporan! Walaupun pengembang kuant tidak sering menjadi pentadbir pangkalan data, jika anda ingin mempelajari lebih lanjut mengenai pengoptimuman MySQL lanjutan, maka dua buku berikut, walaupun tidak perlu, sangat berguna jika anda menghadapi masalah pangkalan data: MySQL Prestasi Tinggi dan MySQL Ketersediaan Tinggi. Kewangan dan Algoritma Nombor

Oleh kerana pembangun kuantitatif bekerja di pasaran kewangan, adalah berguna untuk mempunyai pemahaman yang agak baik tentang produk yang dihasilkan oleh bank atau instrumen yang dana akan berdagang. Oleh itu, perlu untuk membiasakan diri (secara luas) dengan ekuiti, forex, pendapatan tetap, komoditi dan pasaran derivatif yang berkaitan. Khususnya anda ingin terus memikirkan bagaimana data ini diwakili, disimpan dan diakses kerana sebahagian besar pekerjaan pembangun kuantitatif adalah untuk menyediakan penyimpanan dan akses kepada data kewangan. Setelah bekerja, anda hampir pasti akan menumpukan pada satu bidang tertentu secara mendalam, jadi pastikan penyelidikan awal anda cukup luas.

Lebih relevan adalah algoritma yang digunakan dalam kewangan kuantitatif untuk menjalankan kedua-dua harga instrumen dan perdagangan algoritma. Teknik harga derivatif bank pelaburan hampir pasti akan menumpukan pada Kaedah Monte Carlo dan Kaedah Perbezaan Berhingga, yang kedua-duanya bergantung pada pengetahuan kebarangkalian, statistik, analisis berangka dan persamaan pembezaan separa.

Untuk dana lindung nilai, anda mungkin akan melaksanakan infrastruktur dagangan - sama ada frekuensi rendah atau tinggi. Ini akan melibatkan mengambil algoritma yang sudah dikodkan dalam MatLab, R atau Python (atau bahkan C ++) dan kemudian mengoptimumkannya dalam bahasa yang lebih cepat, seperti C ++, serta menghubungkan algoritma ini ke antara muka pengaturcaraan aplikasi broker utama (API) dan melaksanakan perdagangan. Kemahiran yang diperlukan di sini agak berbeza. Anda perlu dapat mengumpulkan data dari pelbagai sumber, meletakkannya dalam konteks yang betul, mengulangi dengan cepat dan kemudian menjana laporan atas permintaan sama ada dalam format tetap (PDF), melalui web atau sebagai API itu sendiri. Kemahiran ini sukar dipelajari dari buku secara langsung dan memerlukan beberapa tahun pengalaman pembangunan perisian dalam industri teknologi.

Untuk membaca lebih lanjut mengenai topik ini, sila lihat artikel Pelaksanaan C ++, artikel Pelaksanaan Python dan Senarai Bacaan Kewangan Kuantitatif.

Memohon Pekerjaan

Walaupun senarai di atas kelihatan seperti jumlah bahan yang luas untuk dipelajari, ini hanya berlaku untuk seseorang yang benar-benar baru dalam pengaturcaraan. Tidak mungkin kedudukan pemaju kuantitatif akan sesuai untuk individu seperti itu dan saya menganggap latar belakang anda sendiri akan berada dalam pengaturcaraan atau sains fizikal. Pastikan anda membaca hanya bahagian yang anda anggap relevan dengan keadaan anda sendiri, kerana jika tidak, anda boleh dengan mudah menghabiskan beberapa tahun masa lapang anda mempelajari bahan di atas!

Apabila anda percaya anda sudah bersedia untuk temuduga maka anda perlu memulakan proses menghubungi perekrut kuantitatif. terdapat firma pakar yang berurusan dengan bank pelaburan dan dana lindung nilai. jika anda memerlukan nama-nama tertentu, maka berasa bebas untuk e-mel saya dimike@quantstart.comdan saya akan dengan senang hati mengarahkan anda ke arah yang betul.

Mana-mana perekrut yang baik akan membincangkan latar belakang anda dengan tahap butiran yang munasabah kerana mereka meletakkan reputasi mereka dalam pertaruhan apabila mereka mengesyorkan anda untuk temu bual. Rekrut biasanya tidak sangat biasa dengan teknikal teknologi kuantitatif dan mereka juga tidak perlu. Walau bagaimanapun, ini bermakna mereka harus lebih bergantung pada pencocokan kata kunci untuk penapisan CV / resume mereka sendiri. Pastikan jika anda kuat dengan C ++ bahawa anda menyatakan kemahiran C ++ - kuat dan merujuk STL, Boost dan mana-mana projek C ++ yang telah anda kerjakan, sebagai contoh. Jangan bersahaja tentang kemahiran anda, tetapi juga jangan berlebihan. Jika anda menulis apa-apa pada CV / resume anda, ia adalah permainan yang adil untuk ditanyakan tentangnya dalam temu bual teknikal!

Oleh kerana pasaran pekerjaan (pada tahun 2013) tidak terbaik (terutamanya di peringkat permulaan) sekarang, anda mungkin mendapati ia akan mengambil sedikit masa untuk mendapatkan pekerjaan yang anda cari.


Lebih lanjut