ПочатиПочніть безкоштовно

Створення ознак ковзного середнього та RSI

Ми хочемо додати історичні дані до наших моделей машинного навчання, щоб робити кращі прогнози, але додавати багато попередніх часових кроків складно. Натомість можна стиснути інформацію з попередніх точок у один часовий крок за допомогою індикаторів.

Ковзне середнє — один із найпростіших індикаторів: це середнє попередніх значень. Відповідна функція — talib.SMA() з бібліотеки TAlib.

Ще один поширений технічний індикатор — індекс відносної сили (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, тож ми використаємо його як один із параметрів у наших обчисленнях.

Ця вправа є частиною курсу

Machine Learning для фінансів у Python

Переглянути курс

Інструкції до вправи

  • Створіть список назв ознак (почніть зі списку, що містить лише '5d_close_pct').
  • Використайте періоди 14, 30, 50 та 200, щоб обчислити ковзні середні за допомогою talib.SMA() з цін скоригованого закриття (lng_df['Adj_Close']).
  • Нормалізуйте ковзні середні, поділивши їх на значення скоригованого закриття Adj_Close.
  • Усередині циклу обчисліть RSI за допомогою talib.RSI() на основі Adj_Close, використовуючи n як значення timeperiod.

Інтерактивна практична вправа

Спробуйте виконати цю вправу, доповнивши цей зразок коду.

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)
Редагувати та запускати код