Python3ではじめるシステムトレード：新型コロナで見ておくべきバイオ・ヘルス株 2021/2/2 update


新型コロナウイルスに影響を受ける世界で、何が社会への貢献になるのだろうと考えたことはありませんか。ワクチン開発とか、治療薬の開発が注目を浴びています。特に、ワクチン開発においては今までと違う方法で開発が行われていて、コロナ禍だけではなく、今後も注目されています。また、ワクチンを世界にくまなく配布することを考えると、ワクチン開発ベンチャーだけではなく、大手製薬会社、医薬品一般を扱う企業の役割が注目されます。


# 世界の製薬・医薬品会社
製薬・医薬・ワクチン開発に関わる業界とそれに関連する株式市場の全体像をつかみます。

## 世界の製薬会社トップテン(売上高ベース2019年12月決算)

||会社|国籍|株価コード|
|:-:|:-:|:-:|:-:|
|1|ロッシュ|スイス|RHHBY|
|2|ファイザー|米国|PFE|
|3|ノバルティス|スイス|NVS|
|4|メルク|米国|MRK|
|5|GSK|英国|GSK|
|6|J&J|米国|JNJ|
|7|サノフィ―|フランス|SNY|
|8|アッヴィ|米国|ABBV|
|9|武田薬品工業|日本|TAK|
|10|ブリストル|米国|BMY|
参考：https://answers.ten-navi.com/pharmanews/18365/
その他参考：https://www.value.today/world-top-companies/health-care

まずは株価をダウンロードしてグラフにしてみましょう。最初に準備をします。

Python3を用いてデータをダウンロードするためには、jupyter notebookとpandas-datareaderがお勧めです。jupyter notebookのインストールについては[Python3ではじめるシステムトレード：Jupyter notebookのインストール](https://qiita.com/innovation1005/items/2f433d6d859f075033a7)を参考にしてください。ここにpandas-datareaderのインストールの説明もあります。また、[Yahoo Finance USから株価をダウンロードしてみた](https://qiita.com/innovation1005/items/5be026cf7e1d459e9562)を参考にしてください。

```Python
# 初期化
import matplotlib.pyplot as plt #描画ライブラリ
import pandas_datareader.data as web #データのダウンロードライブラリ
import numpy as np
import pandas as pd
from statsmodels.tsa.stattools import adfuller
```

```Python
TOP10=['RHHBY','PFE','NVS','MRK','GSK','JNJ','SNY','ABBV','TAK','BMY']
i=1
for asset in TOP10:
    tsd = web.DataReader(asset,"yahoo",'1980/1/1').dropna()#jpy
    ts=tsd.loc[:,'Adj Close']/tsd.iloc[0,5]
    np.log(ts).plot(label=str(asset))
    if i==5:
        plt.legend()
        plt.show()
        i=0
    i+=1
if i!=1:
    plt.legend()
    plt.show()      
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267055/587b26aa-a73d-8c53-18d8-d82814f54d28.png)

株価は対数を取っています。対数を取る理由は株価の桁上がりによる直近の株価の上下動が誇張されてしまうことを避けるためにです。

多くの企業の株価が右肩上がりであることが分かります。

## バイオ・ヘルス関連EFT
米バイオ・ヘルスセクターの大まかな傾向をつかむために、それぞれの上場投資信託を見てみましょう。

### IBB

米国で有名なバイオ関連銘柄に投資するETF(上場投資信託)です。　

```Python
tsd = web.DataReader("ibb","yahoo","1990/1/4").dropna()#jpy
np.log(tsd.loc[:,'Adj Close']/tsd.iloc[0,5]).plot(label='with dividend')
np.log(tsd.loc[:,'Close']/tsd.iloc[0,3]).plot(label='close')
plt.legend()
ibb=tsd
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267055/bf4b59dc-7a17-b055-2003-e5242095d8e7.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267055/eef21995-5d57-77c0-a693-2345c7e52d1f.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267055/d7e3e000-776d-c316-b815-1e1f0806b5f5.png)

出所：https://www.blackrock.com/jp/individual/ja/products/239699/ishares-nasdaq-biotechnology-etf
表の見方ですが、保有比率は保有株数が一定であっても日々の株価の動きにより変化します。

### XLV

米国で有名なヘルスケア関連のETFはXLVです。

```Python
tsd = web.DataReader("xlv","yahoo","1990/1/4").dropna()#jpy
np.log(tsd.loc[:,'Adj Close']/tsd.iloc[0,5]).plot(label='with dividend')
np.log(tsd.loc[:,'Close']/tsd.iloc[0,3]).plot(label='close')
plt.legend()
xlv=tsd
```


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267055/86ab8869-3daf-c8f2-3f07-9d1722b7db6a.png)

青が配当込みの収益率なので配当の影響を理解できます。IBBとの大きな違いは青と橙の推移です。IBBはXLVより配当が少ないです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267055/160b0ec0-59c3-3d5f-e4c7-dad228146c5d.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267055/0c357b20-fc62-b4a0-b9c5-1fb375b2896c.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267055/2d1d365d-af3a-e84c-4b81-9cd328f0ae42.png)

出所：https://www.ssga.com/jp/ja/individual/etfs/funds/us-the-health-care-select-sector-spdr-fund-xlv

# 長期投資の株価の見方

- 保有
- 利益獲得目的の売買はしない。
    - 損切は決してしない
    - 利益が出るまで売却しない

## ディフェンシブ銘柄

景気動向に左右されにくい銘柄をディフェンシブ銘柄といいます。医薬品株は典型的なディフェンシブ銘柄です。その他に、生活必需品である食品や社会インフラである電力・ガス、鉄道、通信などの企業がディフェンス銘柄になります。

## 評価の仕方

長期投資の銘柄分析として配当を考慮することと金利水準を考慮することが大事です。また、価格の推移を可視化するときには[価格の対数を取る](https://qiita.com/innovation1005/items/5460a440b72c3c46375b)必要があります。

そこで[fred](https://qiita.com/innovation1005/items/edcf78cbf89477b3b0a7)から米国金利をダウンロードして、配当込みの株価を[us yahoo finance](https://qiita.com/innovation1005/items/5be026cf7e1d459e9562)からダウンロードします。

そして株価の配当込み利回りから金利を引くことで長期投資の目安とします。

### fredから1年金利のダウンロード
金利を可視化した後に、あとで使いやすいように250日でわって、1日のリターンに変換しておきます。

```Python
ror = web.DataReader("DGS1","fred","1980/1/4")#jpy
ror.plot()
ror = ror/250/100#jpy
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267055/5e4568d1-ca38-cd8a-3201-37025e0c814e.png)



### 可視化

つぎにIBBを可視化してみましょう。

```Python
dtsd=ibb.pct_change()
tmp=pd.concat([dtsd.loc[:,'Adj Close'],ror],axis=1).dropna()
tmp['adj']=(1+tmp.iloc[:,0]/(1+tmp.iloc[:,1]))
tsda=tmp.iloc[:,2].cumprod()
ts=np.log(tsda)
ts.plot()
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267055/9f881af8-9b8e-9085-16b7-ff29f4647d68.png)


つぎにXLVについて可視化してみましょう。

```Python
dtsd=xlv.pct_change()
tmp=pd.concat([dtsd.loc[:,'Adj Close'],ror],axis=1).dropna()
tmp['adj']=(1+tmp.iloc[:,0]/(1+tmp.iloc[:,1]))
tsda=tmp.iloc[:,2].cumprod()
ts=np.log(tsda)
ts.plot()
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267055/a017df8d-2246-a0ab-4edf-dcc137c245d3.png)


つぎにそれぞれのETFの構成銘柄の株価の推移を見てみましょう。

#### IBBのトップ10構成銘柄
つぎにコードは長期投資の分析のために、株価は金利で調整してあります。また、株価は対数を取っています。

```Python
BIO10=['GILD','VRTX','AMGN','BIIB','REGN','ILMN','SGEN','ALXN','AZN','MRNA']

def LongtermInvest(PORT,ror,start):
    i=1
    for asset in PORT:
        tsd = web.DataReader(asset,"yahoo",start).dropna()#jpy
        dtsd=tsd.pct_change()
        tmp=pd.concat([dtsd.loc[:,'Adj Close'],ror],axis=1).dropna()
        tmp['adj']=(1+tmp.iloc[:,0]/(1+tmp.iloc[:,1]))
        r=(tmp.adj.mean())**252-1
        tsda=tmp.iloc[:,2].cumprod()
        ts=np.log(tsda.dropna())
        ts.plot(label=str(asset))
        v=np.std(ts.diff())*np.sqrt(252)
        nc=adfuller((ts),regression='nc')[1:3]
        c=adfuller((ts),regression='c')[1:3]
        ct=adfuller((ts),regression='ct')[1:3]
        ctt=adfuller((ts),regression='ctt')[1:3]
        print("{0:5s} nc {1:2.2f} {2:3d}".format(asset,nc[0],nc[1]),
            "c {0:2.2f} {1:3d}".format(c[0],c[1]),
            "ct {0:2.2f} {1:3d}".format(ct[0],ct[1]),
            "ctt {0:2.2f} {1:3d}".format(ctt[0],ctt[1]),
            "vol {0:2.2f} ror {1:2.2f} ror/vol {2:2.2f}".format(v,r,r/v))
        
        if i==5:
            plt.legend()
            plt.show()
            i=0
        i+=1
    if i!=1:
        plt.legend()
        plt.show()        
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267055/ccd5b8c2-2a39-5346-0c8d-35d3a90b0b39.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267055/5b780415-2dca-9627-6839-39925f6c1e56.png)



#### XLVのトップ10銘柄

```Python
HLT10=['JNJ','UNH','MRK','PFE','ABBV','ABT','TMO','DHR','MDT','LLY']
LongtermInvest(HLT10,ror,'2010/1/4')
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267055/bdc4fc2a-157c-a9a0-24bb-2fed48a08f57.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267055/478ab354-590d-e3cc-9b84-6e42b2029ba4.png)


チャートから分かるように、IBBを構成する銘柄の株価の上下動は激しく、XLVは比較的安定しています。

### 数値化(時系列の性質、要約統計量)

株価のデータのように時間の経過にしたがって測定されたデータを時系列データといいます。その性質を統計的に表現する方法はいろいろあるのですが、その1つとして、それぞれの値動きがランダムであるかどうかを判断するための指標があります。価格がランダムに動いているのであれば、将来の株価がどのように推移するのか予測不可能となってしまいます。価格がランダムに動くときそれはランダムウォークにしたがうといいます。価格がランダムに動く限りにおいては、将来の株価の予測は不可能です。ですから株式の長期投資には不可欠な指標です。このよう時系列の評価の仕方として[ディッキーフラー検定](https://qiita.com/innovation1005/items/6a1a67086be429566f27)があります。statmodelsではadfullerという関数で計算ができます。これは4つのタイプがあります。

- ドリフト無し('nc')：確定的トレンド無しランダムウォーク 
- ドリフト付き('c')：確定的トレンド付きランダムウォーク 
- ドリフト付き＋トレンド付き('ct')：バブルのような加速度的確定的トレンド付きランダムウォーク 
- ドリフト付き＋加速トレンド付き('ctt')：バブルのような強い加速度的確定的トレンド付きランダムウォーク 

少しややこしいのは結果(p-値)が１に近い数値であるとランダムウォークであるかどうかが判断できなくなります。また、0に近づくに従いランダムウォークであることは否定されます。以下の表の最初は株価コード、nc,c,ct,cttは上述の通り。ローマ字の後の最初の数字はp－値,次の数字は計算に用いた遅延株価の数です。

また、volは年率換算の対数株価の差の標準偏差、rorは年率換算の株価収益率です。ror/volはその比率です。ランダムウォークであったからといって投資対象になるわけではありませんが、価格の上下動は大きくなります。

#### IBBのトップ10構成銘柄

GILD  nc 0.77   2 c 0.60   2 ct 0.94   2 ctt 0.40   2 vol 0.29 ror 0.16 ror/vol 0.54
VRTX  nc 0.82   8 c 0.74   8 ct 0.04   8 ctt 0.10   8 vol 0.45 ror 0.30 ror/vol 0.68
AMGN  nc 0.96   9 c 0.81   9 ct 0.35   9 ctt 0.05   9 vol 0.25 ror 0.20 ror/vol 0.81
BIIB  nc 0.82   3 c 0.17   3 ct 0.81   3 ctt 0.12   3 vol 0.38 ror 0.26 ror/vol 0.67
REGN  nc 0.94   5 c 0.12   5 ct 0.84   5 ctt 0.87   5 vol 0.41 ror 0.42 ror/vol 1.02
ILMN  nc 0.93   0 c 0.63   0 ct 0.34   0 ctt 0.58   0 vol 0.42 ror 0.39 ror/vol 0.94
SGEN  nc 0.94   2 c 0.77   2 ct 0.04   2 ctt 0.11   2 vol 0.43 ror 0.42 ror/vol 0.96
ALXN  nc 0.89   4 c 0.08   4 ct 0.44   4 ctt 0.72   4 vol 0.37 ror 0.29 ror/vol 0.79
AZN   nc 0.91   8 c 0.87   8 ct 0.10   5 ctt 0.20   5 vol 0.24 ror 0.14 ror/vol 0.61
MRNA  nc 0.96   0 c 0.99   0 ct 0.74   0 ctt 0.64   0 vol 0.82 ror 2.82 ror/vol 3.45

#### XLVのトップ10構成銘柄

JNJ   nc 0.99  13 c 0.91  13 ct 0.13  13 ctt 0.07  13 vol 0.17 ror 0.14 ror/vol 0.79
UNH   nc 1.00  14 c 0.90  14 ct 0.04  14 ctt 0.09  14 vol 0.26 ror 0.30 ror/vol 1.13
MRK   nc 0.94  16 c 0.85  16 ct 0.08  16 ctt 0.11  16 vol 0.21 ror 0.13 ror/vol 0.63
PFE   nc 0.92  25 c 0.63  25 ct 0.43  25 ctt 0.02  25 vol 0.20 ror 0.13 ror/vol 0.63
ABBV  nc 0.90   0 c 0.42   0 ct 0.07   0 ctt 0.19   0 vol 0.29 ror 0.24 ror/vol 0.84
ABT   nc 1.00   9 c 0.99   9 ct 0.22   9 ctt 0.23   9 vol 0.21 ror 0.21 ror/vol 0.98
TMO   nc 1.00  13 c 0.99  13 ct 0.34  17 ctt 0.44  17 vol 0.24 ror 0.28 ror/vol 1.16
DHR   nc 1.00   7 c 0.99   7 ct 0.35   7 ctt 0.02   7 vol 0.25 ror 0.29 ror/vol 1.18
MDT   nc 0.94   7 c 0.94   7 ct 0.03   7 ctt 0.03   7 vol 0.23 ror 0.15 ror/vol 0.66
LLY   nc 1.00  13 c 0.99  13 ct 0.32  13 ctt 0.50  13 vol 0.23 ror 0.25 ror/vol 1.08

ランダムウォークであるかどうかは期間に大きく影響を受けます。短いほうがランダムウォークが否定される頻度は多くなります。

### 世界の製薬会社トップ10

```Python
TOP10=['RHHBY','PFE','NVS','MRK','GSK','JNJ','SNY','ABBV','TAK','BMY']
LongtermInvest(TOP10,ror,'1980/1/4')
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267055/2c35b380-ae1d-5133-936e-4ca8e9dc5847.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267055/d4647754-fa7f-8186-2772-f9ac6ee65f3d.png)

RHHBY nc 0.97  15 c 0.65  15 ct 0.34  13 ctt 0.55  13 vol 0.23 ror 0.14 ror/vol 0.59
PFE   nc 0.99   4 c 0.36   4 ct 0.84   4 ctt 0.85   4 vol 0.27 ror 0.17 ror/vol 0.62
NVS   nc 0.95  18 c 0.83  18 ct 0.19  18 ctt 0.12  18 vol 0.22 ror 0.10 ror/vol 0.45
MRK   nc 0.99  21 c 0.33  17 ct 0.81  17 ctt 0.93  17 vol 0.26 ror 0.16 ror/vol 0.60
GSK   nc 0.99  10 c 0.00  10 ct 0.41  10 ctt 0.53  10 vol 0.27 ror 0.18 ror/vol 0.65
JNJ   nc 1.00   9 c 0.63   9 ct 0.64   9 ctt 0.48   9 vol 0.23 ror 0.16 ror/vol 0.70
SNY   nc 0.64   6 c 0.39   6 ct 0.13   6 ctt 0.26   6 vol 0.27 ror 0.09 ror/vol 0.32
ABBV  nc 0.90   0 c 0.42   0 ct 0.07   0 ctt 0.19   0 vol 0.29 ror 0.24 ror/vol 0.84
TAK   nc 0.01   4 c 0.11   4 ct 0.07   4 ctt 0.02   4 vol 0.23 ror 0.01 ror/vol 0.03
BMY   nc 0.99   7 c 0.34   7 ct 0.47   7 ctt 0.84   7 vol 0.27 ror 0.16 ror/vol 0.60


# 世界のトップ１０ワクチン製造者
ワクチンの開発には膨大な費用と時間がかかります。そのリスクに耐えることのできる製薬メイカーはファイザー、メルク、グラクソ・スミスクライン、サノフィの4社だけです。

||コード|製薬会社|国籍|正社員数
|:-:|:-:|:-:|:-:|:-:|
|1.|GSK|グラクソ・スミスクライン株式会社|英国|99437
|2.|MRK|メルク|米国|71000
|3.|SNY|サノフィ|フランス|100409
|4.|PFE|ファイザー|米国|88300
|5.|NVAX|ノババックス|米国|165
|6.|EBS|エマージェントバイオソリューソンズ|米国|1834
|7.|CSLLY|CSL Limited|オーストラリア|25031
|8.|INO|イノビオファーマシューティカルズ|米国|190
|9.||バーバリアンノルディック|ノルウェー|
|10.|TAK|田辺三菱製薬|日本|47495

```Python
VAC10=['GSK','MRK','SNY','PFE','NVAX','EBS','INO','TAK']
LongtermInvest(VAC10,ror,'1980/1/4')
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267055/053c4220-635b-47a6-1172-1d643e8b601f.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267055/10a52ba6-e18f-f5d9-45c9-9140716c49d6.png)

GSK   nc 0.99  10 c 0.00  10 ct 0.41  10 ctt 0.53  10 vol 0.27 ror 0.18 ror/vol 0.65
MRK   nc 0.99  21 c 0.33  17 ct 0.81  17 ctt 0.93  17 vol 0.26 ror 0.16 ror/vol 0.60
SNY   nc 0.64   6 c 0.39   6 ct 0.13   6 ctt 0.26   6 vol 0.27 ror 0.09 ror/vol 0.32
PFE   nc 0.99   4 c 0.36   4 ct 0.84   4 ctt 0.85   4 vol 0.27 ror 0.17 ror/vol 0.62
NVAX  nc 0.02   3 c 0.09   3 ct 0.25   3 ctt 0.48   3 vol 0.97 ror 0.61 ror/vol 0.63
EBS   nc 0.79   4 c 0.78   4 ct 0.03   3 ctt 0.03   3 vol 0.49 ror 0.32 ror/vol 0.65
INO   nc 0.47   6 c 0.09   6 ct 0.42   6 ctt 0.20   6 vol 1.02 ror 0.60 ror/vol 0.59
TAK   nc 0.01   4 c 0.11   4 ct 0.07   4 ctt 0.02   4 vol 0.23 ror 0.01 ror/vol 0.03

```PYthon
LongtermInvest(VAC10,ror,'2010/1/4')
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267055/d01c0057-aa6e-e829-2519-9ff6d74f5a80.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267055/24add998-bb69-e636-97f8-ffe7f8659eef.png)

GSK   nc 0.60  14 c 0.33  14 ct 0.17  19 ctt 0.23  19 vol 0.19 ror 0.06 ror/vol 0.32
MRK   nc 0.94  16 c 0.85  16 ct 0.08  16 ctt 0.11  16 vol 0.21 ror 0.13 ror/vol 0.63
SNY   nc 0.48   1 c 0.46   1 ct 0.19   1 ctt 0.25   1 vol 0.24 ror 0.08 ror/vol 0.33
PFE   nc 0.92  25 c 0.63  25 ct 0.43  25 ctt 0.02  25 vol 0.20 ror 0.13 ror/vol 0.63
NVAX  nc 0.14   3 c 0.60   3 ct 0.91   3 ctt 0.99   3 vol 1.06 ror 0.86 ror/vol 0.81
EBS   nc 0.96  20 c 0.94  20 ct 0.53  20 ctt 0.30  20 vol 0.41 ror 0.30 ror/vol 0.74
INO   nc 0.15   9 c 0.47   9 ct 0.57   9 ctt 0.80   9 vol 0.83 ror 0.60 ror/vol 0.71
TAK   nc 0.01   4 c 0.11   4 ct 0.07   4 ctt 0.02   4 vol 0.23 ror 0.01 ror/vol 0.03

# 他の主な市場との比較

バイオ株IBB、ヘルス株XLV、ハイテク株(ナスダック総合)QQQ、スタンダードプアーズ５００SPYと比べてみました。

```Python
COMP=['IBB','XLV','QQQ','SPY']
LongtermInvest(COMP,ror,'2003/1/4')
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267055/6446d62e-c4ee-e557-2a3a-f011d73024dc.png)
IBB   nc 0.99  18 c 0.92  18 ct 0.68  18 ctt 0.74  18 vol 0.24 ror 0.16 ror/vol 0.67
XLV   nc 1.00  21 c 0.98  21 ct 0.83  21 ctt 0.66  21 vol 0.17 ror 0.11 ror/vol 0.65
QQQ   nc 1.00  22 c 0.98  22 ct 0.86  22 ctt 0.03  27 vol 0.21 ror 0.18 ror/vol 0.83
SPY   nc 0.98  32 c 0.94  32 ct 0.79  32 ctt 0.28  32 vol 0.19 ror 0.11 ror/vol 0.60

# 参考文献


<A HREF="http://www.tradersshop.com/bin/showprod?c=9784775991855
">Python3ではじめるシステムトレード【第2版】環境構築と売買戦略</A>

<A HREF="http://www.tradersshop.com/bin/showprod?c=9784775991855">
     <IMG SRC="http://www.tradersshop.com/images/prod/9784775991855.jpg"BORDER=1 WIDTH=70 HEIGHT=100  </A>

「画像をクリックしていただくとpanrollingのホームページから書籍を購入していただけます。

<A HREF="http://www.tradersshop.com/bin/showprod?a=17600&b=1&c=9784775970270">
     「シュワッガーのテクニカル分析」</A>
<A HREF="http://www.tradersshop.com/bin/showprod?a=17600&b=1&c=9784775970270">
     <IMG SRC="http://www.tradersshop.com/images/prod/9784775970270.jpg"BORDER=1 WIDTH=70 HEIGHT=100 
      </A>