मुझे हाल ही में इंजीनियरिंग, अकादमिक और आईटी से कैरियर बदलने के इच्छुक व्यक्तियों से कई ईमेल मिले हैं। बौद्धिक चुनौती और उच्च पारिश्रमिक के कारण मात्रात्मक वित्त हाल ही में एक विशेष रूप से आकर्षक क्षेत्र बन गया है। इन ईमेल में लगातार एक सवाल उठता है कि मुझे एक साक्षात्कारकर्ता को मुझे नौकरी देने के लिए राजी करने के लिए क्या अध्ययन करने की आवश्यकता है? यह तीन भागों की श्रृंखला में पहला है जिसमें चर्चा की जाएगी कि मात्रात्मक वित्त उद्योग में नौकरी पाने के लिए एक आत्म-अध्ययन योजना कैसे बनाई जाए। यह पोस्ट मात्रात्मक डेवलपर बनने के लिए आत्म-अध्ययन के बारे में चर्चा करेगी। अन्य दो मात्रात्मक विश्लेषकों और मात्रात्मक व्यापारियों पर ध्यान केंद्रित करेंगे।
मात्रात्मक वित्त में किसी भी कैरियर के लिए व्यापक विशेषज्ञता के बजाय सामान्यीकरण की एक डिग्री की आवश्यकता होती है। मात्रात्मक डेवलपर्स अलग नहीं हैं। उन्हें निवेश बैंकों को नए संरचित निवेश उत्पादों का मूल्य और बिक्री करने या फंडों को ट्रेडिंग बुनियादी ढांचे और पोर्टफोलियो प्रबंधन प्रणालियों को विकसित करने में मदद करने के लिए व्यापारियों, वित्तीय इंजीनियरों और आईटी समर्थन की एक टीम में फिट होना चाहिए।
वैज्ञानिक कम्प्यूटिंग
मात्रात्मक विकास में सबसे आम मार्ग वैज्ञानिक कंप्यूटिंग में एक अकादमिक पृष्ठभूमि के माध्यम से है। ऐसा इसलिए है क्योंकि
हालाँकि, यदि आपकी पृष्ठभूमि वैज्ञानिक कंप्यूटिंग में नहीं है, तो अभी भी प्रोग्रामिंग में पृष्ठभूमि का लाभ उठाते हुए मात्रात्मक डेवलपर बनने के बहुत सारे अवसर हैं। कम से कम हालांकि आपको एल्गोरिदम को लागू करने से परिचित होने की आवश्यकता होगी, जिसका अभ्यास मैं नीचे चर्चा करूंगा।
प्रोग्रामिंग कौशल
सबसे पहले और सबसे महत्वपूर्ण रूप से एक मात्रात्मक डेवलपर एक सॉफ्टवेयर डेवलपर है। इस प्रकार भूमिका लगभग पूरी तरह से 100% प्रोग्रामिंग आधारित होगी। आप खुद को ट्रेडिंग प्रोटोटाइप का अनुकूलन या खरोंच से ट्रेडिंग बुनियादी ढांचे का विकास करते हुए पाएंगे। यदि आप बैंक भूमिकाओं को लक्षित कर रहे हैं, तो आपको संभवतः माइक्रोसॉफ्ट / विंडोज वातावरण में सी ++, जावा या सी # का उपयोग करने की आवश्यकता होगी। यदि आप हेज फंडों को लक्षित कर रहे हैं, तो आप संभवतः मैटलैब या आर को सी ++ और / या पायथन में अनुवाद कर रहे होंगे। फंड जावा और सी # का कम उपयोग करते हैं, क्योंकि वे अक्सर एक यूनीक्स वातावरण में होते हैं जहां सी ++ और पायथन अधिक समझ में आते हैं। यदि आपके पास इन प्रोग्रामिंग वातावरणों में से किसी एक में पृष्ठभूमि है, तो अपनी ताकतों को लक्षित करना और आपके द्वारा जाने जाने वाले सॉफ़्टवेयर से चिपके रहना समझ में आता है। इसलिए यदि आप जावा जानते हैं, उदाहरण के लिए, निवेश बैंकिंग भूमिकाओं को लक्षित करना बुद्धिमानी होगी। मैंने अधिक विस्तार से प्रोग्रामिंग भाषाओं के लिए क्वांटम डे
यह मानकर कि आप एक सक्षम प्रोग्रामर हैं और वित्तीय उद्योग में सबसे व्यापक रूप से उपयोग किए जाने वाले सॉफ्टवेयर पर स्विच करने के लिए खुश हैं, तो मैं सी ++ और पायथन को बहुत अच्छी तरह से सीखने का सुझाव दूंगा, क्योंकि यह आपको उद्योग के विभिन्न क्षेत्रों में सबसे अधिक क्रॉस-सेक्शनल क्षमता देता है। यहाँ एक अच्छा सी ++ प्रोग्रामर बनने के लिए मेरी सुझाई गई अध्ययन योजना हैः
एंड्रयू कोनिग द्वारा एक्सेलेरेटेड सी ++ की संपूर्णता को पढ़ें। यह पुस्तक आपको सी ++ सिंटैक्स पर खरोंच करने के लिए ले जाएगी और विशेष रूप से पॉइंटर और मेमोरी प्रबंधन के बारे में विस्तार से जाएगी। यह एक ऐसा क्षेत्र है जिसके साथ कई प्रोग्रामर (जावा और सी # की पृष्ठभूमि वाले लोगों सहित) उतने परिचित नहीं होंगे। सिंटैक्स का अभ्यास करने के लिए, उदाहरणों को लागू करते समय या तो माइक्रोसॉफ्ट विजुअल स्टूडियो या लिनक्स / यूनिक्स पर जीसीसी कंपाइलर के साथ पढ़ना सबसे अच्छा है, न कि इसे पढ़ना! स्कॉट मेयर्स द्वारा प्रभावशाली सी ++ की संपूर्णता को पढ़ें (कई बार) । मैंने इस सलाह को साइट पर लगातार दोहराया है, लेकिन यह फिर से कहना है। यह पुस्तक आपको एक शुरुआती सी ++ प्रोग्रामर से एक मध्यवर्ती प्रोग्रामर तक ले जाएगी जो साक्षात्कार के लिए तैयार है। यह पुस्तक वास्तव में टर्मिनल के सामने अभ्यास करना कठिन है, क्योंकि मेयर्स कुछ जटिल उदाहरण स्थापित करता है। इस पुस्तक को चलाने का एक तरीका यह निर्धारित करना होगा कि आप अपनी परियोजनाओं में पैटर्न कहां लागू कर सकते हैं। यदि आप सी ++ नौकरियों के लिए सीधे आवेदन कर रहे हैं, तो आप शायद इन दो कार्यों से परे जाना चाहेंगे। स्कॉट मेयर्स ने अधिक प्रभावी सी ++ और प्रभावी एसटीएल भी लिखा है। फिर आपको एक सच्चे विशेषज्ञ बनने के लिए बूस्ट लाइब्रेरी, मल्टीथ्रेडेड प्रोग्रामिंग और लिनक्स ऑपरेटिंग सिस्टम की मूल बातें पर विचार करने की आवश्यकता होगी। इसी तरह पायथन के लिएः
यदि आप पहले से ही एक कुशल सी ++ / जावा / सी # प्रोग्रामर हैं, तो मार्क लूट्ज़ द्वारा पायथन सीखने के कुछ अनुभागों को पढ़ें। विशेष रूप से, अध्याय 4-9, जो कि प्रकारों में निर्मित पायथन
सॉफ्टवेयर इंजीनियरिंग
क्वांट डेवलपर की स्थिति के लिए एक अच्छे साक्षात्कार उम्मीदवार होने के लिए आपको एक अच्छा प्रोग्रामर और एक अच्छा सॉफ्टवेयर डेवलपर दोनों बनने की आवश्यकता होती है। कई पहले पाठ्यपुस्तकों और अभ्यास से सीख सकते हैं। हालांकि बाद में केवल बड़े सॉफ्टवेयर परियोजनाओं पर काम करने से ही सीखा जा सकता है, आमतौर पर अन्य डेवलपर्स के साथ। हालांकि, इसका मतलब यह नहीं है कि इसे घर के अध्ययन कार्यक्रम में शामिल नहीं किया जा सकता है! उदाहरण के लिए, अब इंटरनेट के माध्यम से ओपन सोर्स सॉफ्टवेयर परियोजनाओं में योगदान करना आसान है। सबसे बड़ी मात्रात्मक वित्त परियोजनाओं में से एक है
क्वांटलिब
इस परियोजना के स्रोत कोड के माध्यम से पढ़ने से आपको एक अच्छा विचार मिलेगा कि बड़े पैमाने पर सी ++ सॉफ्टवेयर परियोजनाओं को कैसे लिखा जाता है।
एक अच्छा सॉफ्टवेयर डेवलपर बनने के लिए यह समझना आवश्यक है कि बड़े पैमाने पर सॉफ्टवेयर परियोजनाओं को कैसे तैयार किया जाए। आधुनिक सॉफ्टवेयर विकास के लिए इसके लिए संस्करण नियंत्रण, निरंतर एकीकरण और अन्य चुस्त प्रथाओं का उपयोग करना आवश्यक है। यहां एक अध्ययन योजना है जो आपको इन अवधारणाओं से निपटने में मदद करेगीः
स्टीव मैककोनेल के कोड पूर्ण और रॉबर्ट मार्टिन के क्लीन कोड दोनों को पढ़ें। ये दोनों किताबें आपको गंभीरता से सोचने के लिए प्रेरित करेंगी कि आप पहले सिद्धांतों से, सॉफ्टवेयर डिजाइन करने के बारे में कैसे जाते हैं। उदाहरण के लिए - आप कीबोर्ड को छूने से पहले अपने सॉफ्टवेयर को डिजाइन करने में कितना समय बिताते हैं? ये दोनों किताबें आपको बर्बाद कोड विकास के घंटों से बचाएंगी। मैं सुझाव दूंगा कि इन पुस्तकों के भीतर के कई सुझावों को जल्द से जल्द अपनी परियोजनाओं में लागू करें ताकि किसी भी बुरी आदतों को हटाया जा सके। वे साक्षात्कार में चर्चा करने के लिए भी महान हैं, क्योंकि आपको हमेशा कुछ कोड लिखने के लिए कहा जाएगा।
एक अच्छा सॉफ्टवेयर शिल्प कौशल पर चर्चा डिजाइन पैटर्न का उल्लेख किए बिना पूरी नहीं होगी, जिसे
हालांकि एक उत्कृष्ट प्रोग्रामर और एक उत्कृष्ट सॉफ्टवेयर डेवलपर बनने के लिए एक साक्षात्कार स्थिति प्राप्त करने के लिए पूर्व शर्तें हैं, आपको डेटा भंडारण और विश्लेषण से संबंधित समस्याओं के बारे में भी पूछा जाएगा। क्वांटम डेवलपर्स के दिन-प्रतिदिन के जीवन में एक प्रमुख घटक डेटाबेस के साथ बातचीत कर रहा है। इस प्रकार डेटाबेस हैंडलिंग के साथ परिपक्वता के एक निश्चित स्तर की उम्मीद की जानी चाहिए। यदि आपने कभी डेटा भंडारण प्रणाली का उपयोग नहीं किया है, तो आरडीबीएमएस (RDBMS) और उनकी भाषा - स्ट्रक्चर्ड क्वेरी लैंग्वेज (SQL) को समझना शुरू करना सबसे अच्छा तरीका है। आम RDBMS
आरडीबीएमएस के बारे में सीखने का सबसे अच्छा तरीका एक ओपन सोर्स संस्करण स्थापित करना है (क्योंकि आप उन्हें मुफ्त में डाउनलोड कर सकते हैं!) और नीचे दी गई पढ़ने की सूची का पालन करें। यह इस लेख के दायरे से परे है कि आपको आरडीबीएमएस कैसे स्थापित करना है, लेकिन आप MySQL की कोशिश कर सकते हैं, क्योंकि यह हेज फंड के भीतर एक बहुत ही आम डेटाबेस है। SQL सर्वर और ओरेकल बैंकिंग के भीतर प्रचलित होने की अधिक संभावना है। एक बार जब आप MySQL जैसे डेटाबेस स्थापित कर लेते हैं, तो डेटा के भंडारण और पहुंच को समझने में आपकी मदद करने के लिए निम्नलिखित गाइडों का उपयोग करेंः
यदि आप SQL से परिचित नहीं हैं तो Alan Beaulieu द्वारा O
चूंकि एक मात्रात्मक डेवलपर वित्तीय बाजारों में काम करता है, इसलिए बैंकों द्वारा उत्पादित उत्पादों या उन उपकरणों की अपेक्षाकृत अच्छी समझ होना उपयोगी है जो फंड व्यापार करेंगे। इस प्रकार, आपको खुद को इक्विटी, विदेशी मुद्रा, फिक्स्ड आय, कमोडिटी और संबंधित डेरिवेटिव बाजारों के साथ (व्यापक रूप से) परिचित करना आवश्यक होगा। विशेष रूप से आप इस बारे में लगातार सोचना चाहते हैं कि इस डेटा का प्रतिनिधित्व कैसे किया जाता है, संग्रहीत किया जाता है और एक्सेस किया जाता है क्योंकि एक मात्रात्मक डेवलपर का एक बड़ा हिस्सा वित्तीय डेटा के भंडारण और पहुंच प्रदान करना है। एक बार नौकरी में आप लगभग निश्चित रूप से गहराई से एक विशेष क्षेत्र पर ध्यान केंद्रित करेंगे, इसलिए सुनिश्चित करें कि आपका प्रारंभिक शोध काफी व्यापक है।
अधिक प्रासंगिक हैं मात्रात्मक वित्त में उपयोग किए जाने वाले एल्गोरिदम दोनों साधन मूल्य निर्धारण और एल्गोरिदमिक ट्रेडिंग करने के लिए। निवेश बैंक व्युत्पन्न मूल्य निर्धारण तकनीक लगभग निश्चित रूप से मोंटे कार्लो विधियों और परिमित अंतर विधियों पर केंद्रित होगी, जो दोनों संभावना, सांख्यिकी, संख्यात्मक विश्लेषण और आंशिक अंतर समीकरणों के ज्ञान पर निर्भर करते हैं। ये सभी विषय हैं जो एक अच्छा छात्र स्नातक स्कूल में परिचित होगा, लेकिन करियर परिवर्तन पर विचार करने वालों के लिए, यदि आप एक बैंक में मूल्य निर्धारण विकल्प क्वांट डेवलपर बनना चाहते हैं तो आपको इन तरीकों की अच्छी समझ प्राप्त करने की आवश्यकता होगी।
हेज फंडों के लिए, आप संभवतः कम या उच्च आवृत्ति वाले ट्रेडिंग बुनियादी ढांचे को लागू करेंगे। इसमें एक एल्गोरिथ्म लेना शामिल होगा जो पहले से ही मैटलैब, आर या पायथन (या यहां तक कि सी ++) में कोडित है और फिर इसे एक तेज़ भाषा में अनुकूलित करता है, जैसे कि सी ++, साथ ही इस एल्गोरिथ्म को एक प्राइम ब्रोकरेज एप्लिकेशन प्रोग्रामिंग इंटरफ़ेस (एपीआई) से जोड़ना और ट्रेडों को निष्पादित करना। यहां आवश्यक कौशल काफी असमान हैं। आपको विभिन्न स्रोतों से डेटा को एक साथ खींचने में सक्षम होना चाहिए, इसे सही संदर्भ में डालें, तेजी से पुनरावृत्ति करें और फिर तय प्रारूप (पीडीएफ), वेब पर या एपीआई के रूप में मांग पर रिपोर्ट उत्पन्न करें। ये कौशल पुस्तकों से सीधे सीखना मुश्किल हैं और प्रौद्योगिकी उद्योग में कुछ वर्षों के सॉफ्टवेयर विकास अनुभव की आवश्यकता होती है।
इन विषयों के बारे में आगे पढ़ने के लिए, कृपया मेरे C ++ कार्यान्वयन लेखों, मेरे पायथन कार्यान्वयन लेखों और मात्रात्मक वित्त पढ़ने की सूची पर एक नज़र डालें।
नौकरी के लिए आवेदन करना
यद्यपि उपरोक्त सूची अध्ययन करने के लिए सामग्री की एक विस्तृत मात्रा की तरह दिखती है, यह केवल किसी ऐसे व्यक्ति के लिए मामला होगा जो प्रोग्रामिंग के लिए पूरी तरह से नया है। यह संभावना नहीं है कि एक मात्रात्मक डेवलपर की स्थिति ऐसे व्यक्ति के लिए उपयुक्त होगी और मैं मानता हूं कि आपकी अपनी पृष्ठभूमि प्रोग्रामिंग या भौतिक विज्ञान में होगी। सुनिश्चित करें कि आप केवल उन खंडों को पढ़ें जिन्हें आप अपनी स्थिति के लिए प्रासंगिक मानते हैं, क्योंकि अन्यथा आप आसानी से अपने खाली समय के कुछ वर्षों को उपरोक्त सामग्री सीखने में खर्च कर सकते हैं!
एक बार जब आपको लगता है कि आप साक्षात्कार के लिए तैयार हैं तो आपको मात्रात्मक भर्तीकर्ताओं से संपर्क करने की प्रक्रिया शुरू करने की आवश्यकता होगी। विशेषज्ञ फर्में हैं जो निवेश बैंकों और हेज फंडों से निपटती हैं। यदि आपको विशिष्ट नामों की आवश्यकता है, तो मुझे ईमेल करने के लिए स्वतंत्र महसूस करेंmike@quantstart.comऔर मैं खुशी से आपको सही दिशा में इंगित करूंगा।
कोई भी अच्छा भर्तीकर्ता आपकी पृष्ठभूमि के बारे में उचित स्तर पर विस्तार से चर्चा करेगा क्योंकि जब वे आपको साक्षात्कार के लिए सलाह देते हैं तो वे अपनी प्रतिष्ठा को दांव पर लगा रहे हैं। भर्तीकर्ता आमतौर पर मात्रात्मक प्रौद्योगिकी की तकनीकी बातों से बहुत परिचित नहीं होते हैं और न ही उन्हें होने की आवश्यकता होती है। हालांकि, इसका मतलब है कि उन्हें अपने स्वयं के सीवी / रिज्यूमे फ़िल्टरिंग के लिए
चूंकि नौकरी बाजार (२०१३ में) अभी सबसे अच्छा नहीं है (विशेषकर प्रवेश स्तर पर), इसलिए आपको पता चल सकता है कि आप जिस नौकरी की तलाश कर रहे हैं उसे पाने में कुछ समय लग सकता है। चाल यह है कि आप हर साक्षात्कार में भाग लेने के लिए प्रयास करते रहें, आप इस बारे में अधिक ज्ञान प्राप्त करेंगे कि भर्ती करने वाले और साक्षात्कारकर्ता क्या देख रहे हैं और इसलिए आप अपने अध्ययन को इस दिशा में अनुकूलित कर पाएंगे।