目次。
この文章を読んで、面白い!役に立った!...と思った分だけ、投げ銭していただけると嬉しいです。
【宣伝】ギターも歌も下手だけど、弾き語りをやっているので、よければ聴いてください。
はじめに。
株式自動売買プログラム開発関連の文章は、以下のカテゴリーにまとめているので、興味のある方はどうぞ。
前回は、3本の移動平均線を使った株式売買判断プログラムを書いてみた。
今回は、上場企業全ての中間・期末配当情報を収集するプログラムを書いてみた。
いつもは、書いたソースコード(プログラムのコード)をブログに載せているが、今回のコードは、証券会社のwebページの構造にかなり依存していて、一般性がないので載せていない。
前回の文章が特にそうであるが、ソースコードをプログに載せて、「むっちゃ文章書いています感」を演出していたが、この文章には、ソースコードを載せないので、それができない。
そんなわけで、文章のかさ増しの意味を込めて、「株式配当」にまつわる僕の失敗談でも最後に書こうと思う。
株式配当とは?
株式を保有していたら勝手に入ってくるお金のこと。
株式会社は、株式を発行して、周りの人からお金を集めて(周りの人に投資してもらって)、事業を行う。そして株式会社は、投資してくれたお礼に株主に定期的に利益の一部を還元する。それが配当。上場企業の配当利回りは、平均で年2%くらいらしい。100万円分の株式を保有していたら、何もしなくても勝手に年2万円くらい財布に入ってくる。定期預金の利子は、ほぼ0%に近いので、「貯金じゃなくて、株式を買った方がいいよ」って言われたりする(もちろん株式は、元本割れのリスクがあるので、必ずしも貯金より優れているとは言えない)。
会社の経営者とかは、役員報酬(給料みたいなやつ)に加えて、自身が保有している自社株からの配当で膨大なお金を得ていたりする。(…羨ましい)
どれくらい株式を保有していれば、配当がもらえるのか?
…多分、知らない人が多いと思う。もちろん、株式売買をしている人は知っていると思うが。
実は、株式を「1日」だけ保有すれば、配当がもらえる。もちろん好きな時に「1日」だけ保有しているだけではダメで、配当を貰いたければ、権利落ち日(配当落ち日)の1営業日前(権利付き最終日)に株式を買わなければならない。
ある銘柄の売買が成約しても、実際にモノ(株式)が動くのに成約日を入れて、3営業日必要である(2020年5月時点)。
1営業日:権利付き最終日
→2営業日:権利落ち日(配当落ち日)
→3営業日:権利確定日
この権利確定日に株式を実際に保有していることが配当を貰うために大事なことで、売買が成約してから実際にモノ(株式)が動くのに3営業日かかるので、権利落ち日(配当落ち日)の1営業日前に株式を買う必要がある。
権利落ち日(配当落ち日)はいつ?
大体の企業は、3月末のイメージがある。3月決算の企業が多いので。けれども、3月以外の会社もあって、上場企業全体で見ると、権利落ち日(配当落ち日)は毎月あると思う。
例えば、3月、6月、9月、12月に権利付き最終日があるA社、B社、C社、D社があり、その配当の年間利回りはそれぞれ2%だったとする。3月に100万円分のA社の株式を買って、権利付き最終日の後に売って、6月に100万円分のB社の株式を買って、権利付き最終日の後に売って、、、を繰り返すと、100万円の元本で年間8万円の配当が得られる。実質的な利回りは、なんと8%!
中期配当と期末配当。
しかし、ここで面倒くさい点が1つ。多くの企業は、年間の配当を2つに分けで出す。中には、年4回に分けて配当を出す企業もあったりする(四半期配当)。そして、分割された配当を全額きちんと手に入れるためには、配当落ち日の1営業日前に加えて、中配落ち日の1営業日前にも株式を買わなければならない。
高配当株を紹介するサイトは、たくさんあるが、どれも年間利回りで比較したものばかり。中間配当・期末配当といった形で配当が2つに分割されて出されるということは考慮されていない。「利回りが年4%の高配当株!」と紹介されていたとしても、その企業が四半期配当をやっているのであれば、100万円分の株式を1日保有して得られるのは4万円ではなくて、1万円である。
A社、B社、C社、D社の年間配当利回りが2%だったとしても中間配当と期末配当があり、中配落ち日がそれぞれ9月、12月、3月、6月にあったとしたら、先ほど紹介した戦法で得られるのは、8万円ではなく、4万円。実質的な利回りは、8%ではなく、4%である。
そのため、上場企業の配当情報を収集する際には、期末配当に加えて、中間配当も考慮に入れなければならない。
株式を長期保有するのであれば、年間利回りの高い銘柄を選べばよいが、さっき言ったみたいに、ちょこちょこ株式を売買して、複数の企業から年中、配当を得たいのであれば、「年間利回り」ではなく、「配当(中配)落ち日の1営業日前に株式を買ったときに得られる利回り」を考えないといけない。そして、先ほど言った通り、後者の情報を元にした「高配当株ランキング」は、ほとんどない。
仕方ないので、後者の情報を加味した「高配当株ランキング」を作るために上場企業全ての中間・期末配当情報を収集するプログラムを書いた。
失敗談。
失敗したのは、今から2年以上前の学部4年の頃の話。
実は、このプログラムを最初に書いたのは、学部4年の頃(今回、改めて書き直した)。当時は、Pythonではなくて、Javaで書いた。前にも言ったが、株式自動売買プログラム開発を始めたのが、学部4年の頃で、証券会社のwebサイトに自動ログインするコードも全てJavaで書いていた。
Pythonは、高校の時に勉強したが、特に使うことはなかった。しかし、修士1年の頃に取った機械学習の講義で取り扱っているソースコードがPythonだったのがきっかけで、Pythonの文法書をもう一回読んで、本格的にPythonでプログラムを書くようになった。
学部4年の頃、中間・期末配当情報を収集するプログラムを書いて、実際に情報を集めた。得られた結果を見ると、3月が多いものの、毎月、どこかの企業の配当(中配)落ち日があるということに気がついた。
そして当時は、「1月末に1月が配当(中配)落ち日の株式を買って、2月頭に売って、2月末に2月が配当(中配)落ち日の株式を買って、3月頭に…を繰り返せば、年利10%以上いくのでは?」といった具合に思っていた。
もちろん、「株価は、配当(中配)落ち日に近づくに従って、徐々に上昇し、配当(中配)落ち日に下落する傾向がある」ということは知っていた。そのため、毎月、配当(中配)落ち日の前に株式を買って配当を得るか、もしくは配当(中配)落ち日の直前に売って、売却益を得ようと考えていた。
当時、株式自動売買プログラムで具体的に開発できていたのは、先ほどの自動ログインのコードと配当情報を収集するコードの2つ。自動ログインのコードは、自動売買では重要なコードであるが、それ単体では何の意味もない。
「株式自動売買プログラム開発を始めたばっかりだけれども、とりあえず何かしら株式売買をやりたい」だなんて、学部4年の1月くらいに思って、収集した情報を元に配当(中配)落ち日が3月末の株式をたくさん買った。「配当(中配)落ち日に向かって株価が上がる傾向があるので、落ち日直前に株価が十分高ければ売却して、そうでなければ保有し続けて配当で利益を得よう」とは、考えていたものの、何%以上、上昇すれば、株式を売って、損切はどの辺でやるのかといった具体的な売買ルールは決めていなかった。何となく、株価が上がれば売って、そうでなければ保有しておこう…完全な見切り発車である。
この戦略に則って、株式を買ったのは2028年の1月くらい。ご存知の人もいると思うが、この頃の日経平均株価は、どんどん下がっていた。僕が買った株式も、このトレンドに乗って、どんどんと下がっていき、初めて大きめの含み損を抱えてしまった…。
配当(中配)落ち日に近づくにつれて株価が上昇する傾向があると言われているが、その傾向は他の経済的な要因によって、吹き飛ばされることがある。株式売買しようとしている日が配当(中配)落ち日にどれだけ近いかは、重要な指標ではあるが、それだけだと利益を上げることはできない。
この文章を読んで、面白い!役に立った!...と思った分だけ、投げ銭していただけると嬉しいです。