QuantX

QuantXの初期化関数(1)初期設定部分

投稿日:2021-03-31 更新日:

 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での初期化は、銘柄コードと使用するデータを決まったルールで記載するだけなので簡単に使えます。

-QuantX

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

QuantXの基本構造

QuantXはシステムトレード用開発環境としてユーザー数を拡大しています。今日は、開発の最も基礎となる基本構造について記載します。 前提 ・エンジンは maron-0.1.0 を利用・何らかのプログラ …

QuantXの初期化関数(2-2)シグナル生成関数の引数の一次加工

 前回まででQuantXのシグナル生成関数の作成で必要な構造とその引数の内容を確認しました。今回はその引数を加工して売買シグナルを作成するために必要なデータの一次加工について理解します。ここを理解して …

QuantXの初期化関数(4)シグナル判定関数の登録

 シグナル判定関数を作成したらその関数を日々のデータに対して適用するように呼び出す必要があります。QuantXでは、その呼び出しは大元の処理で行われるため、初期化関数内で単にシグナル判定関数をシステム …

QuantXで使えるライブラリ(パッケージ)

 前回、QuantXの基本構成を記載しました。今回から各ブロックごとに記載方法・内容などの注意点を記載していきます。今回は一番初めに記載するライブラリについて記載したいと思います。今回の内容は非常に簡 …

QuantXの売買ハンドリング

 QuantXで初期化関数を準備できたらあとは実際に売買の管理をする関数(日ごとの処理をする関数)を準備すれば基本システムは完成します。基本構造で示したように売買ハンドリングは予め決められた関数(de …

PAGE TOP