見出し画像

【MLボットの特徴量を生成】 テクニカル指標を計算するための4つの有名なPythonライブラリ

こんにちは、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


# Load datas
df = pd.read_csv('ta/tests/data/datas.csv', sep=',')

# Clean NaN values
df = dropna(df)

# Add all ta features
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ボットを強化していきましょう!

この記事が気に入ったらサポートをしてみませんか?