はじめに
新型コロナウイルス感染症が世界的に流行し始めたことによって,2020年2月末頃から3月にかけて,世界的に株価が大暴落しました(コロナ・ショック).日経平均株価は直前ピークと比べ,3割も暴落し約1万6千円の安値を付けました.
景気対策として行われた各国の中央銀行による大規模な金融緩和の影響もあり,5月以降株価の上昇傾向がはじまり,最近では日経平均株価は約2万8500円の値をつけ,30年5か月ぶりの高値となりました.
最近の高値の要因としては,米国の追加の財政出動などへの期待が高まっていることもあるようです(【日経新聞】日経平均、30年ぶり2万8000円台回復 米財政出動期待で).
このように,日経平均株価はコロナ・ショック後から現在にかけて,常に上昇し続けています.そこで,個別銘柄についても同じように常に価格上昇しているものは存在しないのかについて疑問に思いました.
今回の記事では,**「コロナ・ショック後から株価上昇し続けている銘柄は存在するのか」**を東京証券取引所に上場している全銘柄の中から調査しました.その結果,株価上昇し続けている銘柄は15銘柄存在することがわかりました.
さらに,その15銘柄のうち,コロナショック後営業利益が上昇し続けている,またはV字回復している銘柄を選定したところ,より今後の株価上昇が期待できる銘柄として10銘柄に絞ることができました.
株価上昇し続けている銘柄は?
【検証方法】
・東京証券取引所に上場している全銘柄の株価データを,Yahoo FinanceのAPIを利用し,取得します.
・月ごとに株価上昇率を,データを取得した全銘柄について計算します.計算方法は,
株価上昇率=\frac{今月初日終値-前月初日終値}{前月初日終値}
です.株価上昇率の計算には休日を除く月初日の株価終値を利用しています.
・2020年5月から2021年1月まで (8か月間)の期間において,常に株価上昇率がプラスであるものを選択していきます.
※ データ取得,分析はすべてPythonでおこなっています.詳しい検証方法は記事の一番下の付録を参照してください.
【検証結果】
2020年5月から2021年1月までの期間において,株価が上昇し続けていた銘柄は15銘柄あることがわかりました.以下はその15銘柄のリストです.
- 株価上昇し続けている15銘柄
証券コード | 銘柄名 | 1か月の株価上昇率(%) |
---|---|---|
1400 | ルーデン・ホールディングス | 10.03 |
1431 | Lib Work | 13.95 |
2413 | エムスリー | 14.33 |
2484 | 出前館 | 16.72 |
3922 | PR TIMES | 19.12 |
3948 | 光ビジネスフォーム | 4.44 |
4673 | 川崎地質 | 7.32 |
5217 | テクノクオーツ | 12.71 |
6365 | 電業社機械製作所 | 7.60 |
6391 | 加地テック | 11.79 |
6563 | みらいワークス | 12.36 |
6622 | ダイヘン | 6.90 |
6723 | ルネサスエレクトロニクス | 13.37 |
7975 | リヒトラブ | 2.77 |
9468 | KADOKAWA | 12.0 |
PR TIMES,エムスリー,KADOKAWA,出前館(情報通信サービス業を展開)は特に高い株価上昇率となっており,株価上昇率だけを見ると,今後も株価上昇が大きく期待できる銘柄と言えるでしょう.そのほかには,建築業,機械,電気機器メーカーなど様々な業種がリスト入りしています.
以下のグラフは,各銘柄の株価上昇率の推移です.
2-4月はコロナショックで,ほとんどの銘柄に関して,株価が大きく下落しています.しかし,その後,5月以降は常に株価が上がっていることがわかると思います.
特徴的なものとして,医療情報系ベンチャー企業であるエムスリー(2413)はコロナショックでも,ほとんど株価が下がることはなく,その後常に株価を上げてきました.ルネサスエレクトロニクス(6723)はコロナショックによって,40%以上株価を下げましたが,その後40%株価を上げ,コロナショック後,常に株価を上げてきました.出前館(7975)は9月の株価上昇率が60%を超えており,株価が急上昇しました.
さらに,15銘柄の営業利益の状況をみて,今後株価上昇が期待できそうな銘柄を考えていきます.
- 四半期売上・営業利益の状況
さらに,株価上昇し続けている15銘柄の四半期売上・営業利益の状況です.
| 証券コード| 銘柄名 | 売上
1Q| 売上
2Q| 売上
3Q| 営業利益
1Q|営業利益
2Q|営業利益
3Q|
| :--: | :--: |:--:|:--:|:--:|:--:|:--:|:--:|:--:|
| 1400 | ルーデン・ホールディングス|722|577|623|35|-9|28|
| 1431 | Lib Work |962|1230|1011|-68|-77|-195|
| 2413 | エムスリー |34654|35478|39544|7404|11253|12678|
| 2484 | 出前館 |2994|3484|4228|-619|-1015|-3194|
| 3922 | PR TIMES|819|922|1028|277|354|472|
| 3948 | 光ビジネスフォーム|1695|2045|1705|57|190|123|
| 4673 | 川崎地質|2979|1549|1980|345|-58|39|
| 5217 | テクノクオーツ|2341|3020|3175|334|613|662|
| 6365 | 電業社機械製作所|10875|2938|3517|2322|-152|53|
| 6391 | 加地テック|2263|772|1234|242|2|177|
| 6563 | みらいワークス|1095|1014|1034|26|14|13|
| 6622 | ダイヘン|44770|30546|32485|4521|1150|2532|
| 6723 | ルネサスエレクトロニクス|178743|166672|178678|13313|17256|17249|
| 7975 | リヒトラブ|2466|1920|2006|210|47|129|
| 9468 | KADOKAWA|54476|47023|50530|-373|3581|4266|
(単位:百万円)
1Q:1~3月,2Q:4~6月,3Q:7~9月(川崎地質のみ、1Q:3~5月、2Q:6~8月、3Q:9~11月)
以下は各銘柄の営業利益をグラフにしたものです.営業利益の絶対値が大きいものと小さいもので分けています.
表やグラフから,15銘柄にうち、営業利益が右肩上がり,または,V字回復している銘柄は以下の10銘柄です.
・ルーデン・ホールディングス
・エムスリー
・PR TIMES
・光ビジネスフォーム
・テクノクオーツ
・加地テック
・ダイヘン
・ルネサスエレクトロニクス
・リヒトラブ
・KADOKAWA
また,出前館は,上記で示したように,高い平均株価上昇率を示していましたが,今回提示したリストには含まれておらず,営業利益の状況を見てみると赤字が拡大し続けているので,危険な投資先とも言えるかもしれません.
おわりに
コロナショック後(2020年5月から2021年1月までの期間),東証に上場している全銘柄の中で,株価が上昇し続けていた銘柄を調査したところ,15銘柄あることがわかりました.さらに,そのうちの4半期の営業利益を調べたところ,10銘柄は右肩上がり,またはV字回復しているということがわかりました.その10銘柄は以下の通りです.
- ルーデン・ホールディングス
- エムスリー
- PR TIMES
- 光ビジネスフォーム
- テクノクオーツ
- 加地テック
- ダイヘン
- ルネサスエレクトロニクス
- リヒトラブ
- KADOKAWA
株価が上昇し続けている,営業利益が右肩上がり,またはV字回復であることを考えると,この10銘柄が今後も株価上昇が期待できます.
逆に,残りの5銘柄は上がり続けてはいますが,少し注意が必要でしょう。
付録(検証方法)
- 準備
・フォルダ「data」を作成します.これは株価データを保存するための場所です.
・東証上場銘柄一覧(2020年12月末)にあるdata_j.xls
をダウンロードします.data_j.xls
をエクセルなどで開き,csvファイル(data_j.csv
)として,保存しなおします.Pythonではcsvファイルを読み込めるようにしているので,この操作をしています.
- 株価時系列データ取得プログラム
今回はPythonのライブラリpandas_datareaderを用いて,Yahoo Financeからデータを取得します.以下のプログラムは,data_j.csv
を参照して,東京証券取引所に上場している全銘柄の株価データを取得します.
全銘柄の時系列データを取得するので,かなり時間がかかります.途中でプログラムを止めても問題ないように,データ取得していない銘柄の時系列データのみダウンロードするように設計しています.したがって,タイムエラーなどによって,株価データ取得に失敗することがありますが,その場合はもう1度プログラムを実行すれば,その未取得データのみが取得できます.
import pandas as pd
import glob
import pandas_datareader.data as web
# 東証全銘柄リスト
def get_tokyo():
tokyo = pd.read_csv("data_j.csv", engine="python", names=("date","code", "name","market", "CodeIndustry33", "ClassificationIndustry33", "CodeIndustry17", "ClassificationIndustry17", "CodeScale", "ClassificationScale"), skiprows=1, usecols=[1,2], encoding="utf-8")
return tokyo
# 株価取得(日足) csv保存
def get_price_csv(stock_name,start='2015-1-1',end=None):
data = web.DataReader(stock_name,"yahoo",start,end)
data.to_csv("./data_price/"+stock_name+".csv")
def get_all(list_stock_name, dir_name, func, filetype='csv'):
for code in list_stock_name.code:
code = str(code)
if not ('.T' in code):
code+='.T'
filename = '{}\\{}.{}'.format(dir_name, code, filetype)
if filename in glob.glob(f"{dir_name}/*"):
pass
else:
print(code, 'GET... ', end='')
try:
func(str(code))
print('SUCCESS')
except Exception as e:
print('FAIL:', e)
if __name__ == '__main__':
list_stock_name = get_tokyo()
get_all(list_stock_name, './data_price', get_price_csv) # 株価取得
- 分析プログラム
以下のプログラムは,ダウンロードした時系列データを読み込み,各月の株価上昇率を計算し,2020年5-2021年1月において,常に株価が上昇している銘柄を選択します.
最後に各月の株価上昇率,その平均値の結果がcsvファイルとして保存されます.このとき,各月の株価上昇率のグラフの作成されます.
import pandas as pd
# 東証上場全銘柄のリスト
def get_tokyo():
tokyo = pd.read_csv("data_j.csv", engine="python", names=("date","code", "name","market", "CodeIndustry33", "ClassificationIndustry33", "CodeIndustry17", "ClassificationIndustry17", "CodeScale", "ClassificationScale"), skiprows=1, usecols=[1,2], encoding="utf-8")
return tokyo
# 価格の時系列データフレーム作成
def make_df_price(list_stock_name, item):
data = {} # 自己資本
stock_name = str(list_stock_name.code[0])
if not ('.T' in stock_name):
stock_name+='.T'
dummy = pd.read_csv('./data_price/' + stock_name + '.csv')[item]
for code in list_stock_name.code:
stock_name = str(code)
if not ('.T' in stock_name):
stock_name+='.T'
try:
data[stock_name] = pd.read_csv('./data_price/' + stock_name + '.csv', index_col=0)[item]
except:
data[stock_name] = dummy # エラー発生時はダミーを入れる
return pd.DataFrame(data)
# 東証上場全銘柄のリスト作成
list_stock_name = get_tokyo()
# 価格の時系列データフレーム作成
df_closes = make_df_price(list_stock_name, 'Close')['2020-01-06':'2021-01-04']
# 特定の日の株価データフレーム作成
df_closes2 = df_closes.loc[['2020-01-06',
'2020-02-03',
'2020-03-02',
'2020-04-01',
'2020-05-01',
'2020-06-01',
'2020-07-01',
'2020-08-03',
'2020-09-01',
'2020-10-02',
'2020-11-02',
'2020-12-01',
'2021-01-04',]]
# 株価上昇率の計算
result = ((df_closes2-df_closes2.shift(1))/df_closes2.shift(1)*100).T
# 2020年5月から収益率がプラスのものを検索
result_rise = result[#(result['2020-02-03']>0)&\
#(result['2020-03-02']>0)&\
#(result['2020-04-01']>0)&\
(result['2020-05-01']>0)&\
(result['2020-06-01']>0)&\
(result['2020-07-01']>0)&\
(result['2020-08-03']>0)&\
(result['2020-09-01']>0)&\
(result['2020-10-02']>0)&\
(result['2020-11-02']>0)&\
(result['2020-12-01']>0)&\
(result['2021-01-04']>0)
]
# 証券コードと銘柄名の対応表を作成
result_rise_name = pd.DataFrame(index=list(result_rise.index), columns=['name'])
for stock_code in list(result_rise.index):
result_rise_name.loc[stock_code] = list_stock_name[list_stock_name.code == int(stock_code[0:-2])]['name'].iloc[0]
# 結果リスト
mean = pd.DataFrame(result_rise.T['2020-05-01':'2021-01-04'].mean(), columns=['ave'])
result = pd.concat([result_rise, result_rise_name, mean], axis=1)
# 結果を出力
result = result.drop(['1329.T', '1365.T', '1626.T', '2068.T'])# ETFは除く
result.to_csv('result.csv', encoding="cp932")
print(result)
# グラフ作成
result_rise.T.plot(figsize=(9, 6), title='Return')