Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
49
Help us understand the problem. What is going on with this article?
@revvve44

コロナ前後で伸びた企業を分析してみた【日本編】

yahoo_finance_jp01.png

はじめに

どうも、プラチナ☆みゆきです。

2019年12月

突然だが、上の暦を聞くと何を連想するだろう?
そう、COVID-19である。

2019年2月に中国武漢でCOVID-19が観測されてから、世界のルールは劇的に変化したと感じる。
今回はコロナ後に変わったルールの中で伸びている日本企業を分析していきたいと思う。

世界編はこちら

分析の方針

コロナ前後で伸びた企業を分析するのに一番手っ取り早い方法は、企業ごとに売上高の対前年度比(YoY)を見ていくことだろう。
しかし、投資機関やアナリストは主要企業のYoYを一覧で確認することができるかもしれないが、少なくとも私はそんなデータベースを知らない。
企業ごとに決算資料を確認していけばわかるだろうが、そんなことを日本の主要企業すべてに実施していたら年を越してしまう。
まだ、除夜の鐘は聞きたくないのだ。

それでは、YoYの代わりとなる指標を考えよう。
少なくともYahooファイナンス等でデータが網羅されている指標が望ましい。

ということで、YoYの代わりに株式の指標をもとに日本企業の成長率を分析していくこととする。
コロナ前とコロナ後の値上がり率が一発で確認できれば良いが生憎値上がり率は最大でも月次でしか取得できない。

そこで、今回はyahoo-finance-api2を利用して、コロナ前後の株価の変動を取得していく。

※昔はYahoo finance公式のAPIがあったそうだが現在はなくなってしまったので、その代わりとしてyahoo-finance-api2を利用する。

分析手順

  1. Yahooファイナンスから企業コードの取得
  2. yahoo-finance-api2を利用してコロナ前後の株価を取得
  3. コロナ前後で伸びたor落ちた企業のYoY調査

1. Yahooファイナンスから企業コードの取得

まずは分析対象とする日系企業を選定する必要がある。
2021年6月2日現在、日本の上場企業数は3,768社らしいが、今回は日経225にちなんで約225社を時価総額が高い順に日本の主要企業として選定する。

それでは、Yahooファイナンスの時価総額が高い企業の企業コードをスクレイピングしていく。

search_code.py

import requests
from bs4 import BeautifulSoup as bs

def main(url):
    # requestsによってhtmlソースを取得
    res = requests.get(url)
    soup = bs(res.text, 'html.parser')

    # codeのtagを抽出
    code_soup = soup.find_all(class_="txtcenter")
    code_list = []
    for code in code_soup:
        a = code.find("a")
        try:
            if a.text != "掲示板":
                code_list.append(a.text)
        except AttributeError:
            pass

    # 企業名のtagを抽出
    company_soup = soup.find_all(class_="normal yjSt")
    company_list = []
    for company in company_soup:
        company_list.append(company.text)

    return code_list, company_list

total_code_list = []
total_company_list = []
for i in range(1,6):
    url = "https://info.finance.yahoo.co.jp/ranking/?kd=4&tm=d&vl=a&mk=1&p=" + str(i)
    code_list, company_list = main(url)
    total_code_list.extend(code_list)
    total_company_list.extend(company_list)


これを実行すると、時価総額が高い順に231社の企業コードを取得することができた(微妙に225社ではないのはご愛嬌)

2. yahoo-finance-api2を利用してコロナ前後の株価を取得

それでは、1で得た企業コードのリストを使ってコロナ前後の株価の変動を算出していく。
ここで、コロナ前後の株価の変動についてだが、各変数について以下のように定義する。

コロナ前の株価 = 2019年6月1日~2019年12月31日までの終値の平均
コロナ後の株価 = 2020年11月1日~2021年4月30日までの終値の平均
株価成長率 = コロナ後の株価 / コロナ前の株価

上述の3つの変数をyahoo-finance-api2で取得していき、Pandasによってcsv形式で出力する。

yahoo_finance.py

import pprint
import sys
import pandas as pd
import datetime as dt
from yahoo_finance_api2 import share
from yahoo_finance_api2.exceptions import YahooFinanceError
from search_code import total_code_list, total_company_list

def main(code, company):
    code = str(code)
    my_share = share.Share(code + '.T')
    symbol_data = None

    try:
        symbol_data = my_share.get_historical(share.PERIOD_TYPE_YEAR, 2,
                                            share.FREQUENCY_TYPE_DAY, 1)
        df = pd.DataFrame(symbol_data.values(), index=symbol_data.keys()).T
        df.timestamp = pd.to_datetime(df.timestamp, unit='ms')
        df.index = pd.DatetimeIndex(df.timestamp, name='timestamp')

    except YahooFinanceError as e:
        print(e.message)
        sys.exit(1)

    after_covid19 = df[(df.index >= dt.datetime(2020,11,1)) & (df.index <= dt.datetime(2021,4,30))]
    after_covid19 = round(after_covid19.close.mean())
    before_covid19 = df[(df.index >= dt.datetime(2019,6,1)) & (df.index <= dt.datetime(2019,12,31))]
    before_covid19 = round(before_covid19.close.mean())
    ratio = round(after_covid19 / before_covid19, 2)

    print("code: {}. company: {}".format(code, company))
    print(before_covid19, after_covid19, ratio)
    stock_df.loc[i] = [code, company, before_covid19, after_covid19, ratio]

stock_df = pd.DataFrame(columns=['企業コード', '企業名', 'コロナ前平均', 'コロナ後平均', '成長率'])
for i in range(len(total_code_list)):
    try:
        main(total_code_list[i], total_company_list[i])
    except Exception as e:
        print(e)

stock_df.to_csv("stock_jp.csv", encoding='utf_8_sig', index=False)
print(stock_df)

完成したcsvファイルがこちらである。
一応codeもこのリポジトリに格納している。

3. コロナ前後で伸びたor落ちた企業のYoY調査

それでは株価成長率上位10位と下位10位のYoYを確認して、実際に株価が上昇した企業は売上高や営業利益も上昇したのか確認していこう。
※株価は証券取引所によって差があるので今回はすべて東証一部の企業を対象としている。

上位9位タイ:(株)神戸物産

yahoo_finance_jp02.jpg

株価成長率:2.07
2021年1月期売上高:850億円
売上高対前年度比:4.2%
2021年1月期営業利益:70億円
営業利益対前年度比:24.9%
出典:同社決算資料

さて、上位の10番目はいきなり9位タイで神戸物産が入賞した。
神戸物産? どこぞや??
と思うかもしれないが、神戸物産はみんな大好き業務スーパーを経営する株式会社である。
業務と謳っておくおきながら一般のお客様大歓迎なのだ。まさに、市民の味方である。

上位9位タイ:東京エレクトロン(株)

yahoo_finance_jp03.jpg

株価成長率:2.07
2021年3月期売上高:1兆3900億円
売上高対前年度比:24.1%
2021年3月期営業利益:3200億円
営業利益対前年度比:35.1%
出典:同社決算資料

同じく9位タイとして入賞したのが東京エレクトロンである。
完全にtoBメーカーなので一般認知は低いかもしれないが、同社は半導体製造装置を主力事業としている。
ムーアの法則が作用する限り半導体業界は追い風だろうか。
近年は5Gモバイルやデータセンターの需要増により同社の売上も増加していることがわかるだろう。
また、同社はランクインした企業の中で一番時価総額が高く、現在時価総額13位の大企業である。

上位8位:太陽誘電(株)

yahoo_finance_jp04.jpg

株価成長率:2.08
2021年3月期売上高:3000億円
売上高対前年度比:6.6%
2021年3月期営業利益:400億円
営業利益対前年度比:9.7%
出典:同社決算資料

こちらも一般的には認知がないかもしれないがコンデンサの会社である。電気自動車の部品として利用されるので電気自動車の販売量が増加すれば同社も正比例して売上を上げるだろう。

上位7位:(株)MonotaRO

yahoo_finance_jp05.jpg

株価成長率:2.12
2021年12月期売上高:460億円
売上高対前年度比:24.6%
2021年12月期営業利益:60億円
営業利益対前年度比:33.4%
出典:同社決算資料

同社は工具や建設用具専門のECを運営する企業である。
ちょっとコーン(赤いやつ)が欲しい時とかに便利そうだ。

上位6位:(株)FOOD & LIFE COMPANIES

yahoo_finance_jp06.png

株価成長率:2.21
2021年9月上半期売上高:1190億円
売上高対前年度比:10.1%
2021年9月上半期営業利益:131億円
営業利益対前年度比:59.2%
出典:同社決算資料

お馴染みスシローを経営する企業である。
同社はコロナ禍で閉店する企業が多い中、半期で24店舗の新規出店をするなど強気の姿勢を見せている。
そんな姿勢が株主に伝わったのか高い株価成長率であった。

上位5位:イビデン(株)

yahoo_finance_jp07.jpg

株価成長率:2.23
2021年9月期売上高:3230億円
売上高対前年度比:9.3%
2021年9月期営業利益:380億円
営業利益対前年度比:96.3%
出典:同社決算資料

同社は岐阜県大垣市に本社を置く半導体基板製造企業である。コロナ禍によりデバイス需要に拍車がかかったことが成長の要因であろうか。

上位4位:(株)ネクソン

yahoo_finance_jp08.jpg

株価成長率:2.23
2021年12月期売上高:880億円
売上高対前年度比:7%
2021年12月期営業利益:430億円
営業利益対前年度比:4%
出典:同社決算資料

4位にランクインしたのはゲーム業界のメイプルストーリーでお馴染みのネクソンである。YoYを見ると業績が上昇したわけではなさそうだが、株価の方は倍増していた。

上位3位:(株)カプコン

yahoo_finance_jp09.jpg

株価成長率:2.54
2021年3月期売上高:950億円
売上高対前年度比:17%
2021年3月期営業利益:340億円
営業利益対前年度比:52%
出典:同社決算資料

4位のネクソンと同じゲーム業界としてランクイン。
同社はモンスターハンターやバイオハザードなどのビッグタイトルが注目されるが、eスポーツ業界の成長にも期待していきたいところ。

上位2位:エムスリー(株)

yahoo_finance_jp10.jpg

株価成長率:3.48
2021年3月期売上高:1690億円
売上高対前年度比:29%
2021年3月期営業利益:580億円
営業利益対前年度比:69%
出典:同社決算資料

株価成長率2位は文字通り医療界の怪物、エムスリー社が3位と1近くの株価成長率の差をつけて堂々のランクイン。時価総額ランキングも高く、2000年の創業で現在時価総額27位である。
今後もCOVID-19の蔓延で大きく変わろうとしている医療業界のDXを支えるメインプレイヤーとしての活躍が期待できる。

上位1位:レーザーテック(株)

yahoo_finance_jp11.jpg

株価成長率:4.01
2021年6月期売上高:320億円
売上高対前年度比:61.6%
2021年6月期営業利益:120億円
営業利益対前年度比:50.9%
出典:同社決算資料

栄えある1位に輝いたのはまたしても半導体製造装置企業であるレーザーテック社だ。
半導体関連の企業が3社もランクインしたことから、コロナ後も半導体の需要が増加し続けたことが予想できる。
コロナ前から株価は4倍にも跳ね上げり、各種YoYも50%強の増加率からさぞ優良な投資先であったことが推測される。


さて、ここからは上位に代わって下位5組を発表する。

下位4位タイ:東急(株)

yahoo_finance_jp13.png

株価成長率:0.68
2021年3月期売上高:9539億円
売上高対前年度比:-19.6%
2021年3月期営業利益:-316億円
出典:同社決算資料

下位4位タイとなった企業は鉄道会社である東急グループであった。同社はコロナの影響で主要セグメントである鉄道事業から、ホテル・百貨店事業まで軒並み減収の結果となった。
今後も人の移動がコロナ前まで回帰することを期待するか、人の移動にある程度縛られない新たな打ち手を確立できるかが鍵となっていきそうだ。

下位4位タイ:(株)INPEX

yahoo_finance_jp14.jpg

株価成長率:0.68
2020年12月期売上高:7710億円
売上高対前年度比:-34.2%
2020年12月期純損益:-1116億円
出典:同社決算資料

同じく下位4位タイとなったのはエネルギー業界からINPEXである。同社は石油・天然ガスの生産事業を生業としているため、原油価格の下落がダイレクトに業績悪化に影響したと思われる。

下位3位:ANAホールディングス(株)

yahoo_finance_jp15.jpg

株価成長率:0.66
2021年3月期売上高:7286億円
売上高対前年度比:-63%
2021年3月期営業利益:-4647億円
出典:同社決算資料

下位3位となったのは航空旅客業界からANAであった。航空業界は渡航制限もあってこの1,2年は大変厳しい時期であったように思う。
コストの削減や貨物輸送の注力によってダメージを抑えてはいるものの人の移動の回復だけではない打ち手が求められそうだ。

下位2位:日本航空(株)

yahoo_finance_jp16.png

株価成長率:0.64
2021年3月期売上高:4812億円
売上高対前年度比:-65.3%
2021年3月期純損益:-2866億円
出典:同社決算資料

3位に続いて2位も航空業界であるJALが選出された。
ANAもJALも2021年卒からの採用を一時中止しており、今後の事業改革が急務とされている。

下位1位:西日本旅客鉄道(株)

yahoo_finance_jp12.jpg

株価成長率:0.62
2021年3月期売上高:8980億円
売上高対前年度比:-40.4%
2021年3月期営業利益:-2455億円
出典:同社決算資料

遺憾ながらコロナ前後の日本の主要企業で一番株価を落としたのはJR西日本という結果になった。
人件費を低減するためボーナスをカットしたり広告費をカットしたりと費用減につとめたが減収という結果になってしまった。

総括

コロナ前後での株価の変動を分析した結果、株価が伸びた業界は半導体周辺業界、医療業界、ゲーム業界ということになった。
反対に株価が落ちた業界は鉄道業界、航空業界、エネルギー業界であった。
また、他に注目すべき点として調査した231社中155社の株がコロナ前より上がっていたことが挙げられる。
コロナショック後に株価が回復するのはリーマンショック時と同じようだが、株式市場だけ過熱し実体経済が追いついていないように思えてしまう。

株式市場の過熱で忘れられそうだが、株式市場に表れない中小企業の倒産や労働者の賃金低迷事情はなかなか改善されそうになさそうだ。

参考

  1. APIを使った株式データの取得 – Yahoo Finance APIのすすめ
49
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
49
Help us understand the problem. What is going on with this article?