Hareketli ortalama ve RSI özellikleri oluştur
Daha iyi tahminler yapmak için Machine Learning modellerimize geçmiş verileri eklemek istiyoruz, ancak çok sayıda geçmiş zaman adımı eklemek zorlu olabilir. Bunun yerine, önceki noktalardaki bilgiyi göstergelerle tek bir zaman adımında yoğunlaştırabiliriz.
Hareketli ortalama en basit göstergelerden biridir — önceki veri noktalarının ortalamasıdır. Bu, TAlib kütüphanesindeki talib.SMA() fonksiyonudur.
Bir diğer yaygın teknik gösterge göreli güç endeksidir (RSI). Şöyle tanımlanır:
\(RSI = 100 - \frac{100} {1 + RS}\)
\(RS = \frac{\text{ n dönemindeki ortalama kazanç}} {\text{ n dönemindeki ortalama kayıp}}\)
Buradaki n dönemi, talib.RSI() içinde timeperiod argümanıyla ayarlanır.
RSI için yaygın bir dönem 14'tür; bu yüzden hesaplamalarımızda bir ayar olarak bunu kullanacağız.
Bu egzersiz, kursun bir parçasıdır
Python ile Finans için Machine Learning
Egzersiz talimatları
- Bir özellik adları listesi oluştur (yalnızca
'5d_close_pct'içeren bir listeyle başla). - Düzeltilmiş kapanış fiyatlarından (
lng_df['Adj_Close'])talib.SMA()ile 14, 30, 50 ve 200 dönemleri kullanarak hareketli ortalamaları hesapla. - Hareketli ortalamaları
Adj_Close'a bölerek düzeltilmiş kapanışla normalize et. - Döngü içinde,
Adj_Close'dan ve timeperiod olaraknkullanaraktalib.RSI()ile RSI hesapla.
Uygulamalı etkileşimli egzersiz
Bu egzersizi bu örnek kodu tamamlayarak deneyin.
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)