こんにちは、hokkyokunと申します。
↓の絵は妻に書いてもらいました(笑)
初めて来てくださった方ありがとうございます。
そうでない方も改めて、このサイトが実現しようとしていることをお伝えできればと思います。
簡単に自己紹介をして、どうしてこのサイトを作ったのかをお伝えできればと思います。
自己紹介
改めまして、hokkyokun(ほっきょくん)と申します。
何している人?
職業は会社員です。
大企業でもなければ、スタートアップでもない普通の会社で、
IT系の業務もやっていない、ただのサラリーマンです。
特にパソコンが得意なわけでもなかったのですが、「あるきっかけ」でプログラミングにであい、仕事と子育て時間以外はすべてプログラミング勉強に費やした時期があります。
「あるきっかけ」というのは長くなるので、
下記の「どうしてブログをつくったの?」で書きました。
hokkyokunって何?
ブログ名で名乗っているhokkyokun(ほっきょくん)ですが、
大学時代に研究のために北極圏の調査をしたことがありまして、
「北極」からとらせていただきました。
あんまり言うとばれるのでこの辺で(笑)
家族と趣味
結婚し、娘が一人いる子育て中のアラフォーです。
趣味は登山、スノボ、
そしてプログラミング、投資、ブログ(笑)!
割とガチで仕事終わりと休日の自分の時間はブログ関係のことばかりやっています。
実はめんどくさがり屋
ブログってこまめに更新する人がやるものですよね。
私、かなりめんどくさがり屋で同じ作業を毎日、同じ時間にやるってのがダメなタイプです。
ブロガーとしては致命的なのですが(笑)、
「さぼるために一生懸命頑張ってさぼる機械を作る」はできるタイプなんです。
つまり、情報を自動で取得して、いい感じに編集して、ブログ投稿や更新をやってくれる
これをプログラミングで実現しちゃおうってのをやっています。
Pythonというプログラミング言語を使って
ブログ記事の自動投稿を実現しています。
Pythonを使ったワードプレスの自動化の方法をまとめています。
このシステムを一部使って
株価データ取得、データ解析、投稿もしくは記事更新を自動化させた結果が
これです。
基本的に↑で作ったデータは手動更新せず、自動更新です。
(実際はまだまだプログラムのメンテが必要ですが…)
毎週末更新を目標に日々管理しています。
この自動更新が軌道に乗れば、
このあたりの手法をパッケージ化していこうと思います。
【追記】
完全自動更新のウェブサイトを作成しました!!!
Invest Explorerというサイトです。
Invest(投資)をExplorer(探索する)という意味を込めています。
ETFやマーケット情報(S&P500はもちろん、セクター別、国別、マグニフィセント(GAFAM+エヌビディア,テスラ)などの情報を毎日更新しています。
どうしてブログを始めたの?
きっかけはプログラミングを覚えたこと
ブログを立ち上げたきっかけはプログラミング学習で覚えたことの情報発信がしたかったからです。
では、なぜプログラミングを始めたのかというと、
当時、やっていた業務が事務系の物流と在庫管理だったのですが、
2000年初期くらいのめちゃくちゃ古いダメダメシステムを使っていたので、鬼のようにエクセルを活用してなんとかやっているような部署でした。
内容は詳しくは言えないんですが、手作業が非常に多く、
繁忙期は残業時間3桁くらいで休日出勤あたりまえみたいなところです…
これではいかんと思い、業務で使っているエクセルをなんとか自動で処理したいなから
VBA(エクセルを自動で動かすプログラミング言語)を必死で覚えたのがプログラムを始めたきっかけです。
VBAってすごい、きっと同じように困っている人がいるはず
冗談抜きにVBAに救われました。
もしVBAがなかったら当時いた部署は崩壊していたかもしれません。
でもこういうぎりぎりでやっている人って日本中にたくさんいるんじゃないかなって思います。
そういった人のためというとおこがましいですが、
当時は副業ブームもあり、「自分が覚えたスキルで誰かの役に立つ発信をしよう!そしてちょっとお小遣いももらえたらな(笑)」
これがブログを始めたきっかけです。
誰かの役に立っているのかわからないですが、少なくとも「誰かの役に立つものを発信する」と意識すると自分のスキルも段違いに上がっていくという体験はできました。
この原体験があるからこそ今もブログを続けられているんだと思います。
VBAでは物足りなくなったので次はPythonを学習
これまたおこがましいですが、
エクセルで実現したいことはよっぽどニッチな使い方でなければ、たいていVBAで自動化できるようになりました。
そんななかで気づいたことですが、
VBAってエクセルとかOutlookとかオフィス製品はめちゃくちゃ得意なんですが、
それ以外を操るのが超不得意なんです。
原理的にはできます。
例えばVBAでインターネットから情報を取得する方法もあります。
でも、途端に難易度が跳ね上がります。
今まで戦っていたのがピッコロ大魔王だとしたら
急にフリーザと戦闘することになったくらい難易度上がります(若い子わからない?)
エクセルでできることが大体できるようになったらVBAの卒業時期だなと思い、
他のプログラミング言語に手を出してみました。
そのほかのプログラミング言語で初心者向きかつ日本語で情報があふれている言語といえば
Pythonを抜いて他にありません。
というわけでPythonを学習してみました。
Pythonを使うとなんでもできる
少なくとも私にはそう感じます。
まだまだPythonができるとは言えない状態ですが、
データを編集し、ワードプレスから自動投稿まではできるようになりました。
当サイトでいうと
- 株価データから一定期間、一定間隔で定額で株購入した利益率の計算
⇒つまり積立投資の利益計算 - 同時に配当金の年次変化、利回り計算、増配率など配当金周りのデータも計算
- 海外ETF300種以上を対象に上記データをランキングで序列化
- データを公開し、皆さんの投資判断の一助になれば
(あくまで自己責任ですが!)
ここのシステムをもっと安定的に使えるようになりたいと思います。
ただ、どこかでこの方法も卒業し、djangoなどのフレームワークを覚えて
独自のウェブサービスを作っていきたいと思います。
Pythonを使えば、自分でウェブサービスを作ることも不可能ではありません。
今の私はこの状態です。
ウェブサービスを立ち上げるための勉強を続けています。
【追記】
完全自動更新のウェブサイトを作成しました!!!
Invest Explorerというサイトです。
Invest(投資)をExplorer(探索する)という意味を込めています。
ETFやマーケット情報(S&P500はもちろん、セクター別、国別、マグニフィセント(GAFAM+エヌビディア,テスラ)などの情報を毎日更新しています。
このサイトで得られること
このサイトで得られることを一言で表すなら
プログラミングを使った業務効率化方法と投資情報の解析結果の共有
です。
もう少しかみ砕いて言うと
VBA(エクセルを自動で操作するためのプログラミング言語)や
Python(ウェブ操作やデータ解析、AIなどで使用するプログラミング言語)を使って
様々なお仕事や日常生活を便利にするコードやツールを公開しています。
Pythonを使って付加価値のあるものの作成を目指しています。
Pythonを使って、海外ETF、国内個別株、米国個別株をデータ解析
例えばインデックス投資として人気のあるVTに10年間積立投資するとどれくらいの実績があったの?というのを実際に計算しています。
また、配当金が過去にどれくらい、どのタイミングで出て、過去から現在にかけて配当金は増えているのか、減っているのか、それらの傾向を分析しています。
プログラミング
VBAは大好きなプログラミング言語でずいぶん救われてきましたが、
手放しに良いといえるほど優秀な言語ではありません。
VBAのダメなところはずばり
どういうことか説明します。
プログラミングには配列という概念があります。
例えば果物で考えてみましょう
果物を保管するための箱があるとして、
そこにリンゴ、バナナ、メロンを入れておきます。
箱にラベルを張っておき、必要な時に果物箱を持ってきて、中の数を確認したり、リンゴを取り出して料理に使ったりします。
箱に入れずにテーブルに散らかったままだと、数の確認もしずらいし、いざ使うときに
どこにあるのかわかりずらいですよね。
なので、箱=配列に格納して、整理するということはプログラミングの基礎中の基礎です。
要は配列はプログラミングをするうえで非常に重要な概念なのですが、
VBAの配列は癖が強く、そのままでは使いにくい扱いとなっています。
さて、実際にコードを書いてみましょう。
コードがわからない方も何となく見てください
VBAで配列[リンゴ、バナナ、メロン]にもう一個リンゴを足してみましょう。
Sub array_test()
Dim arrs As Variant
arrs = Array("リンゴ", "バナナ", "メロン")
arrs(3) = "リンゴ"
End Sub
↑のコードは配列に[リンゴ、バナナ、メロン]を入れて、
そこに「リンゴ」をもう一個、最後に入れようとしています。
このコードは実行するとエラーを起こします。
なぜなら、配列のサイズは固定されるので、追加するためには配列の大きさを再定義する必要があります。
本格的にコーディングしていくとこれが不便で、
コードを書くだけでも大変なのに、サイズ(=要素数)を正確に把握して定義しないとすぐエラーで止まってしまいます。
そこで下記のように直感的に使える配列用のツールを開発しました。
下記の「add_Elm」関数を使うことで配列のサイズを気にせず自由に追加することが可能です。
Sub array_test2()
Dim arrs As Variant
arrs = Array("リンゴ", "バナナ", "メロン")
Call add_Elm(arrs, "リンゴ")
End Sub
自分で言うのもなんですが、
配列で生じるストレスが一つ減るので結構いいですよ。
少なくとも自分はVBAをコーディングするとき必ずといっていいほど重宝しています。
基礎的なVBAのコードの書き方とかpythonを使用するための環境構築とか
基礎の基礎は(ゼロではないですが、)あまり記事にしていません。
正直、この辺りは他のサイトさんの方が上手にまとめていたりしますし、
出来れば安いものでいいので、本やUdemyなどで手っ取り早く学習を済ませて
実践で何かツールを作っていくといいと思います。
その時にコピペで使えるような関数・ツールを無料で公開しています。
良かったら見ていってください。
下記ページにまとめています。
VBAをこれから覚えるか、どうか迷っている私と同じような非IT系でお仕事されている方、VBAは無駄になりません。もし少しでも興味があるならぜひ始めてみてください。
Pythonで株価データの解析
プログラミングの力を使って日常生活、特に金銭面でも豊かになろうと考えています。
つまり投資をプログラミングで解析してみます。
例えば、海外ETFとして人気のあるETFであるVTIというものがあります。
これは米国にまるっと投資できるインデックスETFで、厚切りジェイソンさんや中田敦彦さんに紹介されたこともある投資先なのですが、
これを2013年11月19日から2023年11月17日まで毎月100ドル投資するとどれくらいの資産になるか分かりますか?
めっちゃピンポイントな質問ですが(笑)
正解は23,877ドルです。
投資額は12,100ドルなので、
利益は11,777ドルで、利益率は97.34%です。
では、これを徐々にずらして、2013年11月18日から2023年11月17日までにすると?
2013年11月15日~2023年11月16日は?
これを繰り返して、ETF設立以来のデータでどの期間を区切っても10年投資で平均利益率を計算しています。
これは、何がしたいかというと、
ETFの潜在的なパワーを計り、今後、過去と同様の傾向が続くなら大体これくらいの利益が確保できるよね。という予想を得る一つの指標としていただければと思います。
他にも設立以来の配当金情報(各年の配当金、利回り、増配率、今後のシミュレーション)をETFで300銘柄以上、米国個別株3000種以上を分析しています。
詳しくはこちらから検索してみてください
短期的に売買を繰り返して利益を重ねる方法もあると思いますし、
プログラミングの力でそれを実現するのが夢でもありますが、
そのプログラミングで計算していくとやはりあれこれ小細工をするよりインデックス積立が最適解という結果に行き着きます。
インデックス積立や高配当投資でゴールを見据えつつ、
さらなる余剰資金があるなら、それを使ってインデックス積立を超える近道を探す
というのがバランスの取れた考えだと思います。
少なくとも私はそうやって目標金額に達しようと考えています。