Zacznij terazZacznij za darmo

Tworzenie cech opartych na średniej kroczącej i RSI

Aby poprawić jakość prognoz modeli uczenia maszynowego, warto wzbogacić je o dane historyczne. Dodawanie wielu kolejnych kroków czasowych jest jednak kłopotliwe. Zamiast tego możemy skondensować informacje z poprzednich punktów do jednego kroku czasowego za pomocą wskaźników.

Średnia krocząca to jeden z najprostszych wskaźników – jest to średnia z poprzednich punktów danych. Służy do tego funkcja talib.SMA() z biblioteki TAlib.

Innym popularnym wskaźnikiem technicznym jest indeks siły względnej (RSI). Definiuje się go następująco:

\(RSI = 100 - \frac{100} {1 + RS}\)

\(RS = \frac{\text{average gain over } n \text{ periods}} {\text{average loss over } n \text{ periods}}\)

Liczbę okresów n ustawia się w funkcji talib.RSI() za pomocą argumentu timeperiod.

Najczęściej stosowanym okresem dla RSI jest 14 – właśnie tej wartości użyjemy w naszych obliczeniach.

To ćwiczenie jest częścią kursu

Uczenie maszynowe w finansach z Pythonem

Zobacz kurs

Instrukcje do ćwiczenia

  • Utwórz listę nazw cech (zacznij od listy zawierającej wyłącznie '5d_close_pct').
  • Użyj okresów 14, 30, 50 i 200, aby obliczyć średnie kroczące za pomocą talib.SMA() na podstawie skorygowanych cen zamknięcia (lng_df['Adj_Close']).
  • Znormalizuj średnie kroczące względem skorygowanej ceny zamknięcia, dzieląc przez Adj_Close.
  • Wewnątrz pętli oblicz RSI za pomocą talib.RSI() na podstawie Adj_Close, używając n jako wartości okresu.

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

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)
Edytuj i uruchom kod