こんにちは。TATです。
今日のテーマは「Pythonを独学して株式投資に必要な情報を管理するサイトを自作したお話」です。
僕は現在、本サイトの他に「投資でニート生活」というサイトを運営しています。
「投資でニート生活」の1番の特徴は、プログラムによる完全自動運用であるということです。
データの取得や更新も記事の作成もTwiiterへのツイートもすべてプログラムが行なっています。
WordPressなどは使わずに、PythonのDjangoでゼロから自作しました。
必要な知識はその都度学びながら、完全なる自転車操業で完成までこぎつけましたw
管理人の僕は何をしているのかというと、特に何もしていませんw。
一応プログラムでエラーが起きたりするとSlackに通知が来るようになっているので、もし何かしらの通知が来たら対応します。
基本、この通知はほぼ来ません。完全自動でサイトが運営されています。
この記事では、「投資でニート生活」をDjangoで自作するに至るまでの経緯についてお話できればと思います。
プログラミング素人でも、その気になればなんとかなるもんです。
目次
Pythonを独学して株式投資に必要な情報を管理するサイトを自作したお話。
株式投資のためにPythonは独学で習得した
僕は社会人になってからPythonを独学で習得しました。
そのきっかけは「株式投資に必要な情報を収集・分析したい」との思いからでした。
情報の収集・分析に良さそうなプログラミング言語を探したところ、Pythonに出会いました。
学ぶべきプログラミング言語は、目的がはっきりしていれば自然と絞られます。
-
【目的で決まる】結局のところ、プログラミングはどの言語を勉強するべきか?
続きを見る
Pythonは、データ収集に役立つスクレイピングに強かったり、データ分析用のライブラリーが豊富にあったりと、僕の目的にはぴったりの言語でした。
さらにウェブ開発やAIなどにも利用可能で、なおかつ世界中で需要が上昇しているというのも決め手になりました。
-
【人気上昇中】今人気のプログラミング言語「Python」は何ができるのか?できることまとめます【転職でも有利です】
続きを見る
独学については、色々な方法を試しましたが、様々な挫折を経験しながら最終的にはUdemyにたどり着きました。
-
プログラミングの独学にUdemyをおすすめする理由!【僕はPythonを独学しました】
続きを見る
UdemyでPythonを独学して、株式投資に必要な情報の収集・分析のためのプログラムを作り始めます。
-
【これから学ぶ方へ】Pythonのおすすめ勉強法をまとめます!
続きを見る
最初のプログラムを作り上げる
最初は苦労の連続です。
独学で基礎的なことは一通り理解しているつもりでしたが、いざ自分でプログラムを作るとなるとわからないことが山のように出てきます。
かなり時間を要しましたが、一個一個ググりながら解決してなんとかデータ収集用のプログラムを作り上げました。
最初のプログラムです。(今見返すとかなり汚いコードですw)
これを毎週走らせて必要な情報を収集しつつ、集めたデータを眺めて投資すべき株を選定していました。
しばらくたって、この選定作業を自動化するためのプログラムも作りました。
条件にマッチする株をスクリーニングするだけのシンプルなプログラムでしたが、これで作業量を大幅に減らすことができました。
このあたりからプログラミングがかなり楽しくなってきて、のめり込んでいくことになります。
この頃、Pythonが活かせそうな仕事への初転職にも成功しました。
-
【実体験】ゼロからのPython独学を決意してから転職を掴み取るまでのお話。
続きを見る
毎回プログラムをパソコンで走らせるのはだるい
自前のプログラムを開発して、作業を効率化していく一方で、新たな不満が出てきます。
「毎回プログラムを走らせるのはだるい・・・」
なんとも怠惰な不満ですが、これが結構めんどくさいんですね。
プログラムが終了するまでにはそこそこ時間がかかるので、その間はパソコンをずっと開いておく必要がありますし、パソコンでプログラムを走らせない限り情報収集やスクリーニングをすることができません。
「毎回やることは同じなんだから、決まった時間に勝手にプログラムを走らせたい。」
当時の僕は「気ままなブログ(本サイト)」を運営するためにレンタルサーバーを借りていました。
「ここで走らせればいいんじゃね?」と思い、自作したプログラムをサーバー上に移して定期実行するようにしました。
これで、毎週決まった時間にサーバー上でプログラムが自動で実行されるようになりました。
初めての完全自動化です。
この時の感動は今でも強く覚えています。
データをダウンロードすれば常に最新の情報を確認できます。
いちいちプログラムを走らせる必要はありません。
プログラミングを使えば、普段の作業がいかに効率化できるのか、その素晴らしさを実感した瞬間でもあります。
データをいちいちダウンロードするのもだるい
サーバー上でプログラムを走らせるようになってから少し経過して、また新たな不満が出てきました。
「毎回データをダウンロードするのもだるい・・・」
人は一度プログラムで自動化をし始めるとどんどん怠惰になっていく習性があるようですw
「これで楽になった」と思いきや、「もっと楽できないかな」と考え出すようになります。
「データも自動で受け取るようにするにはどうすればいいのか」
この疑問を解決するために色々と考えました。
最終的にたどり着いた解決策が、「Slackでファイルを送信する」方法です。
SlackのAPIを使うと、プログラムを介してメッセージを送ったりファイルを送付することができます。
用途ごとにチャンネルも分けられるので、使い勝手がとてもいいんですね。
サーバー上でプログラムを走らせるたびに、結果のファイルをSlackと通して送ればいちいちダウンロードする必要はなくなります。
Slackでファイル送信するシステムを実装してからは、ファイルをいちいちダウンロードする手間を省くことができるようになりました。
リアルタイムでデータを取得する
Slackのシステムを実装した段階で、当初の僕が実現したかったことはほぼほぼ完成しました。
自動で情報を取得して更新、その結果をSlack経由で僕に送りつける。
僕が必要な作業は、ファイルを開いて投資すべき銘柄を選ぶだけです。
ここから先は自己満足の世界になりますw
Slack経由で送付されるファイルを毎週チェックしながら、ふとこんなことを思い始めます。
「今のままだと最新の情報でも最大で1週間遅れることになる。ここをもっと早くしたい・・・」
当時は毎週土曜日にプログラムを走らせていたので、平日にどんなにいい銘柄が出てきても、それに気づけるのは週末でした。
さらに突き詰めると、株価が大きく反応するのは何かしらのニュースが発表された時がほとんどなんですね。
当時の僕は、金融情報系の会社に勤めていたので、どこから情報がやってきてどんなニュースが株価に反応するのかがなんとなくわかっていました。
株に関する主な情報はTDNETやEDINETなどから発信されます。
この情報をもとに、Yahooファイナンスなどでニュースが発信されて、投資家が気づいて株価が反応するんですね。
「ここからとれば最速やないかい!!!」
そう思って、TDNETからデータを取り始めます。
全部取るわけではなくて、決算情報や業績予想の修正など、ジャンルを絞って取得しました。
上方修正やサプライズ決算が発表されると株価が大きく反応することが多いので、株価に影響を与えやすそうなジャンルに絞りました。
取得した情報はデータベースに突っ込んでいきます。
これでいざとなったらいつでもデータを取得して分析できます。
ウェブサイト上でデータを管理する
TDNETからデータを取得するようになってから、新たな疑問が出てきます。
「データベースにアクセスしないとデータ見れないじゃん!!!」
そりゃそうですよねw
そしてたどり着きます。
「もうこのデータをいつでも確認できるようにウェブサイト上で管理しちゃおう!」
ウェブサイト上で管理できたら、インターネットさえあれば世界中どこからでも確認できます。
スマホでもタブレットでもパソコンでも、いかなるデバイスでも確認可能です。
僕の場合は海外旅行に行くことも多いのですが、ウェブサイトなら海外でも問題なく確認することもできます。
当時の僕は毎日の株チェックを欠かさないために海外旅行でもパソコンを持参して、夜にホテルで株をチェックしてました・・・
ゆえに、これが実現したら海外旅行にパソコンは不要になります。
「ウェブサイトで管理できたら勝ちだな」
そう思って、ウェブサイトを作ることを決意します。
WordPressも考えましたが、「どうせやるなら自分で作りたいな〜」みたいな安易な考えから、サイトをゼロから自作することを決めます。
これと同時に、「せっかくウェブサイトでデータを管理するなら、自動で記事を作って公開しちゃおう」と考えました。
どうせプログラムがやるので、僕の作業は何もありません。
「ついでに記事を作成してTwitterとかで周知したらアクセス集まってマネタイズできるんじゃね?」
みたいなやらしい考えも浮かんできましたw
「投資でニート生活」の誕生
このような思いから誕生したのが、現在僕が運営している「投資でニート生活」です。
WordPressを使わずにPythonのDjangoでゼロから自作したので、完成するまでに約半年かかりました(笑)
仕事終わりの時間や土日のほとんどを費やして、このサイトの開発にフルコミットしました。
「なんでそんなに頑張れるの?」とよく聞かれるのですが、僕としては楽しいことをひたすらやっていただけなので、頑張ってるという感覚すらありませんでした。
子供がひたすらゲームに熱中するのと同じ感覚です。
「投資でニート生活」では、必要なデータを自動で収集・管理し、TDNETから取得したニュースを解析して、条件に応じて記事を自動作成します。
記事にはしていませんが、EDINETからもデータを収集しています。
記事が作成されたらAPIを通してTwitterで周知します。
これで全自動でアクセスが集まるシステムが出来上がります。
記事の種類も随時増やしており、この記事を書いている2021年3月30日の段階では13種類になりました。
今後も必要に応じて増やしていくつもりです。
完全な自己満サイトなので、基本的には僕が必要だと思ったものを増やしていきます。
ちなみにこれらの記事は、他の大手サイト(Yahooファイナンスや株探やBloombergなど)にも引けを取らないスピードでニュースが更新されます。
だいたい情報が公開されてから10秒以内には記事になります。
完全に自己満ですが、非常に満足していますw
日々のチェックも自動化しました
「投資でニート生活」でデータを管理しつつ、日々の株チェックも自動化しました。
具体的には、シグナル(移動平均線やMACDのゴールデンクロスなど)や52週高値更新銘柄などをチェックしています。
-
【プログラムで一部自動化!】僕が株を購入するまでの流れを大公開します
続きを見る
結果はPDFにまとめられてSlack経由で送られてきます。
View this post on Instagram
スマホやタブレットなどでこれ確認して、気になる銘柄があれば調べて投資判断をしていきます。
パソコンはもはや不要になりました。
データの収集や管理は自動化されているので、僕は分析にフルコミットすることができるようになりました。
必要なことはその都度学びながら突き進みました
ここまでで、「投資でニート生活」を自作するまでの経緯についてご紹介しました。
さらっと書いていますが、これを完成させるまでには様々な苦労がありました。
1番の苦労は僕の圧倒的な知識不足です。
そもそもPythonも独学で習得した身なので、Python以外のことも基本的に無知ですw
こういった知識不足は、その都度学びながら突き進んでいきました。
準備してから出発するというよりかは、とりあえずやると決めて必要なことは学びながら進んでいく感じです。
完全なる自転車操業ですねw
新しいことをやるたびに、わからないことが山のように湧いてきました。
サーバー上でプログラムを走らせようとした時は、そもそもどうやってプログラムをサーバーに移行できるのかも全くわかりません。(当時はVPNすらも知らなかったw)
SlackのAPIでファイルを送付する際も、「そもそもAPIってなんや」というレベルでした。
勢いでウェブサイトを自作する決意はしたものの、「Djangoはこれまで使った事ないし、そもそもHTMLとかCSSもよくわからん」という状況でした。
こういった壁にぶち当たるたびに、自分で調べたりして学びながら問題を一個ずつ解決していきました。
個人的には自分の学習スタイルを確立していたことが大きいと思います。
僕の場合は、Udemyとかの動画コンテンツで学ぶのが最も自分に合っているとわかっていました。
ゆえに壁にぶち当たった際には、まずはググって、それでも無理そうならきちんと勉強しようと決めていました。
きちんと勉強するとなると、Udemyで良さそうなコースを探してセールを狙って購入して勉強しました。
Pythonに限らずHTMLやCSSなどについてもUdemyで学ぶことができます。
とりあえず行き詰まったらUdemyでコースを探してみるのも良いと思います。
この際、学ぶ知識がすぐに必要になることがわかるので、モチベーションも維持しやすいし、何より学んでいてめちゃくちゃ楽しいんですね。
こういった目標があるとモチベーションを維持しやすいと思います。
学ぶべきポイントも明確になっているので、不要なところはスキップして必要なところのみにフォーカスしました。
人によっては、「わからないことばかりはきついな〜」と挑戦を避けるかもしれませんが、僕の場合は「これができたら〇〇できるやん」というワクワクの方が圧倒的に勝っていました。
結果として、たとえ無知でも丸腰で突っ込んでいけたんだと思います。
やっぱり何かをやり抜くにはモチベーションが大事になってきます。
ここがしっかりしていると途中で壁にぶち当たってもへこたれずに継続できると思っています。
-
【挫折しないために!】プログラミングを学習するためには目的意識が重要!途中で挫折する人の特徴とは?
続きを見る
興味あることは是非とも挑戦してみてください 〜
最後に僕からお伝えしたいメッセージがあります。
何か興味のあることがあるのであれば、是非とも挑戦してみてください。
失敗しても悔やむ必要は全くありません。
どちらかというと、ずっと悩んでいる状況の方がもったいないです。
僕のようにプログラミングに興味があるなら、とりあえず始めてみましょう。
今では無料でプログラミングを学習できるサイトもたくさんあるし、書籍やUdemyなど、安価で始められる教材にあふれています。
仮に挫折しても、数千円の出費なのでダメージは少ないはずです。
色々な方法を試して、自分にあった学習方法を見つけることができたら半分勝ったようなもんです。
この発見は、今後の人生でも大いに役立ちます。
僕のように、Pythonを独学することによって人生が大きく変わるかもしれません。
僕は社会人になってからPythonの独学を始めました。
いつから始めても決して遅すぎるということはありません。
興味があるものがあれば、是非積極的に挑戦してみましょう。
まとめ
いかがでしたでしょうか。
ここでは「Pythonを独学して株式投資に必要な情報を管理するサイトを自作したお話」というテーマで、僕が運営する「投資でニート生活」を自作するまでの経緯についてご紹介しました。
基本的には、知識ゼロの丸腰の状態から首を突っ込んで、必要な知識なその都度学びながらゴールに向かって突き進むという完全自転車操業スタイルですが、なんとかゴールまでこぎつけました。
ど素人からでもその気になればなんとかなるもんだな〜と今思い返しても感じます。
僕が特にお伝えしたいことは、興味のあることはぜひ挑戦してほしいということです。
やってみないことには、それが自分に合ってるかどうかはわかりません。
合わなければ潔く諦めて次を探せばOKです。
僕自身も過去にいろいろとトライしてきましたが、途中で諦めたことの方がはるかに多いです(WEBデザインとか、イラストレーターとか。。。)。
数あるトライの中でたまたま続いたのがPythonでした。
今では仕事でもPythonをメインで使うようになっています。
人生何があるかわからないので、ご自身で興味を持ったものは是非とも挑戦してみてください。
ここまで読んでくださり、ありがとうございました。