信用倍率を取得してシステムトレードソフトProtraで読み込む

株価を直接動かすものは、売られる数と買われる数、つまり

 

需給(需要と供給)

 

買う人が多ければ株価は上がり、売る人が多ければ下がる。

 

こんな当たり前の事を、3年前に外資証券会社勤務で先輩であるプロのシステムトレーダーに言われるまで気づかなかった。

【関連ブログ】

https://nehori.com/nikki/2020/07/08/post-18323/

その後、信用倍率をPythonを使った機械学習でデータを使った事はあったけど、その後は面倒になって放置していた。

週の信用倍率(需給)の欠損値処理を行い株価と比較分析する
千葉県知事選が話題になっている。前千葉市長の熊谷氏とは子供の学校同じなんだよな……。運動会などで見かける事があるんだけど、とした姿を見るたびに、自分のちっぽけさに嫌気が指し...

 

OSSのProtraで使えないしな……面倒くさい。

 

そもそも論として本当に「信用倍率」って意味があるの?

先輩が勝手に言ってるだけじゃないの?

 

……それ自体も分からないので重い腰を上げてみた。

信用倍率を使った投資方法

そもそも先輩から投資方法を具体的に聞いたわけじゃない。

で、ネットでググると元証券マンでユーチューバーSho氏が、実際に利用していた手法を公開していた。

銘柄選別時のポイント。信用倍率を用いた投資戦略とは。 | Sho's投資情報局メモ帳
信用倍率は適格銘柄選別時にとても重要な指標であり、まず最初に確認する必要があります。特に、信用倍率が高すぎると他の指標が売られ過ぎを示していてもさらにそこから株価が下落してしまうリスクがありますので、必ず倍率が低い銘柄を選択するように心掛けましょう。

【手法】

  • 1)信用倍率(1を切る/3以下など)
  • 2)売上高営業利益率(前回より下落してない、高い)
  • 3)経常利益進捗率(達成率が順調上昇 → 会社見通し正しい)
  • 4)高値期日を過ぎてから買う
  • 5)最後にテクニカル指標を使って銘柄を選択

色々とファンダメンタルズ分析指標も入っているのでバックテストは難しそうだ。

でも「信用倍率」だけは過去のデータもあるので効果があるのかは判断できそうだ。

 

YouTubeの中では理由を次のように語っている。

 

株式マーケットは機関投資家や海外投資家、一部の資金が潤沢にある大口投資家が動かしている。

彼らの思惑と反対にいくと、大抵やられてしまう。

彼らは需給が一方に偏っている時に稼ぎに来る。

だからターゲットにしているのは信用取引をしている人。

 

なるほど。

益々バックテストしてみたいよね。

OSSであるProtraでの実現方法

「信用倍率」は古いデータも下記から取得可能……だけどダウンロード禁止なサーバもあるのでソースコードは公開しない。

とりあえず、これをテクニカル分析指標として使うとストラテジー作成の幅が広がる気がする。

 

で、実際にProtraのバックテストで使うにはどうしたら良いのか色々と考えてみた。

【案1】データ読み込み部分を実装修正して実現

一番シンプルかつ正式な対応。

だけど、パッチの管理が大変だし、何よりC#知らないから何週間も必要な気がする。

 

別にProtraを皆に使ってもらう事が目的じゃないので、この案は却下。

誰かが作ってくれることを期待……したいけど斜陽なツールだし。

【案2】Protraの外部データの読み込みを使う

CSVファイルにしてProtraで読み込ませてしまおうというもの。

CSVを読み込み外部データを使えるようにする方法(システムトレード)
「イザナミ」「システムトレードの達人」が羨ましいなぁ・・・と思っている機能の一つが外部指標が取り込めることこれができれば、外国指数(NYダウ、ドル円)個別株先物...

 

ただしProtraは「1~9999」番までしか読み込みできない。

「ダウ平均」とか数種類であれば登録可能だけど、そもそも銘柄は1300~9999番まで利用されているので、全借貸銘柄を登録するには数が足りない。

1300番台 水産・農林業
1500番台 鉱業
1600番台 鉱業(石油・ガス開発)
1700~1900番台 建設業
2000番台 食料品
3000~3500番台 繊維製品
3700~3900番台 パルプ・紙
4000番台 化学・医薬品
5000番台 石油・石炭製品
5100番台 ゴム製品
5200~5300番台 ガラス・土石製品
5400~5600番台 鉄鋼
5700~5800番台 非鉄金属
5900番台 金属製品
6000~6400番台 機械
6500~6900番台 電気機器
7000~7400番台 輸送用機器
7700番台 精密機器
7800~7900番台 その他製品
8000~8200番台 卸売業
8300~8500番台 銀行・その他金融
8600番台 証券・先物取引業
8700番台 保険
8800番台 不動産
9000番台 陸運
9100番台 海運
9200番台 空運
9300番台 倉庫・運輸関連
9400番台 情報通信
9500番台 電気ガス
9600~9900番台 サービス業

 

これも駄目じゃんーー。

【案3】Protraからライブラリコードを読み込む

機械学習の結果をProtraで可視化するために利用している方法。

 

Protraで読み込み可能なデータファイルを作る

 

具体的には次のようなIf/Elseだらけのライブラリを作成し、Protraで読み込ませる……という超力技な方法が思いついた。

 

ただしファイルは超ビックサイズになりそうだ。

案の定、

 

3476万行(2GB)のLIBファイル

 
 

 
 

でProtraのバックテストで読み込ませると、何時間経過してもうんともすんとも言わない。

インタプリタはメモリを多く消費する。

メモリが97%の状態が続いていたが全く返答がないわ……

【案3.5】利用する銘柄&信用倍率だけライブラリコードとして読み込む

暫定的に、現時点のプライムの貸借銘柄だけに絞り、かつ信用倍率が3.0以下だけ抽出することにした。

その結果

 

1283万行(400 MB)のLIBファイル

 

となり、このファイルサイズであればProtraで読み込ませはできそうだ。

おわりに

中途半端な結果になってしまった。

次回は、よりファイルサイズの小さくなる方法を模索してみつつバックテストもやってみる。

ソースコード

信用倍率のファイルは「out/*.csv」に銘柄名でダウンローしている前提で、Protra用のファイルを出力するソースコード。

加えて「stock_list.txt」というファイルに対象となる銘柄番号を保存して出力した。

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