では、この作った株価情報DBを使って、最初のシミュレーションをやってみたいと思います ―― 名付けて、「『無能な江端』シミュレーション」です。
値下がりから値上がりに転じたら100株を買い、値上がりから値下がりに転じたら100株を売る*)。それ以外は何もしない ―― という、ものすごい「無能戦略」です。
*)100株単位は、現在の株取引のルールです。
そんな頻繁な株取引やっていたら、手数料で大損だろう、と思っていたのですが、(私が読み間違えしていなければ)最近のネット証券は、その辺も太っ腹のようです。
”1日当たり100万円以下の取引なら、タダ”になるプランがある、と理解していますが、私が勘違いしているようでしたら、教えてください(連絡先は sib_20220619@kobore.net です)。
正直に言いますと、今回のシミュレーションプログラムは、単にプログラムのデバッグ用に作ったものなのですが、結果を見てビックリしたので、今回、ご報告することにしました。
さて、今回使ったシミュレーションプログラムは、前述した\money\mone1の中に入っている、”main.go”プログラムを使います。このプログラムの中で、私は、初日に100万円の現金を持っているものとし、株を100株単位で売る、買う、以外のことは何もしません。
“main.go”の中にある「無能な江端」のアルゴリズムのコアは、ここ(だけ)です。
// 本日の江端の行動(昨日より値上がりしていれば買うし、値下がりしていれば売る、という単純な行動) if old_close < close && has_hitachi == 0 { has_hitachi = 1 // 買い cash -= close * 100 // 現金を出して stock_value = close * 100 // 株を買う total = stock_value + cash } else if old_close > close && has_hitachi == 1 { has_hitachi = 0 // 売り cash += close * 100 stock_value = 0 // 株を売る total = stock_value + cash }
では、シミュレーションプログラムを起動してみましょう。Dockerコンテナを立ち上げた状態で、以下のコマンドを入力してください。
$ go run main.go
数値データが出力されてくると思いますが、その数値の意味は以下の通りです。
fmt.Printf("%v,%v,%v,%v, %v\n", add_day, close, stock_value, cash, total)
は、それぞれ、
日時、終値、株価、所持している現金、株価+所持している現金
に対応しています。
さて、ここ1年間の3社の株価の推移は以下の通りです。
さて、この株価に対して、「無能な江端」の投資の結果は、以下のようになりました。
この結果を見て、「利益が出ている」ということよりも、「どの時点においても損失が大きくない」という点に驚いています。特に、JFEは、日立や東芝より株価は1/4〜1/5程度ですが、それを考えると損益、利益ともに、優等生と言えます。
正直、成績が良すぎる、と思っています。今でも「プログラムのバグ」ではないのか、と疑っています ―― 「無能な江端」が、銀行よりぶっちぎりで勝っているのですから、気持ち悪いです。この件につきまして、有識者のご意見もお伺いしたいところです。
まあ、それにしても、この投資方法は、「ほったらかし投資」に相対する「かまいっぱなし投資」と言えるものかなぁ、と思ったりしています。
今回のシミュレーションは、単なる「まぐれ」で、私には読みとれない相場の動きにたまたまヒットしただけのことかもしれませんが ―― それはともかく、データベースとシミュレーションの環境構築の第一歩を踏み出すことができました。
お金に愛されないエンジニアが、ようやく、お金と戦う武器(石おのとこん棒程度のものであっても)を持つことができたわけです。あとは、これをどれだけ拡張していけるか、です。引き続き、がんばっていきたいと思います ―― できるだけ、自分を楽しませながら。
では、今回の内容をまとめます。
【1】バブル期に就職した学生の「我が世の春」から、バブル崩壊後の「極寒の冬」にさらされ続けた研究員の遍歴を、ざっと解説して、その中で、工学系の学生が金融関係にスカウトされていた理由が「IT技術」と「通信技術」にあったことを説明しました。
【2】この連載で取り扱う金融商品について、私が今一つ理解できていないことから、これを金融工学という分野からアプローチしてみることにしました。その結果、金融工学とは、商品を市場に投入する前に、数学と計算によってリスクを含んだ商品を作り出す学問であり、特に標準偏差を使い倒すものである、ということが分かりました。
【3】このような金融工学に基づいて作られた金融商品は、その「可読性の悪さ(=内容がさっぱり理解できん)」から、金融危機(リーマン・ショック)を発生させてしまいました。つまるところ、金融工学は、「人間の感情」という重要な構成要件をキチンと組み込んでいなかった、と断じました。
【4】これらの調査の結果、私の投資の方針を、投資信託の商品を、数個選んで、自分で、ポートフォリオとして組み立てて運用していく、ハイブリッド運用を目指してみることにしました。
【5】証券会社の過去の株式情報を使ってデータベースを構築する手法と、その周辺技術(Dockerコンテナなど)について解説をしました。さらに、このデータベースを使って、考えうる最も単純な投資アルゴリズムを、「『無能な江端』アルゴリズム」と命名し、そのシミュレーション結果を試し、良好な結果に、驚いています。
以上です。
さて冒頭でお話した通り、私の大学卒業時、金融業界の工学部の青田刈りは、かなり大っぴらに行われていました。当時、かなり違和感があったのは事実です。とはいえ、この流れは、私より10年も前から始まっていたようですし、実際に理系出身の金融業界の頭取や社長も輩出されています。
ただ、私は私の知る限り、金融業界で活躍している当時の友人を知りません(というか、そもそも、今、交友関係がなく、どの業界も『知らない』、が正確ですが)。まあ、(私を含めて)ニュースで名前が出てくるような地位にはいないことは、間違いありません。
嫁さんは、結婚前、銀行に勤務していたのですが、銀行のシステム部門というのは、「左遷された人が集められた部署」だったという話を聞いて、ショックを受けたことがあります(ただ、これは、当時の話で、現在はどうなっているのかは知りません)。
銀行のシステムは、勘定系、無停止、分散、トランザクションやロールバック、運用管理(障害対応を含む)が必要である、システムの中でも、最も難しいシステムの一つです(私が勘定系システムの設計・開発を命じられたら、真っ先に逃げ出す自信があります) ―― そういう部署は、銀行の最高頭脳が結集しているんじゃないの? と思っていましたので、本当に驚いたのです。
―― つまるところ、『ベンダーに丸投げ』ってことか
と、ぼんやり考えていました。
私も人のことは言えません。研究用の検証プログラムを、ソフト外注に委託していることは、日常的に行っていることですし、そうせざるを得ない状況も、よく分かります。
で、最近、私、ようやく気がついたのですが ―― 『気付くのが遅すぎるわ!』と自分でもツッこみたくなるくらいですが ―― 自力で作らなかったものは、結局、自分の”モノ”にはならないのです。
以下は、最近、プログラミングに関して、ブログに書きまくっていたことを、自分なりにまとめたものです。
今回のコラムでも、私が、Dockerを使って、スクラッチからデータベースを作ったのも、結局のところ、他人が作ったものは、自分で使いこなすことができないからです。だから、どんなに出来上がったものがショボくて、バカみたいに時間がかかったとしても、自分で作ることが重要で ―― 結局、それが一番早いのです。
今回、金融工学についていろいろ調べてみたのですが、結論から言うと、『金融工学に必要な基礎知識は、高校で習った範囲(統計学)で十分行けるぞ』ということでした。
別に、わざわざ理系学生の青田買いをしなくても、文系の新入社員を、半年くらい教室に閉じ込めて、数学漬けにすれば、十分対応可能、と思えるものでした ―― ただ、金融工学のツールとなる、「プログラミング」については、半年では厳しいかもしれませんが。
多分、問題は、”可能であるかどうか”ではなくて、数学(統計学など)に対する”拒絶の度合い”の問題なのだろう、と思いました ―― つまり、数学への嫌悪感の問題。
数字と方程式で格闘してきた理系学生は、文系学生よりは抵抗なく、金融工学に取り組みを開始できる、という点が、理系学生が「買われていく理由」なのだろうと結論づけました。
正直に言えば、
―― 結局、それだけかい!
とツッこみたくもなりましたが。
Copyright © ITmedia, Inc. All Rights Reserved.