前回の記事では、個別銘柄ニュースのBERT特徴量と将来の株価リターンを紐づけ、ランダムフォレストにより直接リターンを予測するモデルを構築してみました。
結果としては、有用なモデルを作ることができませんでした。
その原因としては学習データ(ニュース記事数)が少ないことが挙げれます。
また、個別銘柄の区分は関係なしに、存在する全銘柄のニュースを一つのモデルに学習させておりました。
推測ですが各個別銘柄には独自の特徴があるため、一つのモデルに複数の銘柄を学習させること自体、ナンセンスだったのかもしれません(学習データが多ければ話は別?)。
今回のように学習に使えるニュース記事が少なく、異なる銘柄のデータをモデルに入力とする場合は、チュートリアルで紹介されているようなインデックス予測の方が向いているのかもしれません。
そこで今回はニュース記事を業種区分やクラスタリングで分析してみたので、その結果を記事に残します。
先に得られた結果を述べておくと、ざっと以下の通りです。
- ニュースに敏感なセクターが存在する
- クラスター間でリターンに差がある
最後には、上記の結果を用いて取引戦略の検証をします。
業種区分間の分析
まずは、今回の銘柄リスト(stock_list)のにおける各セクターの銘柄数を見てみます。
IT・サービスに関する銘柄が突出して多いことがわかります。
一方、対照的に少ない業種も存在するようです。(既知の事実)
次に、今回の提供されているニュース記事と各業種における発行数を見てみます。
先ほどの図と見比べてみると、概ね、各業種の銘柄数とニュース記事の発行数は等しいように見えます。
ただ、17区分のうちのセクター9(電気・精密)は銘柄数のわりにニュース数が多いように見えます。
33業種区分と17業種区分とであまり変わらないことと銘柄数の確保のために、以降は17区分に絞り分析をしていきます。
イベントスタディ分析
ニュースの株価への影響がセクター間で異なるかを検証する為に、イベントスタディ分析を行ってみました。
個別銘柄のニュース記事に対するイベントスタディ分析は過去の記事(こちら)で実施したのでそれを参考にしました。
結果は以下の通りです。
有意水準5%を基準にセクターを絞った結果が以下の通りです。
この結果を見る限り、セクター間でニュースの株価への影響度は異なるように思われます。
また、BANKは他のセクターと比べ、株価にかなり負の影響を与えるようです。
次に各業種におけるニュース公表後のアブノーマルリターンの推移を見てます。
個別銘柄の時と同様に20日も経過するとアブノーマルリターンはゼロに回帰することがほとんどのように見えます。
つまり、公表後しばらく経過したニュースはすでに株価に織り込まれているため、モデルに利用するニュースは公表後間もないものが良さそうです。
チュートリアルと同様にポートフォリオ組成時の直近1週間程度が妥当ではないでしょうか。
この結果を踏まえて、マイナスになりやすいセクター2, 11, 12, 15は予め除外しておくのもよいのかもしれません。
クラスタ間の分析
ニュース記事の内容に基づくグルーピングを目的に、各銘柄のBERT特徴量をクラスタリングしてみます。
クラスタリングには、一般的なK-meansを利用しました。
パラメータはシードを固定する以外はデフォルトのままにしたので、分割数は8となります。
クラスター間のリターンの差
まずは、各クラスターでリターンの差があるのかを見てみます。
その際、15:00以降に公表されたニュースは翌日の終値と関連付けリターンを計算するようにしております(過去の記事でも述べておりますが念のため)。
各セクターのニュース公表後の1日後、5日後、20日後のリターン(平均)は以下の通りです。
サンプル数が異なるのは、ニュース公表後に株価が得られない等の理由によりNaNとなったもの等を除外しているためです。
各セクターのリターンの平均が0であるか統計検定をした結果が以下の通りです。
少し見づらいので、有意水準5%で判定した結果が下表です。
この結果から、クラスター間でリターンの差はありそうです。
特にクラスター4とクラスター7では、3期間を通して有意であることから両クラスターはリターンにつながりやすい可能性が高いのかもしれないでです。(クラスター4についてはマイナスのリターン)
以降はこの2つのクラスターについて詳細に見ていきます。
主成分分析によるクラスタリングの可視化
K-meansによりBERT特徴量がどのようにクラスタリングされたかを把握してみます。
BETRT特徴量は768次元あり、可視化することは困難です。
そこで主成分分析(PCR)により次元を圧縮することで対応してみます。
主成分分析をし、第一主成分、第二主成分をプロットした結果が以下の通りです。
(数字(色)がクラスター番号に対応しております。)
この結果を見ると、クラスタリングのされ方についておおよそ理解できます。
しかし、クラスター4(紫)とクラスター7(灰)は上図では非常に近くに位置おります。
これではまだ特徴がつかみにくいので、第一主成分~第三主成分で3次元プロットをしてみます。
二次元の時に比べたら特徴を把握しやすくはなりました。
ただ、クラスター4(紫)とクラスター7(灰)は非常に近い位置関係あるようです。
それなのにリターンが正負に分かれるというのは、ニュース内容のニュアンスが若干異なり、そのニュアンスがリターンの正負を決定しているのかもしれません。
例えば、「今期の決算は赤字/黒字となる見込みである。」のように。
wordcloudによる可視化
チュートリアルで紹介されていたwordcloudを利用して、クラスター4とクラスター7のニュースを可視化してみます。(scatter textは処理が重く、断念しました。。)
クラスター4について見てみると、ポジティブな単語も含まれておりますが、ネガティブな単語(減収、減益、減資、格下げ等)が特に目に留まります。
一方で、クラスター7について見ると、ポジティブな単語(期待、回復、好感、買い気配等)を多く含んでいるようです。
したがって、クラスター4とクラスター7とでニュアンスが若干異なるというのはあながち間違っていないのかもしれません。
両クラスターには、リターンを決定づけるような特徴的な単語が多く含まれているなので、ポートフォリオの組成には利用できる可能性がありそうです。
取引戦略の検証
上記の結果を踏まえて、テスト期間(2021年1月1日~3月31日)における検証を行ってみます。
業種区分
テスト期間における各セクターのリターン(平均)を計算した結果が以下の通りです。
セクター5の20営業日のリターンを除き、ほとんどがプラスのリターンであることがわかります。
これを見る限りだと、セクター2, 11, 12, 15を除外対象にする効果はテスト期間ではあまりないように思われます。
クラスタリング
まずはテスト期間におけるクラスタ番号の分布を見てみます。
クラスター4に属するデータは少ないのがわかります。
クラスター4はネガティブな単語を多く含むニュース群でしたが、2021年からは社会情勢が転換したことからデータ数が少なくなったのかもしれません。
クラスター7についてはそこそこのデータ数を確保できています。
それぞれのクラスターについて、上記の分析と同様にwordcloudからニュースの概要を見ておきます。
クラスター4については、”引き上げ”という単語が目立つようにニュースの内容が好転しているように感じられます。コロナ禍で先行きが不透明だったものが、不透明感がなくなり業績を引き上げる企業が増えたのかもしれません。
クラスター7については、ポジティブな単語が含まれるものの、”コロナ”という単語が目立ちます。
ポジティブなニュース群にも思えますが、コロナに敏感な銘柄が集まっている可能性も否めません。
そこで他のクラスターでも「コロナ」を多く含むかは確認しておきました。
その結果は掲載しません(気になる方はノートブックをご参照)が、「コロナ」に引っ張られている様子はなさそうでした。
各クラスターのテスト期間におけるリターンを計算した結果が以下の通りです。
尚、右図は、有意水準5%で絞り込んだ結果です。
テスト期間においてはクラスター4・7ともにプラスのリターンとなりました。
クラスター4では上で述べたように内容が好転した結果、リターンはマイナス傾向からプラス傾向になったように思われます。
クラスター7については、上での分析と同様に正のリターンが得られました。
しかも他のクラスターに比べてかなり高いリターンとなっています。
以上からクラスター7に含まれる銘柄をポートフォリオに組み込んでいくと良さそうです。
クラスター7について
クラスター7についてもう少し詳細に見ておきます。
クラスター7の業種区分の分布は以下の通りでした。
特定の業種に偏っているというわけではなさそうです。
最初に見た各業種におけるニュースの発行数の分布と同じような形をしております。
次にクラスター7に属し、ニュースの発行数が多い上位10銘柄を見てみます。
上位は有名企業が目立っております。
この中だと、上の分析を踏まえてセクター11の関電やセクター12の日本航空や含めないようにしたほうが賢明かもしれません。
ただ、これらの業種を最初から除外するとリターンを得る機会を失ってしまいます。
例えば、業績回復のようなニュースを捉えることができれば、大きなリターンを得られる可能性があります。業種ごとの週次予測指標を利用すると良いのかもしれません。
最後にセクター2, 11, 12, 15を除外の有無でクラスター7のリターンに変化があるか見てみます。
セクター2, 11, 12, 15 を除外するとリターンは向上する傾向がありそうです。
まとめ
今回は業種区分やクラスターといったグループ間でニュースの分析を行いました。
結果として、ニュースに敏感なセクターが存在やクラスター間でリターンに差があることが確認できました。また、各クラスターの特徴について可視化することで、リターンの一要因を特定することができました。
次回はここまでの分析結果をもとにポートフォリオ組成戦略の構築とコンペへモデルの提出を行ってみたいと思います。(⇒ 次の記事)
ご参考
今回の記事に関するプログラムはGithub(こちら)に公開ております。
【ipynb】
- Analysis_Sector_public.ipynb:今回の記事に関するノートブック
コメント