QuantXの初期化関数ではまず使用するデータを定義(設定)する必要があります。QuantX以外の環境で自作する場合には、実際に設定したデータを読み込む処理をつくったり必要に応じて読み込みデータの加工が必要ですが、QuantXでは使用する銘柄コードやデータをセットするだけで必要なデータを背後で読み込んでくれます。
なお、ここで記載されていることは、公式ドキュメントのデータセットの項目に記載されていますので、そちらで理解できていれば問題ありません。
初期化のパターン
初期化関数 def initialize(ctx): 内の初期設定は決まりきったパターンで記載することになり、以下の項目をアレンジすることになります。
(1)target として市場データの指定(通常は、日本株日足で”jp.stock.daily” となる。)
(2)channels で日本株としての組み入れ銘柄と利用データを指定
実際の所は通常は(2)の部分の変更を行いますが、日本株の指定は”symbols”の要素として銘柄コードを登録、利用するデータは”columns”:の要素として記載しデータの種類はあらかじめ定義されているデータ種類名称を登録という形になります。
#
ctx.configure(
target="jp.stock.daily",
channels={
#日本株を対象に指定
"jp.stock": {
#組入銘柄
"symbols": [
"jp.stock.2502", #銘柄コード
"jp.stock.3402", #銘柄コード
],
#利用データ
"columns": [
"close_price_adj", # 終値(株式分割調整後)
"volume_adj", # 出来高
]
}
}
)
銘柄コード
銘柄コードはシステムトレードの判定対象として参照したい4桁の銘柄コード(XXXX)を、”jp.stock.XXXX”, のように記載すれば良いです。トレード対象とする銘柄を指定するのが通例ですがペアトレードの判定のために利用する銘柄や全体トレンドの参考指標として利用するための日経平均連動ETFを指定するなども考えられます。
また、銘柄数が増えると、”jp.stock.xxxx”の記載の羅列で文字数が増えてしまうので、以下のような構成にして文字数を減らすことも可能になります(文字列作成の実行時の処理負荷と銘柄変更時の作業負荷や容量の差につながりますが、どちらにしてもそれほど影響の大きいものではないので、システムの基礎データを他で作成している場合など作業がしやすい方法を選べばよいと思います)。ちなみに、銘柄コードが(QuantXのデータ上に)存在しない場合はバックテスト時に単に backtest failed と出るだけなのでどこが悪いかわからないのが難点です。2007年以後の上場銘柄のデータはあるようですが、それ以前に存在した銘柄データ(例:3102 カネボウ 2005年上場廃止)はないようです。
# 銘柄コードを数字のみで作成
ctx.codes = [2502, 3402, 4507, 5401, 6869, 8591, 8725, 8801, 9432]
# 数字のみの銘柄コードから銘柄コードリストを作成
ctx.symbol_list = ["jp.stock.{}".format(code) for code in ctx.codes]
ctx.configure(
channels={ # 利用チャンネル
"jp.stock": {
"symbols":ctx.symbol_list, # 先に作成しておいた銘柄コードリストを登録する
#利用データ
"columns": [
"close_price_adj", # 終値(株式分割調整後)
"volume_adj", # 出来高
]
}
}
)
利用データ
銘柄に紐づくトレードの判定を行うための基礎データとして使用するものを”columns”に対応する要素として定義する必要があります。これは、ライブラリが提供するデータのため使用できるものや名称が決まっています。具体的には公式ドキュメントにもあるように以下のようになりますが、通常は、株式分割調整の有無が”あり”になっている識別名が ****_adj のものと 売買代金の txn_volume の中から選択することになります。
識別名 | 内容 | 株式分割調整の有無 |
---|---|---|
open_price | 始値 | なし |
close_price | 終値 | なし |
high_price | 高値 | なし |
low_price | 安値 | なし |
volume | 取引高 | なし |
txn_volume | 売買代金 | なし |
open_price_adj | 始値 | あり |
close_price_adj | 終値 | あり |
high_price_adj | 高値 | あり |
low_price_adj | 低値 | あり |
volume_adj | 取引高 | あり |
まとめ
QuantXでの初期化は、銘柄コードと使用するデータを決まったルールで記載するだけなので簡単に使えます。