システムトレード関連動画を何本か観ていると、検証作業が肝要であると再認識しました。

 

今テスト売買している株のシステムトレードについてもまだちゃんと検証作業をしていませんでしたので、書籍『自動売買ロボット作成マニュアル』で紹介されていたものや、動画で紹介されていたトレードロジック含め、全銘柄についてバックテストを一気にやってみたいと思います。期間は最大で10年分の日足と数ヶ月分の5分足で検証します。

 

まずは、制作モチベーション維持のため体裁を整えます。つまりトップメニューのデザインです。ロジックに使われているインジケータの各パラメータを自由に入力できるようにします。チャートギャラリーの仕様に合わせ検証期間は営業日で指定。

 

 

 

 

全銘柄を一気に検証しますので、一度マクロを動かすと処理は最長で数時間かかる気がします。楽天RSSが確実に稼働しないと時間ロスが相当なものになります。(接続中と表示されていてもたまに初手が不発で空白になる。。)

 

ですのでRSS起動確認ボタンを実装しました。ボタンを押すとRSSのテストを行い、正常にデータの取得が確認できると、ボタンの下に【Stand By】と表示されます。車のイグニッションボタンを押す感じです。アイドリングが落ち着いてから出発してねと。

 

別のシートに全銘柄分の集計結果を記録しますので、そのシートから指定コードの銘柄のデータを引用してこのメニュー画面に表示することにします。一度集計が終わってしまえば、比較的サクサクと動作することを期待していますがどうなるでしょうね。

 

こうしておおよその仕様が決定しました。色味がAmazonっぽいけどまぁいいか。。

 

これまでに書いて蓄積したVBAコードを選んで並べていく作業ですから難しくはないはずです。続きは来週からとします。

 

おつかれちゃんです。

楽天RSSでリアルタイムのシステムトレードをするにあたって、5分足でのデータを参照しシグナルを判別するという動画がとても参考になった。

 

もしも、今まで日足でやってきたトレードルールが5分足でも通用するということであれば、時間が何十倍も加速するのだから利回りが増加するはず。

 

では5分足データはどうやって入手するのかと調べると、これもまた楽天RSSで取得できるようなので早速試してみよう。

 

 

 

 

入力例

 

=RssChart(,"4755.T","1M",500)
4755.Tの1分足情報にある全ての取得項目を直近から500ティック分表示します。
初期表示の本数です。時間経過とともに最新データが追加されます。

 

5分足が見たいので ”5M”とします。ひとまず20ティックで。

セルに関数を入力するとズラズラっと下に表示される仕様ですね。5分毎に新たな行が追加されていきます。面白い。

 

 

右の列にシグナルを算定する関数や数式を入れておけば時間経過して行数が伸びることで、いずれ売買条件を満たしてシグナルが出ることになりますね。これは戦力になりうる・・・わ丸さん、良動画の配信あざます!

 

 

 

オプション理論価格を算出できるようになった私でございます。

 

楽天RSSを使い、エクセルスプレッドシートにこれを表示することで売買タイミングを図ろうという魂胆です。

 

 

理論値より有利な価格で取引されているサマが見て取れました。

 

決済するなら今だ!!とHYPER SBIを起動してそれぞれの板を見ながらストライクゾーンを狙って丁寧に投げてゆきます。

 

午後がどうなるか私にはわかりません。ロジックT2もどうにかプラスで決済。ブラックショールズ方程式様!良い感じです。

 

 

ブラック・ショールズ方程式の続きです。

 

昨日の考察によって、ブラック・ショールズ方程式を使うことで現在のオプション価格の理論値を求めることができました。今日は謎のパラメータであるσ(シグマ)に何を入れたら良いか、実際のオプション現在値を見ながら詰めてみます。楽天RSSの関数においてボラティリティに関しては唯一、IV(インプライド・ボラティリティ)のみがありましたので、仮でこれを当て嵌めました。同じく楽天RSSの関数『残日数』でtも取得して365日で割って使います。

 

しかし、やはり現在値と乖離が大きいのでそのままではアテになりません。色々試行錯誤しているうち、それに+1日することで求めた理論値と実際のオプション価格が近くなるという体験知を得ました。他の方のブログでも同じように+1している事例がありましたので、これは何かしらのおまじないなのかもしれません。(詳しい方理由を教えてくださいまし。)

 

ちなみに、原資産Sは本来日経225なんじゃないかと思いますが、先物ラージのほうが取引上リアリティがあると考えてこちらを採用です。

 

いくつかの行使価格でポジションを持っているので数値のズレを見てみます。

 

 

 

これなら十分に使えるという印象です。複数の売買ロジックを同時に展開する時に、SBIのアプリで損益管理すると訳がわからなくなってしまうので、ロジックごとにエクセルで管理するということで落ち着きそうです。エントリやイグジットのタイミングを図るのにこれから役に立つに違いありません。これからエクセルで直接発注できるように改良するわけですし。

 

自動トレード用のM1 macminiが到着しましたので開封の儀。

 

キーボードとモニタを持っていないのですが・・・

 

 

 

 

このあとログインパスワードを設定したら再起動時に詰みました。チーン。。

 

 

ブラックショールズ方程式のエクセルVBAでの表現について素晴らしくまとまったブログを発見して一気読みしてしまいました。金融工学ってすごいんですね!著者のoryzaeさん大変参考になりました。

 

 

 

 

リスクマネジメントのお話です。

 

現在持っているポジションには利が乗っています。ここらで利確するべきかを検討するにあたりチャイナ・ショックの影響をどのくらい受けているのか?が気になっています。

 

オプションの価格というのは複雑な数式で計算されたものに基づいて決められていると聞いています。しかしながら有事の際には数式のモデルを外れた数値になります。そりゃそうよね。

 

今回のようなリスクヘッジの需要ならば現物株の保険的にプット買いをすることでプットの価格は上がる。それが私の基本イメージです。実際のトレードの現場では板がスカスカで値段が分からないことがしばしばあります。価格が分からないからと成り行き決済したら首が締まりますね。ではどうやったら適正価格を知ることができるかを調べました。

 

『ブラック・ショールズ方程式』と呼ばれるノーベル賞ものの数式モデルを使えば、理論的なオプションの価格を計算できるということがわかりました。現在価格がそこから算出できればおおよその損益を知ることができます。また、値段がどのくらい離れているかが分かれば、これから利が伸びそうなのか?それとも溶けてしまいそうなのかがつかめると思いました。対数?それっておいしいの?

 

エクセルで簡単にやっつけたものはどこかにないでしょうか・・・

 

あぁ、3時間位彷徨いましたが先駆者様のおかげでどうにかなりました。

 

 

 

 

手元にある情報のなかで、足りないのはσ(シグマ)です。ボラティリティとあります。年間標準の〜という部分がなにか引っかかりますが、楽天RSSのオプション情報にはIV(インプライド・ボラティリティ)の関数があるのみです。ひとまずこれを入れて数値の様子を見てみることにしました。

 

理論価格はまぁそれなりに近い値なのかなと思いますが、どうも確信がもてませんね・・・HV?うーむ。理解が捗りません。

 

本件はまた明日掘り進めてみようと思います。

 

ナイトセッションの時間になったのでとりま利確。ロジックTの今月の成績は+210。暫定的であっても今日の学びは役に立ったわけです。満足。

 

今日もおつかれちゃん。

 

Windows仮想化環境の構築について。

 

Amazonのクラウドコンピューティングに移行する前段階として、自動売買ロボットが完成して運用が安定するまでは7年落ちのMacBookに仮想化ソフトでWindows10をインストールしてこれを簡易サーバー代わりにして使う作戦を実行していました。

 

仮想Win10に割り当てたスペックは2コア4GBです。この数日間24時間つけっぱなしで、時間はかかりますがちゃんと動いていたものの本体が常時熱をもっているのが問題です。それが原因なのかエクセルが落ちて数回自動保存した旨の表示が出ていました。

 

SSDが熱で急速劣化している気配や、古いバッテリーの膨張や破裂などの危険性があるなど、色々ギリギリなためリアルタイム売買時の信頼性に欠けます。

 

試しにメイン機のM1 MacbookAirにも仮想化Windows10の環境を作り、こちらでも同じ仮想スペックを割り当ててみたところ、サクサクとマクロが高速に動作し安定感も抜群です。この数年で一気にハードウエアが進化したのだと思います。マジ驚いた。

 

M1はファンレスですがまったく熱くなりませんし作動時も無音で省エネです。ARM版といって普通のWin10ではないらしいのですが動作保証がないチャートギャラリーも普通に動きます。なのでいっそM1 Winを正式採用して開発したほうが良いと判断しました。同じくファンレスM1据え置き型のmac miniをサーバーとして構築しましょう。

 

公式HPより整備済製品という名のアウトレット商品が手に入るようです。税込み68000円ほどですから良い設備投資だと思いました。すぐに費用回収できそうです。

 

 

 

現在M1 macbookにWin10+チャートギャラリー+Excel等で環境が完成していますので、この仮想化ファイル一式40GBを新しいM1 macminiにファイルコピーするだけでマルっと移行できるんじゃないかと期待しています。これができれば面倒なセットアップの手間いらずで時短になります。

 

次の週末までに『Teamviewer』などの無料リモートソフトを使って手元のデバイスで自宅サーバーの動作確認していよいよ実戦投入する段取りです。しばらくスマホを触っているうちにコンピューティングは変革してきていたんだなぁ。スマホに使っていた時間をどれだけPCに戻せるか。

 

でも、2020年モデルの君お疲れ様、、次回予告【富士通ノートブック大ピンチ!もうちょいがんばれ日本メーカーw】

チャイナショックの関連なのか普段使いのSBI証券のオプション価格データがバグっている。これも毎日エクセルで管理しているがマクロは導入していなかった。良い機会なので、楽天RSSでデータを取得して現ポジションごとの損益を自動計算するように手直しする。

 

まずは君の名は・・・ということでリンクから入力形式を確認する。

 

 

 

 

RssFOPMarket(”銘柄コード”,”取得項目”)

 

=RssFOPMarket(なんちゃら)だね。了解。

 

オプションの銘柄コードは9桁の数字。それは以下のリンクで求まるという。

 

 

オプションなのでコードの頭は"1"、プットなら" 3 or 8"、コールなら"4 or 9"、今年だから"6"、第一限月"10"

 

ここまでですでにわからない。 or ってなんだ?

 

続いて権利行使価格が2桁。それに"18"をつなげたもの。

 

権利行使価格の2桁をどう考えるか。

 

※注
プット、コールにおける「8」および「9」について、銘柄(権利行使価格)が追加設定される局面において、同一限月内で既に使用されている場合に用いられます。

 

注釈の日本語が理解できない・・

 

例をもとに推測しよう 

(例1)日経225オプション プット2015年3月限 行使価格3000円 (180033018)

 

(例2)日経225オプション プット2015年3月限 行使価格13000円 (130033018)

 

SP5250円 千の位(5) 百の位(2)

 

以上より、プットならATMに近い行使価格に"3"、遠いものに"8"と採番しているのではないか。

 

(予想)

日経ミニ先物価格30200円、10月限月のプット28000円のコードは

 

1(定型) & 3(ATM近いプット) & 6(今年) & 10(限月) & 80(価格) & 18(定型) = 136108018

 

136108018なんじゃないの?

 

=RssFOPMarket("136108018","現在値")

 

と、試しにエクセルに入力してみると「58」という数値が返ってきた。SBI証券のアプリで表示されている同オプションの価格と一致した。OK!

 

 

 

 

RssFOPCode(銘柄種類,限月,C/P区分,行使価格)

 

なんだ、コードを教えてくれる関数があるじゃないの。。検算する。

 

=RssFOPCode(N225OP,202110,2,28000)

 

= 136108018

 

ひとまずこれでスッキリしたよね。オプション損益計算の自動化マクロは完成です。

Excelのマクロを自動で動かすにあたり、日々の株価データをチャートギャラリー経由で読み込んだり、楽天RSSを利用するためにマーケットスピード2を起動する必要があり、これらも毎日の作業となるので自動で行いたいのです。

 

Windowsアプリを自動で動かす方法はいくつか考えられるのですが、プログラミング言語である『Python』で行うというトレンドがあるようです。後々の展開や新しいトレード手法の検証作業のことを考えてこれも並行して学習したいと考えました。

 

今回は開発用の富士通ノートブックのほかに、普段使いのM1 MacBookやVBA実行用の仮想デスクトップWin10と3台のPCでの運用が考えられるのでプログラミングと実行環境を整える手間がありそうです。

 

ここで、『Docker』というアプリを使うことによってそれら複数台での環境を同時に維持できるらしいので、まずはこれをインストールします。

 

これが一体どのような効能があるアプリなのかは使ううちに理解していけば良いかなと思います。

 

参照したリンクは以下です

 

 

WindowsもMacのように仮想化環境として、OS間の違いを無くすことで環境等の設定値が共有できるという感触でしょうか。

 

そもそもWindowsだけではそういうことができなかったんですね。丁度良いタイミングで参入したのかもしれません。

 

この仮想化環境ができた暁にはPythonでのプログラミングと実行がスムーズに行えると、そういうことだと思って進めます。

 

 

Windows10 HomeでHYPER-Vの有効化が必要なのに選択項目が出ない!以下のリンクで補完。なるほど、Windowsというのはこうして同じOSのバージョンを使っていても、個々に挙動が違うことがあるのが問題で、それをDockerなりで標準化するにしてもテクニカルな操作をして解決する手間が必要だと。なるほど。

 

 

 

よし、登竜門の『hello-world』に辿り着きました。こりゃあ先が長そうだ。。本当にこのままこの道を進むべきか。

 

 

自作のトレードシグナル配信マクロのデスクトップでの稼働を確認した。次にこれを自動化するくだりだ。

 

外出先でもトレードシグナルを確実に受け取り、翌日の寄り付きからスマホからトレードを行えるようにしたい。自宅でPCを起動しっぱなしにする方法を考えるが、富士通は開発用にも使うわけで、これはどうも落ち着かない。外注のサーバーを契約することを検討した。サーバーにエクセルをインストールしてしまうのはどうだろうか。

 

こういった用途にはVPSというサービスが一般的のようだ。搭載メモリやディスクの容量などで月額料金が変わる。

 

エクセルファイルの容量は1MB程度だから容量の制約は無視して良いと思う。手元のPCのメモリは8Gだからそのまま同じサイズで検討する。しかし、コストが高い。業者によって幅はあるがWindowsサーバーを指定すると月額7000円前後のようだ。先行投資するにはちと大きい。

 

最低限のスタートアップで考えていきたい。CPUやメモリは最低どのくらいあれば運用できるのだろうか。

 

簡単に検証してみることにした。手元に余っているMacBookがある。これに仮想化アプリ『VMwareFusion』を導入しヤフオクで入手したWindows10とExcel2019をインストールする。仮想Windowsの稼働用CPUは2コア、メモリ量はひとまず4GBと設定した。

 

 

 

 

マーケットスピード2とExcelのみを稼働してトータル2.4GB程度のメモリを使っているようだ。サーバー機なら常駐しているソフトも少ないだろうからもっと契約メモリが少なくても動くかもしれないが安定稼働のため現況4GBは必要と判断する。すると月額は4~5千円のプランになるだろうか。通信料をMVNOで圧縮している身としてはそれでも高い。

 

折衷案として、まずはこの仮想Windows環境で稼働テストを続けていくことにしよう。Macbookなら24時間稼働させても静かだから気にならない。上蓋を閉じても自動スリープしないようにターミナルから設定を変えた。畳んでいてもマクロが稼働してシグナルが届くのを確認した。実験中のコストはごくわずかになるだろう。

 

また、通信を安定させるために有線LAN接続に変更したいから専用ケーブルもヤフオクで調達しよう。当面の目標はメモリ2GBプランで動くシステムの開発ということで。

 

 

中古の富士通ノートブックとEXCEL2019アプリを購入してからちょうど1か月が経った。エクセルVBAに慣れてくると、やりたいことがだいたいできるという感触がある。

 

まずは新しいシートを作成し、全銘柄についてシグナルが発生したかどうかを集計してA4サイズでレポートする。シンプルなFor文を書くのはもう簡単なことだった。参考文献なしで仕上がりエラーもなし。

 

各マクロが連続で発動するように仕込んだボタンを押してから22分で処理は完了した。今回のトレードルールは翌日の寄り付きで売買するものであるため、処理に時間がかかってもまったく問題ない。しかし、ゆくゆくリアルタイム売買に挑戦するなら処理時間を短くする取り組みは避けられない。そのうち全部を書き直す必要もあるだろう。

 

次にこれをPDF化する。ググったら早速コードが見つかったので5分で成功。それをメール添付して送る。Outlookは使っていないのでGmailで対応できないかとググったらこれも簡潔で読みやすいコードが見つかり一発解決した。参照するにあたって読みやすさはかなり重要。リンクを紹介しようと思ったが履歴に出てこない。残念。。

 

 

 

ひとまずトレードシグナルをスマホで受け取れる環境が構築できた。株の売買はスマホアプリでやればPCを持たずに旅行できるというわけだ。

 

 

次の一手。毎晩PanActiveMarketDatabaseから株価を取得してこれらマクロを起動するまでの一連の操作が必要だ。これを全自動かつクラウド内にセットアップしたいのだ。ここからは少しエクセルVBAから離れて、PCのタスクスケジューラ&クラウドコンピューティング編となる。

 

ざっくり調べた感じでは、AmazonEC2 Python Dockerといった新出キーワード。情報のボリュームがやばそうだね。これまでにせっかく覚えたことを忘れてしまわない工夫が必要だ。要点をまとめておいたほうが良いかもしれない。どうするかな。