目次
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以上担当
理化学研究所にて研究員を拝命中 応用数理学会所属