右肩上がりの企業を抽出する方法です。決算情報の時系列から、グラフの傾きを計算するアプローチです。
上場企業は多い
決算データベースが出来たので、たくさん業績グラフが作れるわけなのですが、それじゃあ、良さそうなグラフにどんどん付箋をつけてこうってなりますよね?四季報に付箋をつけていくのと同じです。
グラフになってるぶん、PDFを見るよりずっと速く見ていけたのですが、いかんせん、数が多かったです。2018年の上場企業は、3700社くらいありました。グラフも同じだけできちゃいます。見るのが大変です。
いちばんイイのを頼む
そこで、右肩上がりの具合をランキングにして、良いほうから100社だけ見ていく、というアプローチをとることにしました。イメージとしては、エクセルのオートフィルタですね。
業績の傾きをエクセルファイルにして、エクセル上でランキングを好きに並べ替えるような感じです。そのエクセルファイルの作り方を紹介します。
その前に。手順に先立って、どの程度のものができたか?です。
業績で並べ替える
売上高がめっちゃ右肩上がりで、純利益もめっちゃ右肩上がりで、キャッシュもめっちゃ右肩上がりって感じで、順番に並べ替えていきます。
そんな企業が存在するのか?って思われるかもしれませんが、そのランキングからグラフを見ていったところ、イメージに近い企業が上に来てました。あとは程度の問題です。
今度は逆に、売上高が右肩さがりで、純利益も右肩さがりで、キャッシュも右肩さがりって感じで、並べ替えていきます。そんな企業が存在するのか?って思われるかもしれませんが、それらしい企業が上位に来てました。
ポイントは、上場直後の新しい企業を除外することでしょうか。上位を見ると、凄い傾きを示している企業がいっぱいあって、「変だな?」って調べたら上場1年目、2年目という企業たちでした。
データ不足で結果が粗くなってたわけですね。そこを除外したら、良い結果が集まりました。具体的には、決算データの個数を列に追加しておいて、エクセル上で少なすぎるものをフィルタしました。
そういうわけで、最終的に「これはなかなか良さそうだ!」ってなりました。
Excelファイルの作り方
Pythonで計算して、エクセルに保存します。計算するのは、右肩上がりか、否かです。つまるところ、直線の傾きですね。
Numpyのpolyfit()メソッド
業績のグラフとか見てると、だいたいこの辺に直線が引けそうだなって、よくありますよね?その傾きを数値化して、全上場企業の表を作るわけです。
直線っていうのは、例えばこんな感じです。
ほかにも、売上高の傾き・純利益の傾き・資産の傾き・キャッシュフローの傾き。それらを、全上場企業について計算します。Numpyのpolyfit()メソッドを使います。
「計算します」なんて、簡単に書きましたが、それには時系列データが要りますね。キレイにととのえた時系列が。
Pandasのmerge()メソッド
例えばですが、単純に「売上高」といっても、連結決算に移行したり、IFRSに移行したりで、種類が結構バラバラです。
なので、これらをつなぎ合わせて、「売上高」なら「売上高」いっぽんに集約しておきます。これには、Pandasのmerge()メソッドと、自前で優先順位をつけた集約リストを使います。
集約リストというのは、ざっくり以下のようなPythonリストです。自身で定義します。
['売上高(IFRS)',
'売上高(USGAAP)',
'売上高',
'売上高(IFRS 個別)',
'売上高(USGAAP 個別)',
'売上高(個別)']
これは、IFRS優先->US優先で、かつ、連結優先を狙ったリストです。上からこの順で存在するものを拾って、「売上高」いっぽんに集約しました。
Pandasのshift()メソッド
あとは、累計金額を四半期ごとの金額に直すところですね。Pandasのshift()メソッドで1四半期だけズラして引いて、変になった第1四半期のところだけ元のデータに戻してあげる、という感じで求めています。いろいろやり方はあると思います。
本決算のデータだけで求めた傾きと、四半期ごとのデータで求めた傾き。どちらが有用なのかは分からなかったので、両方計算できるようにしてみました。
pandasのconcat()メソッド
これで、傾きの計算に必要な時系列が揃いました。あとはもう、勘定科目ごとに傾きを計算して、それを全上場企業について連結するだけです。傾きの入ったデータフレームを、pandasのconcat()メソッドで連結します。
エクセルファイルは、pandas.DataFrameのto_excel()メソッドで作ります。
こうして、右肩上がりのランキングができたわけですが、いや、なかなか簡単ではなかったですね。
真に見たい企業から見ていく
まあ、日本の3000社なら、まだ何とかランキングに頼らなくても見ていける量かもしれません。しかしながら、そこに米国企業も加えて分析したいとなると、やはりランキングから見ていく必要が増すのではないかと、そう思うのであります。
例えばですが、業績が絶好調の企業群と、絶不調の企業群を比較したいと、そういう研究があったとします。そんな時にですね、ランキングがあって、見るべき企業群が分かっていれば、さっそく研究が始められます。スピードが全然違ってきます。
XBRLから決算データベースを作るのは、なかなか手間のかかるところですが、とりあえず可能でした。そして、証券会社や大手検索サイトのファイナンスページについても、徐々にですが、株価チャートに加えて業績グラフを提供するようになってきました。とても良い傾向だと思います。
そのうち、「株価チャートの形状から選ぶ」のと同じように、「業績グラフの形状から選ぶ」みたいな機能が提供されるんじゃないかなって、そんなふうに思っています。