
फाइनेंस के लिए Python: लाइब्रेरी, डेटा, और आपकी पहली स्क्रिप्ट
क्वांटिटेटिव फाइनेंस की सबसे लोकप्रिय भाषा — यहां से शुरुआत करें
Python एक वर्कफ़्लो भाषा है, सिर्फ़ सिंटैक्स नहीं
क्वांटिटेटिव फाइनेंस टीमें किसी भाषा को सिर्फ़ उसकी दिखावटी सुंदरता के लिए शायद ही चुनती हैं। वे वह चुनती हैं जो किसी रिसर्चर को गड़बड़ CSV से एक टेस्टेड सिग्नल तक ले जाए, बिना हर हफ़्ते सारी दुनिया फिर से लिखे। Python जीतता है क्योंकि यह पढ़ने में आसान है, स्क्रिप्ट के अनुकूल है, और एक बड़े संख्यात्मक इकोसिस्टम — इनजेशन, क्लीनिंग, फीचर वर्क, विज़ुअलाइज़ेशन, और (सावधानी से) प्रोडक्शन सर्विसेज़ — के केंद्र में बैठा है।
तीन बाधाएँ लगभग हर डेस्क पर दिखती हैं:
- पहले प्लॉट तक का समय — क्या आप कुछ मिनटों में इतिहास का एक हिस्सा लोड कर आउटलायर्स देख सकते हैं?
- इंटरऑप — क्या आप एक्सचेंज API, डेटाबेस, और ML लाइब्रेरी को एक ही प्रोसेस में कॉल कर सकते हैं?
- रीप्रोड्यूसिबिलिटी — क्या कोई और आपके एनवायरनमेंट को फिर से बना सकता है और वही नंबर पा सकता है?
Python हर CPU साइकल के हिसाब से सबसे तेज़ भाषा नहीं है। यह अक्सर सवाल से सबूत तक पहुँचने का सबसे तेज़ रास्ता है — जो कि असली बॉटलनेक है।
एनवायरनमेंट जिन्हें आप फिर से बना सकते हैं
हर गंभीर प्रोजेक्ट को एक आइसोलेटेड एनवायरनमेंट से शुरू करें ताकि pip install के प्रयोग असंबंधित काम को खराब न करें। क्लासिक रास्ता है python -m venv .venv, इसे एक्टिवेट करना, फिर requirements.txt में या Poetry या pip-tools के किसी लॉकफ़ाइल में डिपेंडेंसी को पिन करना।
फाइनेंस के लिए, जहाँ सिमुलेशन मायने रखते हैं वहाँ रैंडम सीड भी पिन करें, और नतीजों के साथ डेटा स्नैपशॉट (इनपुट फाइल का एक हैश भी) रेकॉर्ड करें। जब कोई रिस्क कमिटी पूछे कि क्या बदला, तो रीप्रोड्यूसिबिलिटी किसी चतुर एक-बारगी चार्ट से बेहतर साबित होती है।
python -m venv .venv
source .venv/bin/activate
pip install pandas numpy matplotlibवे लाइब्रेरी जिन्हें रटकर जानना फ़ायदेमंद है
NumPy आपको सटीक क्रम में रखे गए ऐरे और तेज़ एलिमेंटवाइज़ गणित देता है। pandas उसके ऊपर लेबल की गई टेबल, टाइम इंडेक्स, मर्ज, और ग्रुपबाय की परतें जोड़ता है। Matplotlib (या Plotly) सीरीज़ को उन चार्ट्स में बदलता है जिन्हें आप किसी मीटिंग में डिफेंड कर सकें।
क्रिप्टो कनेक्टिविटी के लिए, ccxt कई एक्सचेंज API को एक ही सतह के पीछे सामान्य कर देता है — फिर भी हर वेन्यू की प्रिसिज़न और रेट लिमिट पढ़ें। पारंपरिक इक्विटीज़ के लिए, वेंडर SDK या Yahoo-स्टाइल लोडर आम तौर पर ट्रेनिंग डेटा के लिए इस्तेमाल होते हैं, लेटेंसी-सेंसिटिव लाइव ट्रेडिंग के लिए नहीं।
रिटर्न और वोलैटिलिटी का एक न्यूनतम स्केच
ज़्यादातर वर्कफ़्लो इसी में सिमट जाते हैं: कीमतें लोड करना → रिटर्न कैलकुलेट करना → रोलिंग स्टैटिस्टिक्स निकालना। यहाँ डेली क्लोज़ का इस्तेमाल करते हुए एक छोटा पैटर्न है:
import pandas as pd
import numpy as np
df = pd.read_csv("prices.csv", parse_dates=["date"]).set_index("date")
df["ret"] = df["close"].pct_change()
df["vol_20d"] = df["ret"].rolling(20).std() * np.sqrt(252)
वार्षिक वोलैटिलिटी डेली स्टैंडर्ड डिविएशन को √252 से गुणा करती है, पर सिर्फ़ तभी जब आप कैलेंडर दिनों को एक जैसा मानें — इंट्राडे बार को अलग स्केलिंग चाहिए होती है। जो भी नंबर आप शिप करें, उसके साथ अपने बार साइज़ का दस्तावेज़ीकरण भी रखें।
बैकटेस्ट से API कॉल तक
रिसर्च कोड और प्रोडक्शन कोड अलग-अलग दिशा में जाते हैं: पहला धीमे लूप बर्दाश्त कर लेता है; दूसरे को टाइमआउट, बैकऑफ़ के साथ रिट्राई, आइडेम्पोटेंट ऑर्डर ID, और स्ट्रक्चर्ड लॉग चाहिए। अगर आप Hyperliquid पर GaiaEx जैसे वेन्यू के खिलाफ़ ऑटोमेट करते हैं, तो वॉलेट की, नॉन्स डिसिप्लिन, और ऑन-चेन फाइनैलिटी को सिस्टम का हिस्सा मानें — किसी नोटबुक पर बाद में जोड़े गए विचार की तरह नहीं।
Python एक बेहतरीन ऑर्केस्ट्रेशन परत बना रहता है: ट्रेडिंग API को कॉल करें, फिल्स को एनालिटिक्स के लिए pandas में डालें, और जब रिस्क लिमिट टूटे तो Slack पर अलर्ट करें। क्रिटिकल पाथ को इतना सरल रखें कि जब मार्केट गैप करें तो भी आप उसे समझ सकें।