Vytvoření příznaků klouzavého průměru a RSI
Aby naše modely strojového učení dávaly lepší předpovědi, chceme jim poskytnout historická data. Přidávat velké množství historických kroků ale bývá nepraktické. Místo toho můžeme informace z předchozích bodů shrnout do jediného časového kroku pomocí indikátorů.
Jedním z nejjednodušších indikátorů je klouzavý průměr – jde o průměr předchozích datových bodů. K jeho výpočtu slouží funkce talib.SMA() z knihovny TAlib.
Dalším běžně používaným technickým indikátorem je index relativní síly (RSI), definovaný takto:
\(RSI = 100 - \frac{100} {1 + RS}\)
\(RS = \frac{\text{average gain over } n \text{ periods}} {\text{average loss over } n \text{ periods}}\)
Počet period n se nastavuje v talib.RSI() pomocí argumentu timeperiod.
Běžně se pro RSI používá 14 period – tuto hodnotu použijeme jako jedno z nastavení ve svých výpočtech.
Toto cvičení je součástí kurzu
Machine Learning for Finance in Python
Pokyny k cvičení
- Vytvoř seznam názvů příznaků (začni seznamem obsahujícím pouze
'5d_close_pct'). - Pro výpočet klouzavých průměrů pomocí
talib.SMA()z upravených závěrečných cen (lng_df['Adj_Close']) použij časová období 14, 30, 50 a 200. - Normalizuj klouzavé průměry vůči upravené závěrečné ceně vydělením hodnotou
Adj_Close. - Uvnitř smyčky vypočítej RSI pomocí
talib.RSI()z hodnotAdj_Closea pro časové období použijn.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
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)