株にプログラミングって、どう役立つの?
プログラミングを株に活用して儲けたい!
この記事では、上記のような疑問にお答えします。
本記事のポイント
・株にプログラミングを活用するメリット
・初心者におすすめのプログラミング言語
・株のためにプログラミングで覚えること
・株のためのプログラミング学習方法
プログラミングスキルは株と相性のよいスキルです。
プログラミングをうまく株に活用できれば、大きく損益を改善することも可能になります。
特に、「株で全然勝てなくて困っている・・・・」
こんな人におすすめです。
この記事では、プログラミング未経験者でも理解しやすいような構成にしています。
技術的なこと満載の記事ではないため、すんなり読めます。
はじめまして!マンモスです。
投資歴15年です。
以前は負け続けていましたが、システムトレードの考え方を習得したことで、大きく資産を増やすことができました。
※2021年4月に資産3000万円を達成しました。
そんな私が、「株にプログラミングを活用する方法。【損益を大きく改善できる!】」を解説します。
株にプログラミングを活用する方法
株にプログラミングを活用する代表的な方法は3つあります。
②自動売買ができる
③スクレイピングで株の情報を取得できる
上記以外にも、プログラミングができるようになれば色々な活用方法があります。
また、システムトレードと呼ばれるトレード手法も低コストで実現可能になり、大多数の個人投資家より戦略の幅が広がります。
活用方法① 売買ルールの損益シュミレーションができる
プログラミングを活用すれば、ある一定の売買ルールで投資をした場合、過去にどのような結果になっていたのか?、ということが分かります。
また、売買ルールを複合的に組み合わせ、ポートフォリオ全体のパフォーマンスを引き上げたり、リスクを低下させるような最適な組み合わせを見つけることが可能になります。
上記のようなことは、プログラミングでなくても一応は可能です。
しかし、膨大な量の計算が発生し、時間が掛かり過ぎたり、正確に計算できなかったり、という問題点が挙げられます。
プログラミングスキルさえあれば、膨大な量の計算が圧倒的速さで可能になるため、より確度の高い情報を得ることができます。
この点では、プログラミングスキルの無い投資家に比べ、アドバンテージとなります。
活用方法② 自動売買ができる
プログラミングを活用して、株の自動売買ができます。
この自動売買とは、逆指値やトレーリングストップといった注文方法のバリエーションのことではなく、投資戦略そのものの自動化を指します。
自動売買ができれば、時間のないサラリーマンでもプログラムに銘柄の監視をさせ、適切なタイミングで勝手に取引して利益を上げてくれる、ということも可能になります。
つまり、チャンスが拡大し、それを見逃さない状況を作り出せます。
活用方法③ スクレイピングで株の情報を取得できる
スクレイピングとは、プログラミングでネット上から情報を選別し取得する技術です。
例えば、株価の時系列データを大量に収集したり、決算情報を選別して収集したりできます。
スクレイピングで集めた大量の情報は、売買ルールのシュミレーションや自動売買に利用することができます。
また、企業のPERなどの情報を取得し、それをもとにスクリーニングしたりもできます。
上記は一例ですが、情報を活用するアイデア次第では、様々なことが可能になります。
※スクレイピングは、以下の記事にて詳しく解説しています。
株にプログラミングを活用するメリット
株にプログラミングを活用するメリットは4つです。
②リスク・リターンの明確化
③最適な損切りラインの設定ができる
④感情を排除した取引ができる
メリット① バックテストで負ける手法を選別する
バックテストとは、過去の時系列データを使って売買シュミレーションをすることです。
このバックテストでは、シュミレーション期間を数年~10年以上のデータを使って行います。
これだけ長期のデータを使ってバックテストをすると、明らかに実売買では勝てないであろう投資戦略を選別することができます。
バックテストをしなければ、このようなことはわかりません。
プログラミングスキルがない投資家では、まずこのようなことはできません。
理由として、膨大なデータにたいして、正確な計算を行う手段が限定的だからです。
Excelなどで関数を使って計算してもいいのですが、手間がかかりすぎて現実的ではありません。
また、仮にExcelで売買シュミレーションしたとしても、かなり限定的な範囲のシュミレーション結果が分かるだけです。
このような全体の一部のみのシュミレーション結果で売買ルールを評価するのは逆効果になります。
ここまでの解説より、プログラミングスキルがなく、バックテスト手段を持たない投資家は、劣悪な売買ルールに気づかず損失を拡大させる可能性が高いです。
なぜなら、世に出回っている売買ルールは劣悪なものがほとんどだからです。
これは、本に書いていることや、インフルエンサーが紹介する手法でもです。
そういった手法の被害にあわないためにも、プログラミングを活用してバックテストすることが重要になります。
また、逆の見方をすれば、真に優位性の高い売買ルールを見つける手段もプログラミングしてバックテストすることだけです。
とりあえず手法を知ったから、実際の売買で評価するというのはナンセンスだよ。
プログラミングさえできれば、高度なシュミレーションができるから、実際の売買で損する確率も大きく減らせるよ!
メリット② リスク・リターンの明確化
プログラミングを活用して売買ルールのシュミレーションをすれば、リスク・リターンを明確な数字として出せることもメリットです。
劣悪な売買ルールは論外として、それなりに勝てる売買ルールでもリスクが高い、というのは往々にしてあることです。
自身のリスク許容度と比較して、それでも売買ルールを適用するか判断することができるため、プログラミングを活用するメリットは大きいです。
リスクの指標として役立つのは、
・最大ドローダウン
・ドローダウン期間
・連続負け回数
・平均損失
このようなものがあります。
こういったリスク指標を知っておけば、将来の傾向を知れるため、今が負け過ぎている時期なのか、それともよくある負けなのか、という判断もできます。
メリット③ 最適な損切りラインの設定ができる
プログラミングを活用すれば、最適な損切りラインを設定できます。
まず、最適な損切りラインとは、以下のような要素を考慮したものです。
・売買する銘柄のボラタリティ
・想定する保有期間
・自身のリスク許容度
・平均損益の変化
・勝率の変化
・最大ドローダウンの変化
など。
このように、売買ルールの特性にマッチしたものでなければ、有効な損切りラインとして機能しません。
その結果、勝率はさがり、「損切りしたら株価が上がりだした」、こんな状況になります。
逆に有効な損切りラインを設定できれば、勝率は上がり、平均損益も増えます。
しかし、大多数の個人投資家は適切な損切りラインを設定できていません。
例えば、5~10%下がったら損切りしている、など、かなり曖昧な損切りラインを設定しているのではないかと思います。
というのも、初心者向けの本や、ネット上の情報で真っ先にこういった損切り方法がおすすめされているからです。
こういった損切りはリスクマネジメントを一切しないよりマシですが、緩やかに資金が尽きるか、すぐ資金が尽きるかの違いしかありません。
結局、どちらにせよ投資に失敗します。
プログラミングさえできれば、このような劣悪な損切りから卒業することができます。
メリット④ 感情を排除した取引ができる
プログラミングを活用した自動売買を行えば、感情を排除した取引が可能になります。
売買ルールが機械化されていれば、いちいちどうすべきか?、と悩む必要がなくなり、投資行動全体をシンプルにできるため、精神的に楽になります。
ただ、感情を完全には排除できないことには注意が必要です。
いくら自動売買であっても、結局、ON/OFFを決めるのは自分自身です。
この点は注意しましょう。
初心者におすすめのプログラミング言語
株のためにプログラミングを覚える場合、初心者向けのプログラミング言語は下記の2つです。
②Python
Excel VBAは、Excelでプログラミングできるため便利です。
しかも、プログラミング言語の中では圧倒的に簡単です。
PythonもExcel VBAほどではありませんが、比較的簡単な部類です。
また、Pythonはデータ分析やスクレイピングも得意なプログラミング言語のため、株に使うプログラミング言語としてはおすすめです。
もし、プログラミング未経験であれば、最初はVBAを覚えてからPythonを覚えることをおすすめします。
プログラミング言語は基本的にどれも覚えることが一緒のため、1つの言語を覚えれば、2つ目以降の習得は楽です。
最初に簡単なExcel VBAを習得し、その後にPythonを習得すれば、段階的にスキルアップできるでしょう。
FXをする人なら、メタトレーダーのMQL4もおすすめです。
株のためにプログラミングで覚えること
この項では、プログラミングの基礎を解説します。
解説する内容は、技術的なことではなく、概念的なことの説明です。
「プログラミングってどんなことするの?」という人向けの解説です。
※当サイトでは、Excel VBAの基礎を解説し、簡単なバックテストツールの作り方を解説しています。
以下の各項目にリンクを貼っています。
プログラミングの3大要素とは?
プログラミング3大要素は、
①順次処理 → 順番通り処理すること
②繰り返し処理 → 特定の処理を繰り返すこと
③条件分岐処理 → 条件によって処理を分岐させること
の3つです。
この3つの要素を組み合わせることで、数学的にあらゆる処理が可能になるそうです。
プログラミング環境の準備
プログラミングにはパソコンが必要です。
ハイスペックなパソコンでなくとも、市販のモデルで十分です。
最近ではスマホでもプログラミングが可能になりました。
ただ、操作性を考えるとパソコンのほうがおすすめです。
また、エディター・コンパイラー・デバッガー等のプログラミングの開発環境を準備する必要があります。
※基本的には、統合開発環境ソフトをインストールすれば、プログラミングの開発環境は整います。
統合開発環境とは、プログラミングのための必要なモノをまとめたソフトという認識でOKです。
統合開発環境ソフトは有料、無料様々なモノがあります。
とりあえず、プログラミング未経験の人がプログラミングの開発環境を整えたい場合、パソコンさえ準備すれば、あとは全て無料で準備できます。
Excel VBAであれば、Excelの設定を変えるだけなので、Excelがインストールされていれば、すぐにプログラミングを始めることができます。
プログラミング開発環境の準備は、プログラミング入門書にほぼ載っています。
入門書どおり作業すれば準備できます。
また、ネットなどでも簡単にやり方が検索できます。
ただ、開発環境の構築は意外に難しく、この段階で挫折する人もいるほどです。
Excel VBAなら設定を変えるだけなので簡単です。
※まずはExcelの設定変更から。
※次にモジュール作成をする。
データの入出力処理
プログラミングの基本はデータの入出力です。
必要なデータをプログラムに入力して、そのデータ使って計算させたりした値を出力します。
この繰り返しで、最終的に必要なデータを計算します。
株で例えると、
最終的に出力したいデータ → 5日間の移動平均線
そのために入力する必要があるデータ → 5日分の終値
こんな感じ。
※VBAなら、データの入力も出力もExcelで可能です。
演算子と変数
演算子とは四則演算などに使う、+、-、÷、×といった記号のことです。
プログラミングでの計算も数学同様にこれらの記号を使いますが、一般的な数学のルールとは少し違い、独特のルールがあります。
また、変数とは入力したデータを入れる箱のようなものです。
たとえば、以下ような使い方ができます。
「A」という変数に5個のデータの平均値を入れる。
→A= (1+2+3+4+5)÷5
Aは3となる。
ここで、「B」という変数は、Aを2倍した値としたい。
A=3なので、
「B= A ×2」は6となる。
もし変数がなければ、
Bの算出は、
((1+2+3+4+5)÷5) ×2
となる。
算出のための式が変数がないときに比べ、複雑化しました。
また、さらにAの値を3倍したCという値を計算したい場合、
C=((1+2+3+4+5)÷5)×3
となります。
(1+2+3+4+5)÷5はBのときもCのときも一緒のため、変数を使えれば、
C=A×3
で済みます。
もし、ここでAの値が5個のデータの平均でなく、10個のデータの値にしたい、と後から修正する場合、上記の(1+2+3+4+5)÷5の式を全て修正することになります。
しかし、変数さえあれば、最初の「A=(1+2+3+4+5)÷5」だけ修正すれば済みます。
このように、データの使いまわしをするのが変数の使い方の一例です。
繰り返し処理
繰り返し処理とは、指定回数分の処理を繰り返します。
この処理に前述した変数を組み合わせることで、様々な繰り返し処理が可能になります。
例えば、2000日分の株価に対して、移動平均を計算させ、データを出力させる、などです。
また、特定の条件を満たすまで繰り返し処理を実行し続ける、といった繰り返し処理もあります。
条件分岐処理
条件分岐処理は、条件1を満たす場合はAという処理を、条件2を満たす場合はBという処理をするなど、条件指定によって処理を分岐させることができます。
株で例えるならば、逆指値注文みたいなものです。
1000円を上回ったら株を買うけど、1000円未満なら買わない、みたいな感じ。
ここまでが、プログラミングの基本です。
全体の流れとしては、
①必要なデータを入力し、変数などに格納する。(変数は必須ではない)
②順次処理(特別な処理でなく、順番通り作業するという基本動作)、繰り返し処理、条件分岐処理を組み合わせて、必要なデータを計算、選別する。
③計算結果を出力する。
これがプログラミングの基本的な流れです。
プログラミングの基本さえ習得できれば、売買ルールのシュミレーションや、リスク・リターンの計算程度のことはできるようになります。
自動売買については、次に説明するAPIを覚えないといけません。
APIの活用
APIとは「Application Programming Interface」の略です。
APIはプログラマー向けに、ソフトやネット上のサービスをプログラミングベースで利用できるようにした仕組みです。
APIを使うことで、プログラマーは自作したプログラムと正規のソフトやサービスの処理を連結できます。
ちょっと分かりづらいかもしれないので、株に使うAPIの例で解説します。
証券会社は、プログラマ-用にリアルタイムで株価を取得する機能、自分の口座情報を取得する機能、プログラムから発注処理をする機能、過去の株価を取得する機能など、様々なAPIを準備してくれています。
リアルタイムの株価と口座情報を入手できて、かつ、プログラムから発注処理ができるということは、一定の売買ルールに従う「自動売買」が可能になります。
本来、リアルタイムでの株価取得や発注処理などは、証券会社のウェブページ、トレードソフトを使用しなければいけません。
しかし、APIによって、自作したプログラムベースでの処理が可能になります。
これが株におけるAPIの活用です。
また、このようなAPIは株だけでなく、FX、仮想通貨などの業者でも利用可能です。
FXや仮想通貨であれば、APIを提供している業種も多数ありますが、システムトレード環境の整っていない株の場合、選択肢はかなり限定されてきます。
※当サイトではauカブコム証券をおすすめしています。
というか、2021/9月現在で、国内でAPIを公開している証券会社はauカブコム証券しかありません。
※APIではありませんが、Excelのアドインツールの岡三RSSでも自動売買は可能です。
※プログラミングに拘らなければ、ツールを使って自動売買も可能です。
株のためのプログラミング学習方法
売買シュミレーションやリスク・リターン指標の算出はプログラミング基礎知識のみでOKです。
特に高度な知識が必要になるわけではありません。
また、プログラミング言語とは、所詮言語に過ぎません。
自分のしたいことを、文章化しているだけなのです。
あまり難しく考える必要はありません。
プログラミングの学習方法については、基礎知識の習得ができればよいので、入門書の内容を覚えることができれば十分です。
とりあえずやってみて、どうしても分からなければ、メンターを見つけサービスを使ったりしてみるのもおすすめです。
※下記におすすめのシステムトレード関連書籍をまとめています。
もちろん、プログラミング言語の入門書もあります。
まとめ
「株にプログラミングを活用する方法。【損益を大きく改善できる!】」のまとめです。
→売買ルールの損益シュミレーションに活用
→自動売買に活用
→スクレイピングに活用
・株にプログラミングを活用するメリット
→バックテストで負ける手法を選別する
→リスク・リターンの明確化
→最適な損切りラインの設定ができる
→感情を排除した取引ができる
・初心者におすすめのプログラミング言語
→VBAとPythonがおすすめ
・株のためにプログラミングで覚えること
→順次、繰り返し、条件分岐であらゆる処理が可能
→プログラミング環境の準備
→データの入出力処理
→演算子と変数
→繰り返し処理
→条件分岐処理
→APIの活用
・株のためのプログラミング学習方法
→入門書読めばOK