前回、QuantXの基本構成を記載しました。今回から各ブロックごとに記載方法・内容などの注意点を記載していきます。今回は一番初めに記載するライブラリについて記載したいと思います。今回の内容は非常に簡単です。基本構成を理解していない方は前回記事を参照してください。
前提
・QuantXの基本構成を理解している(前回の記事を読んでいれば可)。
・ライブラリとは何かを理解している
・ライブラリの機能の理解には統計学含め高校~大学程度の数学的な知識や機械学習用語の知識が必要です。
使用できるライブラリ(パッケージ)
ライブラリなんてimportすれば何でも使えるでしょ?とお考えの人もいるかもしれません。実際の所、システムトレードを行うために必要と思える大概のものは使えるのですが、自分ですべての環境を用意しているわけではないのでQuantX側の環境設定に依存する部分がどうしても出てきます。ということで、当然ですがQuantX側の説明があります。
内容が容易に理解できる方は、これで説明が終わってしまうんですがリンク先の内容は以下のようになっておりライブラリ名(パッケージ名)とバージョンしか記載がなく説明が何もない(2021年3月29日現在)です。
packages | version |
---|---|
Python | 3.8.5 |
numpy | 1.19.5 |
pandas | 1.2.3 |
statsmodels | 0.12.2 |
scikit-learn | 0.24.1 |
scipy | 1.6.1 |
TA-lib | 0.4.19 |
cvxopt | 1.2.6 |
xgboost | 1.3.3 |
Keras | 2.4.3 |
tensorflow | 2.4.1 |
PyTorch | 1.7.1 |
gym | 0.18.0 |
でも、これだとpythonに詳しくない人は意味がわからないし使えないですね。一つ一つ調べればわかるとは思いますが面倒ですし、自分も忘れた場合の見直しに便利なので後で簡単に説明したいと思います。なお、ここには記載がありませんが、QuantXのエンジンである maron というライブラリが必須となっていてバージョンを別途選択して使用します。
表には、packeges(パッケージ名)とversion(バージョン)と記載されています。パッケージ名とかモジュール名とかライブラリ名とかいろんな言葉があるんですが、特にライブラリとパッケージの説明は混在していることが多いです。しかもパッケージの説明にTA-lib、ta-lib、talibなどいろんな表記もでてきます。この表の中に出てくる、packegesはインストールなどをするときに一般的な呼び名だと思ってもらえれば大丈夫です。そして、QuantXでこれらを使用するときは必ずしもこの名称を使用しない ということだけ理解してください。
なお、一般的に ライブラリ>パッケージ>モジュール>クラスや関数 という関係がありますがライブラリ=パッケージとして扱われているものも多いです。
使用方法
ライブラリ(パッケージ)はプログラムのはじめにimport して使用します。特定のモジュール(パッケージ内の特定のプログラムファイル)や特定のクラス(モジュール内の一部のプログラム)だけを読み込むこともできます
使用方法は、
import ライブラリ名/モジュール名
import ライブラリ名/モジュール名 as 別名
だけ理解していれば概ね問題ありません。
from モジュール名 import クラス名
という使い方もあります。前者との違いは、前者ではモジュール名(別名)の要素としてクラスを呼び出す必要がありますが、後者ではプログラム上での使用に際してモジュール名を記載せずにクラス名から記載できます(ただし名前が衝突してしまわないように注意が必要です)。また、特定クラスだけの呼び出しのためライブラリ全てを読み込む必要がないためコストが下がります。大きいライブラリの特定機能だけ使用する場合にはこちらで呼び出したほうが良いでしょう。
ライブラリ説明
以下では必須の maron 以外で使用されるライブラリについてどのようなものか簡単に説明します。実際の使用方法については別の機会に説明します。黄色マーカーはライブラリ等のインポート時に単純に名称記載としていない場合の例。太字のライブラリは開発初期段階でもよく使用するもの。
ライブラリ/パッケージ | 呼び出し記載例 | ライブラリの内容 |
numpy(NumPy) | import numpy as np | 行列を扱うことができ数値計算を高速に行える。 |
pandas(Pandas) | import pandas as pd | 数表および時系列データを操作するためのデータ構造と演算を中心としたデータ解析に利用される。事実上必須。 |
statsmodels(StatsModels) | import statsmodels.api as sm | 回帰分析(データを探索して統計モデルを推定する)を行う |
scikit-learn | import sklearn as sl | 機械学習ライブラリ(回帰、分類、クラスタリング、教師なし学習の次元削減等) |
scipy | from scipy import integrate | 高度な科学計算(高度な行列や積分など)を行う。あわせてnumpyの使用が必須。左記の記載例は積分処理のクラスだけを呼び出している。 |
TA-lib | import talib as ta | 株価などのチャートのテクニカル分析を行う。よく使用する。 |
cvxopt | from cvxopt import matrix | 数理最適化問題を解く際に使用する。 |
xgboost(XGBoost) | import xgboost as xgb | 機械学習の一つで勾配ブースティング(アンサンブル学習と決定義を組み合わせた手法)を使用する |
Keras | from keras.models import Sequential | 人間向けに設計されたニューラルネットワークライブラリで他のニュートラルネットワークライブラリ(TensorFlowなど)上で実行可能。 |
tensorflow(TensorFlow) | import tensorflow as tf | Googleが提供する機械学習フレームワーク |
PyTorch | import torch | Facebookが開発を主導した機械学習ライブラリ |
gym | import gym | 非営利団体「OpenAI」が提供する強化学習(機械学習の内、システム自身が試行錯誤しながら、最適なシステム制御を実現する)のライブラリ。 |
まとめ
QuantXで使用できるライブラリは決まっています。逆に言えば限られたライブラリの使い方を覚えれば十分です。これらのライブラリを組み合わせ、自分のアイデアを実現していくことで複雑な知識や労力を抑えてトレード用システムを開発できます。