こんにちは、rog_peterです。今回は、MLボットの特徴量を作成するのに役立つ4つの有名なPythonライブラリをご紹介したいと思います。 機械学習(ML)を使った自動売買ボットを作成するプロセスのうち、ML部分で最も大事な要素の1つが特徴量 です。目的変数(売買したときのリターンなど)に対して単体でよく効く特徴量があれば(例えば目的変数との相関係数が0.2以上のものなど)、それ単体のルールベースボットで十分勝ててしまうわけですが、なかなかそのような聖杯 を見つけるのは難しいと思います(私も聖杯を見つけたい…)。実際には様々な特徴量を組み合わせて、目的変数をうまく説明できるようなMLモデルを構築していくことになります。(richmanbtcさんは130個の特徴量を使用しているようです。 )
まず最初に考えられる特徴量として、OHLCVファイルから作成できるテクニカル指標 があると思います。実際、richmanbtc さんのチュートリアル でもTA-lib で計算した様々なテクニカル指標を使ってMLモデルを構築しています。
1. TA-lib 最も有名なテクニカル指標計算ライブラリで150以上のテクニカル指標 を計算できます。ただ、OSによってインストールが難航する場合があるところが欠点な気がします。
2. ta TA-libと同様こちらも超有名ライブラリで、42のテクニカル指標 を計算できます。
add_all_ta_features という関数で一気に全テクニカル指標を計算できます。
import pandas as pd
from ta import add_all_ta_features
from ta.utils import dropna
df = pd.read_csv('ta/tests/data/datas.csv' , sep=',' )
df = dropna(df)
df = add_all_ta_features(
df, open="Open" , high="High" , low="Low" , close="Close" , volume="Volume_BTC" )
3. pandas_ta 130以上の多様なテクニカル指標 を計算できるライブラリです。
例えばモメンタム系の指標だと下記の41個の指標が計算できます。
Awesome Oscillator: ao Absolute Price Oscillator: apo Bias: bias Balance of Power: bop BRAR: brar Commodity Channel Index: cci Chande Forecast Oscillator: cfo Center of Gravity: cg Chande Momentum Oscillator: cmo Coppock Curve: coppock Correlation Trend Indicator: cti A wrapper for ta.linreg(series, r=True) Directional Movement: dm Efficiency Ratio: er Elder Ray Index: eri Fisher Transform: fisher Inertia: inertia KDJ: kdj KST Oscillator: kst Moving Average Convergence Divergence: macd Momentum: mom Pretty Good Oscillator: pgo Percentage Price Oscillator: ppo Psychological Line: psl Percentage Volume Oscillator: pvo Quantitative Qualitative Estimation: qqe Rate of Change: roc Relative Strength Index: rsi Relative Strength Xtra: rsx Relative Vigor Index: rvgi Schaff Trend Cycle: stc Slope: slope SMI Ergodic smi Squeeze: squeeze Default is John Carter's. Enable Lazybear's with lazybear=True Squeeze Pro: squeeze_pro Stochastic Oscillator: stoch Stochastic RSI: stochrsi TD Sequential: td_seq Excluded from df.ta.strategy(). Trix: trix True strength index: tsi Ultimate Oscillator: uo Williams %R: willr
4. finta 80以上のテクニカル指標 の計算ができるライブラリです。
fintaを使って計算できるテクニカル指標は下記の通りです。
* Simple Moving Average 'SMA' * Simple Moving Median 'SMM' * Smoothed Simple Moving Average 'SSMA' * Exponential Moving Average 'EMA' * Double Exponential Moving Average 'DEMA' * Triple Exponential Moving Average 'TEMA' * Triangular Moving Average 'TRIMA' * Triple Exponential Moving Average Oscillator 'TRIX' * Volume Adjusted Moving Average 'VAMA' * Kaufman Efficiency Indicator 'ER' * Kaufman's Adaptive Moving Average 'KAMA' * Zero Lag Exponential Moving Average 'ZLEMA' * Weighted Moving Average 'WMA' * Hull Moving Average 'HMA' * Elastic Volume Moving Average 'EVWMA' * Volume Weighted Average Price 'VWAP' * Smoothed Moving Average 'SMMA' * Fractal Adaptive Moving Average 'FRAMA' * Moving Average Convergence Divergence 'MACD' * Percentage Price Oscillator 'PPO' * Volume-Weighted MACD 'VW_MACD' * Elastic-Volume weighted MACD 'EV_MACD' * Market Momentum 'MOM' * Rate-of-Change 'ROC' * Relative Strenght Index 'RSI' * Inverse Fisher Transform RSI 'IFT_RSI' * True Range 'TR' * Average True Range 'ATR' * Stop-and-Reverse 'SAR' * Bollinger Bands 'BBANDS' * Bollinger Bands Width 'BBWIDTH' * Momentum Breakout Bands 'MOBO' * Percent B 'PERCENT_B' * Keltner Channels 'KC' * Donchian Channel 'DO' * Directional Movement Indicator 'DMI' * Average Directional Index 'ADX' * Pivot Points 'PIVOT' * Fibonacci Pivot Points 'PIVOT_FIB' * Stochastic Oscillator %K 'STOCH' * Stochastic oscillator %D 'STOCHD' * Stochastic RSI 'STOCHRSI' * Williams %R 'WILLIAMS' * Ultimate Oscillator 'UO' * Awesome Oscillator 'AO' * Mass Index 'MI' * Vortex Indicator 'VORTEX' * Know Sure Thing 'KST' * True Strength Index 'TSI' * Typical Price 'TP' * Accumulation-Distribution Line 'ADL' * Chaikin Oscillator 'CHAIKIN' * Money Flow Index 'MFI' * On Balance Volume 'OBV' * Weighter OBV 'WOBV' * Volume Zone Oscillator 'VZO' * Price Zone Oscillator 'PZO' * Elder's Force Index 'EFI' * Cummulative Force Index 'CFI' * Bull power and Bear Power 'EBBP' * Ease of Movement 'EMV' * Commodity Channel Index 'CCI' * Coppock Curve 'COPP' * Buy and Sell Pressure 'BASP' * Normalized BASP 'BASPN' * Chande Momentum Oscillator 'CMO' * Chandelier Exit 'CHANDELIER' * Qstick 'QSTICK' * Twiggs Money Index 'TMF' * Wave Trend Oscillator 'WTO' * Fisher Transform 'FISH' * Ichimoku Cloud 'ICHIMOKU' * Adaptive Price Zone 'APZ' * Squeeze Momentum Indicator 'SQZMI' * Volume Price Trend 'VPT' * Finite Volume Element 'FVE' * Volume Flow Indicator 'VFI' * Moving Standard deviation 'MSD' * Schaff Trend Cycle 'STC' * Mark Whistler's WAVE PM 'WAVEPM'
以上でテクニカル指標を計算できるPythonライブラリの紹介は終わりです。 様々なテクニカル指標を使って、MLボットを強化していきましょう!