米株銘柄でゾンビ株を探そう!
こういうツイートがありました。
ゾンビ銘柄とは
このツイートによるとゾンビ銘柄とは、
* 3年平均EBIT/金利コスト < 1
* market cap > $300million
のに条件を満たす銘柄のようです。
EBITとは、簡単に言ってしまうと、
会社が稼いだお金からコストを引いたもの。ただし、借金の金利と税金はまだ引いていない数字。
つまり、EBITよりも金利コストが大きければ、稼いだ金で借金を返せない会社、という事になります。
借金が大きすぎる会社って景気が悪くなるとヤバイよね?なんで生きてんのかわかんなくない?=ゾンビということっぽい。
で、このツイートの人は、そんなゾンビの株価がSPをオーバーウェイトしてんだけどwwwww(笑ってるかはしらんが)言ってると思われます。
ゾンビを探せ!
じゃ、いつもの通り Quantopian で探してみましょう!解説に貼ってある画像に、
Zombie companies = Three-year average EBIT / int exp ratio than 1 and market cap greater than $300 million
とありますので、これに当てはまる銘柄を探します。
EBIT
Quantopian では MorningStar がだしている EBIT 情報がありますので、これをサクッと使います。
EBITの三年平均を出すには、下記コードのように SimpleMovingAverage を使うといいでしょう。
ついでに、先日紹介した financial_health_grade も使ってみます。
import numpy as np
from quantopian.pipeline import Pipeline
from quantopian.research import run_pipeline
from quantopian.pipeline.data import USEquityPricing
from quantopian.pipeline.data.morningstar import Fundamentals
from quantopian.pipeline.filters import QTradableStocksUS
from quantopian.pipeline.factors import SimpleMovingAverage
def make_pipeline():
base_universe = QTradableStocksUS()
close_price = USEquityPricing.close.latest
ebit = Fundamentals.ebit.latest
ebit_ma_3year = SimpleMovingAverage(
inputs=[Fundamentals.ebit],
window_length=252 * 3
)
interest_expense = Fundamentals.interest_expense.latest
market_cap = Fundamentals.market_cap.latest
ebit_interest_expense = ebit_ma_3year / interest_expense
financial_health_grade = Fundamentals.financial_health_grade.latest
# interest_expense > 0 を追加したのは、金利をもらっている会社をはずしたいから
zombies = (ebit_interest_expense < 1) & (market_cap > 3000000 ) & (interest_expense > 0)
return Pipeline(
columns={
'close_price':close_price,
'ebit':ebit,
'ebit_ma_3year':ebit_ma_3year,
'market_cap':market_cap,
'interest_expense':interest_expense,
'ebit_interest_expense':ebit_interest_expense,
'zombies':zombies,
'financial_health_grade':financial_health_grade,
},
screen=base_universe,
)
## とりあえず直近のデータだけ取得する
pipeline_output = run_pipeline(
make_pipeline(),
start_date='2020-6-1',
end_date='2020-6-5'
)
今日現在、ゾンビ状態で、DクラスにいるSP500構成銘柄
2020/06/05現在で、ゾンビ状態にあるDクラスのSP500構成銘柄があるかどうか確認します。SP500銘柄は、 wikipedia からリストを手動で作成しました。
zombies = pipeline_output[(pipeline_output["zombies"])
& (pipeline_output["financial_health_grade"]=="D")].index.get_level_values(1).unique()
[sym for sym in list(map(lambda x: x.symbol, zombies)) if sym in sp500_composites]
['APA', 'NBL', 'COTY', 'DXC']
いました。ではこの4銘柄のYTDの動きを見ます。
from quantopian.research import prices, symbols
start='2020-01-01'
end='2020-6-5'
zombies_sym = [symbols(sym) for sym in list(map(lambda x: x.symbol, zombies)) if sym in sp500_composites]
close_price_zombies = prices(assets=zombies_sym,start=start, end=end,)
(close_price_zombies/close_price_zombies.shift(1)).cumprod().plot()
3月の一番底から見ると、 $COTY は戻っていないように見えますが、ほか3つは戻っているように思えますね。
特にAPAとNBLはかなり戻しています。
戻している会社を調べる
APA
* 天然ガス、原油、液体天然ガス(NGLs)の探鉱・開発・生産を行う独立系エネルギー企業。2019年12月31日現在、原油5億5,100万バレル、NGLs1億8,600万バレル、天然ガス1兆6,000億立方フィートの総推定埋蔵量を有している
あー原油で上げてるのかな。
NBL
原油・天然ガスの取得、探査、開発、生産。20億5,000万バレルの石油換算の総証明埋蔵量
あーお前もか。
今後、大きく原油が下がるようなニュースがあった場合や、二番底に向かいそうな場合、もしくは金利が大きく上がりそうな場合(今、長期金利は上げつつありますね)、この2つはショート対象として考えてもいいかもしれません。
追記
リズ姉さんが、またゾンビの話をしていました。
Russell2000のゾンビヤバイ、って言ってる感じかな。