मूविंग एवरेज और RSI फीचर बनाएँ
हम अपनी मशीन लर्निंग मॉडलों में ऐतिहासिक डेटा जोड़ना चाहते हैं ताकि बेहतर प्रेडिक्शन हो सकें, लेकिन बहुत सारे ऐतिहासिक टाइम स्टेप्स जोड़ना मुश्किल होता है. इसके बजाय, हम इंडिकेटर्स की मदद से पिछले पॉइंट्स की जानकारी को एक ही टाइमस्टेप में समेट सकते हैं.
मूविंग एवरेज सबसे सरल इंडिकेटर्स में से एक है — यह पिछले डेटा पॉइंट्स का औसत होता है. इसके लिए TAlib लाइब्रेरी का फंक्शन talib.SMA() उपयोग होता है.
एक और प्रचलित टेक्निकल इंडिकेटर है रिलेटिव स्ट्रेंथ इंडेक्स (RSI). इसे ऐसे परिभाषित किया जाता है:
\(RSI = 100 - \frac{100} {1 + RS}\)
\(RS = \frac{\text{average gain over } n \text{ periods}} {\text{average loss over } n \text{ periods}}\)
यहाँ n पीरियड्स को talib.RSI() में timeperiod आर्ग्युमेंट के रूप में सेट किया जाता है.
RSI के लिए 14 एक कॉमन पीरियड है, इसलिए हम अपनी गणनाओं में इसे एक सेटिंग के रूप में उपयोग करेंगे.
यह अभ्यास पाठ्यक्रम का हिस्सा है
Python में Finance के लिए Machine Learning
अभ्यास निर्देश
- फीचर नामों की एक लिस्ट बनाएँ (शुरुआत केवल
'5d_close_pct'वाली लिस्ट से करें). - एडजस्टेड क्लोज प्राइस (
lng_df['Adj_Close']) सेtalib.SMA()का उपयोग करके 14, 30, 50, और 200 के timeperiod पर मूविंग एवरेज निकालें. - मूविंग एवरेज को
Adj_Closeसे भाग देकर एडजस्टेड क्लोज के अनुसार नॉर्मलाइज़ करें. - लूप के भीतर,
Adj_Closeसेtalib.RSI()का उपयोग करके RSI की गणना करें और timeperiod के लिएnइस्तेमाल करें.
इंटरैक्टिव व्यावहारिक अभ्यास
इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।
feature_names = ____ # a list of the feature names for later
# Create moving averages and rsi for timeperiods of 14, 30, 50, and 200
for n in [____]:
# Create the moving average indicator and divide by Adj_Close
lng_df['ma' + str(n)] = talib.SMA(lng_df['Adj_Close'].values,
timeperiod=n) / lng_df[____]
# Create the RSI indicator
lng_df['rsi' + str(n)] = talib.____(lng_df['Adj_Close'].____, timeperiod=____)
# Add rsi and moving average to the feature name list
feature_names = feature_names + ['ma' + str(n), 'rsi' + str(n)]
print(feature_names)