信用倍率を使った3点チャージ法の期待値検証(システムトレード)

「信用取引残高」は 相場の先行きを予測するのに活用できる。

という事で前回システムトレードソフト「Protra」で使えるように試みた。

信用倍率を取得してシステムトレードソフトProtraで読み込む
株価を直接動かすものは、売られる数と買われる数、つまり需給(需要と供給)買う人が多ければ株価は上がり、売る人が多ければ下がる。こんな当たり前の事を、3年前に外資証券会社勤務で先輩で...

自分の用途にデータを限定して「400MB」というサイズまで落とすことができたけど、これだと他の人が恩恵を受けないよね?

 

今回は全銘柄の全データをProtraで読めるようにしてみた。

そのライブラリもGithubにUploadしている。

信用残高のデータは大きく分けて3つある。

  • 証券取引所が発表するもの(東京・名古屋の二市場の残高をまとめた「二市場信用取引残高」)
  • 証券取引所が発表するもの(各取引所から発表される「銘柄別信用取引残高」)
  • 証券金融会社の日証金が発表する「日証金貸借取引残高」

ネットで簡単に入手できる信用残高は「証券取引所」のものなので、一週間単位の更新データとなっている。

このため残りの日付は欠損値として直前の値で埋めていた。機械学習の考え方ね。

でもファイルサイズが大きくなって読み込めない。

これ欠損値を計算で求めたらサイズも 80% 程度は圧縮できるんじゃない?

日付をシリアル値に変換する

Excelの日付データは、1900年1月1日を「1」とした連番(シリアル値)で管理されている。

例えば、和暦の表示形式を設定してあるセルに「2014/1/1」と入力すると「平成26年1月1日」と表示されるが、実際に入力されているデータの値は「41730」という数値。

 

これはPythonなどでは変換関数が用意されているが、Protraでは独自で関数を作らないといけない。

閏年の計算とか、月ごとに30日、31日とかあるので、サンプルコードとして日本のブログで紹介されている内容は長くて微妙だった。

海外のサイトに数行で実現しているコードを発見!

https://www.codeproject.com/Articles/2750/Excel-Serial-Date-to-Day-Month-Year-and-Vice-Versa

本当に こんなに短いコードで実現できるの?実験してみよう。

 

Pythonでは「datetime.datetime.strptime」を使って次のように数行で記載できる。

【結果】

Protraでの実現方法はこちら。C言語など関数がない場合も同様の処理で実現できる。

【結果】

確かにできた。

でも数字がたくさん出てきて、これで実現できている理由は分かってない。

 

とりあえず、こんな感じで出力してみた。

出来たファイルサイズは全データで

 

646万行(200 MB)

 

となった。

 

 

作成できたProtra用の信用倍率のデータは下記に置いている。

https://github.com/nehori/protra_lib/blob/master/Sinyo2023v2.zip

もし良いストラテジーができた人がいるのであれば、定期的に信用倍率をダウンロードする事をオススメ。

3点チャージ法+信用倍率の期待値検証

信用倍率を取得していたサイトの仕様が変わりダウンロードに時間がかかったので、今回のバックテストは3点チャージ法のみ。

従来の3点チャージ法のバックテスト結果

システムトレード手法として有名な「3点チャージ法」。

【買い】

  • 1) 移動平均線の乖離率(26日)の乖離率が-15%以下
  • 2) VR(25日)が70%以下
  • 3) RSI(14日)が25%以下

【売り】

  • 1) 買値の10%を上回った
  • 2) 2営業日経過 or 買値5%を下回った

何度も出てるけどバックテスト結果は次のとおり。

計算時間は約30分。

利益曲線は次のとおり。

ほぼ単調増加だったのにコロナ禍でトレンドが変わってしまった感がある。

とはいえ、20年以上前から知ってる手法だけど未だに現役で使えそうだ。

3点チャージ法+信用倍率のバックテスト結果

システムトレード手法として有名な「3点チャージ法」。

【買い】

  • 1) 移動平均線の乖離率(26日)の乖離率が-15%以下
  • 2) VR(25日)が70%以下
  • 3) RSI(14日)が25%以下
  • 3) 信用倍率が3.0より小さい

【売り】

  • 1) 買値の10%を上回った
  • 2) 2営業日経過 or 買値5%を下回った

計算時間は約30分。

バックテスト結果は次の通り。

利益曲線は次の通り。

 
 

あれ?

悪くなってない?

 

うーん、再考が必要な結果となってしまった。

おわりに

Protraで信用倍率を読み出してストラテジーに適用できる事を確認できた。

計算時間も特に悪化は見られない。開始までの読み込みは5分ぐらいかかるかもしれない。

今回 作成したストラテジーでは効果が見られなかった。

 

ただし信用倍率は今までの「Open、Close、High、Low、Volume」とは異なる指標なので、ストラテジーの幅が広がる可能性があると思ってる。

ソースコード(Pythonでの変換方法)

Python で Protraのライブラリに変換するコードは次のように作成した。

別途CSVとして各銘柄ごとに過去のデータを取得する必要がある。

ソースコード(Protraでの使い方)

Protraで利用するときは次のようなコードになる。

バックテストには無料OSSの「Protra」を利用した。

TIlib、Utility、TrendCheck、TOPIXライブラリはGitHubに置いている。

タイトルとURLをコピーしました