TuneTAの解説(時系列:目的の変数の最適化)


 

目次

1. TuneTAの概要
1.1 TuneTAとは
1.2機能
2. 実験
2.1 環境構築
2.2 データ読み込む
2.3 TuneTAの学習
2.4 プルーニング

1. TuneTAの概要
1.1 TuneTAとは

TuneTAとは、ユーザー定義の目的変数に対して、距離相関測定を使用して、特徴量を剪定します。剪定は、ツリーまたは機能のセクションを削除することによる、機械学習および検索アルゴリズムのデータ圧縮技術です。具体的には、相互の相関が低い、ターゲットに対して相関が高い特徴量を選択することです。

1.2機能

  • 金融価格データを自動的に作成します。
  • マルチステップのクラスタリングプロセスで適切な機能が選択されます。
  • 相互に最大の相関関係を持つ特徴量を整理します。
  • 単一または複数の株式のチューニングインジケーターをサポートします。
  • 複数の時間範囲(つまり、短、中、長)
  • 既存の機能のプルーニングをサポートします。
  • 複数のデータセット(トレーニング、検証、テスト)で同一のインジケーターを生成します
  • 並列処理を対応します。
  • ターゲットと機能の相関レポート
  • 早期打ち切り(Early stopping)
  • 次のパッケージから作成されたテクニカルインジケーターをサポートします。
    • Pandas TA
    • TA-Lib
    • FinTA

2. 実験

2.1 環境構築

実験環境: Google Colab(GPU)

talibライブラリのインストール

try:

import talib

except:

print(‘instalando talib’)

!wget https://launchpad.net/~mario-mariomedina/+archive/ubuntu/talib/+files/libta-lib0_0.4.0-oneiric1_amd64.deb -qO libta.deb

!wget https://launchpad.net/~mario-mariomedina/+archive/ubuntu/talib/+files/ta-lib0-dev_0.4.0-oneiric1_amd64.deb -qO ta.deb

!dpkg -i libta.deb ta.deb

!pip install -q ta-lib

import talib

tunetaライブラリのインストール

!pip install -q tuneta

ライブラリのインポート

from tuneta.tune_ta import TuneTA

import pandas as pd

from pandas_ta import percent_return

from sklearn.model_selection import train_test_split

import yfinance as yf

2.2 データ読み込む

Yahoo financeからSPYと言いう株のデータを取り出します。

X = yf.download(“SPY”, period=”10y”, interval=”1d”, auto_adjust=True)

y = percent_return(X.Close, offset=-1)

データの確認

X

学習とテストのデータを分けます。

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=.3, shuffle=False)

2.3 TuneTAの学習

TuneTAの設定

tt = TuneTA(n_jobs=6, verbose=True)

TuneTAを学習します。

tt.fit(X_train, y_train,

indicators=[‘all’],

ranges=[(4, 30)],

trials=100,

early_stop=10,

)

インジケータこの実行時間(妙)を確認します。

tt.fit_times()

Indicator                  Times

—  ———————–  ——-

89  pta.decreasing            115.1

76  pta.increasing            112.71

92  pta.amat                   78.06

104  pta.qqe                    72.11

57  pta.ttm_trend              40.85

152  pta.bop                     0.07

101  tta.TRANGE                  0.06

211  pta.ad                      0.04

 

インジケータと目的変数の相関係数と各インジケータの相関係数を表計算されました。

(300以上のインジケータ)

tt.report(target_corr=True, features_corr=True)

Indicator Correlation to Target:

Correlation

————————

fta_QSTICK_period_20                0.349994

tta_CMO_timeperiod_18             0.253297

pta_cmo_length_18                     0.253297

tta_RSI_timeperiod_18               0.253297

tta_CDLHIKKAKEMOD                           0.020539

tta_CDLSTALLEDPATTERN                     0.02001

tta_CDLIDENTICAL3CROWS                    0.01971

 

Indicator Correlation to Each Other:

———————————            fta_QSTICK_period_20                tta_RSI_timeperiod_18 …

fta_QSTICK_period_20                0                                  0.552245

tta_RSI_timeperiod_18                0.552245                                   0

pta_rsi_length_18                        0.552245                       1

2.4 プルーニング

目的変数に対して、最大の相関する特徴量を選択します。

tt.prune(max_inter_correlation=.7)

X_trainにインジケーターを追加します。

features = tt.transform(X_train)

X_train = pd.concat([X_train, features], axis=1)

特徴量を確認します。

features

 

担当者:HM

香川県高松市出身 データ分析にて、博士(理学)を取得後、自動車メーカー会社にてデータ分析に関わる。その後コンサルティングファームでデータ分析プロジェクトを歴任後独立 気が付けばデータ分析プロジェクトだけで50以上担当

理化学研究所にて研究員を拝命中 応用数理学会所属