日本株の検証を、実測で。

カブテスター|日本株のティック検証エンジン

日本株には、MT4 のストラテジーテスターに当たる共通の検証環境がありません。データは J-Quants で手に入るようになりましたが、そのままでは検証に使えない形で配られています。カブテスターは、そこを埋めるための道具です。

  • 21億行のティックを、1銘柄あたり数十msで読める形に組み替えます
  • 損切りと利確が同じ足に入ったとき、決め打ちしません
  • データは同梱しません。お客様のAPIキーで、お客様のPCが取得します
  • 買い切りです。月額も、シグナル配信もありません

何を解決するのか

1. 配られる形のままでは使えない

J-Quants のティックは「日付ごと・全銘柄」のCSVで配られます。検証で要るのは「銘柄ごと・全期間」です。この向きが合っていません。

実測値
配られる形(2年・圧縮)20.6 GB
解凍すると116.7 GB・21億3,800万行
1銘柄の2年分を読むのにかかる時間(そのまま)約49秒
カブテスターで組み替えた後18 GB / 1銘柄 数十ms

組み替えは一度きりで、2年分で約1時間20分。以降の毎日の追加は数秒です。

銘柄別に組み替えると読み出しがどれだけ速くなるか
1銘柄の全期間を読むのにかかる時間。2年分・21億行

2. 四本値では決められないことがある

損切りと利確を同時に置くと、同じ1分足の中で両方に触ることがあります。四本値しか無いと、どちらが先だったかは決め打ちするしかありません。

建値からの幅両方に触った割合上が先下が先
0.1%10.0%47.1%52.9%
0.2%8.1%46.1%53.9%
0.5%5.3%48.7%51.3%

どちらが先かは、ほぼ半々です。52銘柄・2,908取引で試したところ、決め打ちの向きだけで損益が −38% 〜 +35% 動きました。両方に触った足がたった1回で損益の符号が変わった銘柄もあります。

カブテスターは、その足の約定を順に見て実際に先に触ったほうで決めます。決め打ちしません。

詳しい実測はこちらの記事に書いています

決め打ち次第で損益がどれだけ動くか
同じ戦略・同じ幅で、判定の仕方だけを変えたときの損益

3. 配られたままのCSVは、並び順に罠がある

CSVは時刻順に並んでいますが、約定順ではありません。同じ時刻の約定が全体の4.1%あり、そこで順序が入れ替わっています。そのまま1分足を組むと、4,201銘柄のうち1,238銘柄で始値か終値がずれます

カブテスターは取り込みの時点でこれを直します。組み直した1分足が公式の分足と468,960本すべて一致することを確認済みです。

この話もこちらに書いています

資産の動きの例
検証エンジンが出す資産曲線。山からの下落を帯で示す

使い方

はじめかた
# 1. 自分の J-Quants の APIキーを入れる(同梱データはありません)
kabutester key set

# 2. 2年分のティックを取ってきて、検証に使える形に組み替える
kabutester build --from 2024-10 --to 2026-09
#    ダウンロード 約24分 → 変換 約16分 → 銘柄別に転置 約37分

# 3. 戦略を回す
kabutester run mystrategy.py --code 86970

戦略は Python で書きます。MT4 の EA と同じ感覚で、1ファイルに1つのクラスです。

mystrategy.py
from kabutester import Strategy

class 高値ブレイク(Strategy):
    def on_bar(self, ctx, bar):
        if ctx.position != 0:
            return
        hi = ctx.bars["H"].iloc[-21:-1].max()
        if bar.C > hi:
            ctx.buy()
            ctx.set_exit(stop=bar.C * 0.998, take=bar.C * 1.002)

データの扱い(大事なこと)

カブテスターにデータは同梱されていません。
お客様ご自身の J-Quants 契約と APIキーで、お客様のPCが直接データを取得します。運営者がお客様のAPIキーや取引データを受け取ることはありません。

J-Quants の規約は、取得したデータを第三者が使える状態にすることを禁じています。この形以外では、そもそも商品として成立しません。

別途、J-Quants の「株価 分足・ティック」アドオンのご契約が必要です(Light 1,650円+アドオン 5,500円=月7,150円。Freeプランにはアドオンを付けられません)。プランの選び方はこちら

正直に書いておくこと

  • 成行だけで、損切りも利確も置かないなら、ティックの優位はほとんどありません。1分足では「次の足の始値」と「次のティック」が同じ値段になるためです(38銘柄で損益まで完全一致しました)
  • 板情報はありません。J-Quants のティックは約定データだけです。そのため「自分の指値が列の何番目か」は分かりません。指値の約定判定は、既定で辛め(その値段を抜けて初めて成立)にしてあります
  • 売買方向もありません。約定が買い手・売り手どちらから出たかは推定しかできません
  • 立会外取引(ToSTNeT)は含まれません。立会内のみです
  • ティックの期間は2年です。これは J-Quants 側の制限で、プランを上げても変わりません。長期の検証は日足になります

これらはデータ側の制限で、道具を作り込んでも消えません。買ってから気づくより、先に知っておいていただくほうがよいと考えています。

動作環境

OSWindows 10 / 11(64bit)
Python3.11 以上
メモリ8GB 以上(16GB 推奨)
空き容量2年分で 40GB 程度(配られるCSV 20.6GB+組み替え後 18GB)
別途必要J-Quants の分足・ティックアドオン

価格

12,800円(税込・買い切り)

  • 買い切りです。月額はありません
  • シグナルの配信、銘柄の推奨、投資の助言は行いません
  • 更新は無料です

月額の会員制や、分析結果を継続して配信するサービスは行いません。売り切りの道具として提供します。


※ 現在開発中です。公開時期が決まりましたらこのページでお知らせします。