Rで株価変動を分析してみた(隠れマルコフモデル, Regime-Switching Model)

今回は隠れマルコフモデルを利用して、個別銘柄の株価リターンを評価してみます。隠れマルコフモデルの概要については下記などをご参照ください。

https://www.slideshare.net/thinkn1108/150719-hmm

隠れマルコフモデルでは、「背後に観測できない状態が複数あること」を仮定して、説明能力の高いモデルを推定することができます。例えば、株価リターンデータに隠れマルコフモデルを適用すると、株式市場の背後にあるボラティリティの高い状態と低い状態、リターンの高い状態と低い状態を分けて評価することができます。

隠れマルコフモデルを用いた株価の実証分析については、下記のような論文があります。株価リターンの変動を表現する際にはRegime-Switching Modelと呼ばれることがありますが、内容は隠れマルコフモデルとほとんど同義と考えられます。

www.researchgate.net

 

今回分析する銘柄は何でもよいのですが、野村ホールディングス【8604】を対象とします。隠れマルコフモデルを用いて野村HDの株価リターンがtopixのリターンから大きく乖離する部分を特定し、ニュースリリースなどがなかったかを検証します。

 

まずは、2016年の野村HDとtopixのチャートを重ねてみます。

f:id:r_std:20170815193525p:plain

上図は2016年中の株価変動率(対2016年1月4日終値)を示しています。赤がtopix、緑が野村HDの変動率を示しています。横軸が営業日(2016年は245日)、縦軸が変動率を示しています。(縦軸は左端で変動率0となります)赤線と緑線の推移は似通っているようですが、野村HDの方が変動率の絶対値が大きくなっているように見受けられます。

次は野村HDおよびtopixの日次対数リターンを算出し、単純にtopixリターンを説明変数として野村HDのリターンを単回帰してみます。

Call:
lm(formula = y ~ x, data = data)

Residuals:
Min 1Q Median 3Q Max
-0.092599 -0.008326 -0.000348 0.007715 0.099519

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 0.0001375 0.0011676 0.118 0.906
x 1.5476281 0.0702720 22.023 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.01824 on 242 degrees of freedom
Multiple R-squared: 0.6671, Adjusted R-squared: 0.6658
F-statistic: 485 on 1 and 242 DF, p-value: < 2.2e-16

単純な回帰分析でも決定係数は0.67程度とそれなりに高いことが分かります。なお、AICは次の通り-1258となりました。

> AIC(m.lm)
[1] -1257.639

次に、状態が2つの隠れマルコフモデルを適用してみます。

Markov Switching Model

Call: msmFit(object = m.lm, k = 2, sw = c(TRUE, TRUE, TRUE))

AIC BIC logLik
-1348.283 -1312.305 678.1414

Coefficients:

Regime 1
---------
Estimate Std. Error t value Pr(>|t|)
(Intercept)(S) 0.0021 0.0056 0.3750 0.7077
x(S) 2.1379 0.3910 5.4678 4.557e-08 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.03490673
Multiple R-squared: 0.5042

Standardized Residuals:
Min Q1 Med Q3 Max
-0.1048995084 -0.0031676084 -0.0005867352 0.0025023988 0.0904901470

Regime 2
---------
Estimate Std. Error t value Pr(>|t|)
(Intercept)(S) -0.0005 0.0008 -0.625 0.532
x(S) 1.4155 0.0502 28.197 <2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.01026669
Multiple R-squared: 0.8402

Standardized Residuals:
Min Q1 Med Q3 Max
-0.0211668822 -0.0061988674 0.0001718118 0.0063824874 0.0202230937

Transition probabilities:
Regime 1 Regime 2
Regime 1 0.5184655 0.1063328
Regime 2 0.4815345 0.8936672

Regime 1 は決定係数が0.5程度と小さいことから、topixリターンでは説明できない部分が大きい状態です。一方、Regime 2は決定係数も0.8程度と大きく、topixリターンによりほぼ説明可能な状態と言えます。AICも-1,348となり、単純な回帰モデルよりは改善していることが分かります。

 

f:id:r_std:20170815193952p:plain

上段が野村HDの株価リターン、下段がtopixのリターンになります。グレーの網がかかっている部分がRegime 1 の状態と予測される期間です。グレーの期間では野村HDの株価リターンが個別要因で変動していたことが推測されます。また、各Regime ごとの確率は次の通り予測されています。

f:id:r_std:20170815194217p:plain

Regime 1 と予測されている130~150営業日付近では、2016年7月28日の第1四半期決算発表および自社株買い発表等を受けて環境要因では説明できない株価変動が発生していたと評価できます。

 

今回使用したソースコードは次の通りです。

stock price

 

Rで葉っぱを分類してみた②(SVM, randomForest, Naive Bayesなど)

 前回の記事からの続編になります。

r-std.hatenablog.com

 前回は36種の葉っぱの形状データと手触り(texture)データについて、k近傍法による識別を行いました。今回はSVMやRandomForest, Naive Bayesなどの手法により、識別を行います。

今回使用する ソースコードは次の通りです。

leaf2

 

各手法による識別率の結果は次の通りとなりました。

f:id:r_std:20170402193802p:plain

パラメータチューニングをだいぶ怠っておりますが、k近傍法以外の手法ではまずまずの結果を得ることができました。

前回の記事の考察の繰り返しになりますが、k近傍法での判別が難しいことから、各クラスの中でデータ距離が大きいことが示唆されます。また、各変数が独立であるとの仮定を置くNaive Bayesでも良い結果が出ており、ある程度変数間の相関を無視できることが示唆されます。

 

識別率のみを見ると線形判別が最もよい成績を出していますが、他の手法が優れている部分もあります。たとえばクラス7のデータなどはrandom Forestの方が優れています。

 

今回の記事では手法それぞれの特性と結果の違いを分析することはしませんが、それぞれの識別関数をアンサンブルする(組み合わせる)ことで、識別率は向上を図れると思われます。

 

仮にこのような多クラス分類が、葉っぱの分類ではなく、保険の料率にビックデータを織り込んでいく場合(例えばウェアラブル端末から取得した活動データを料率に反映する場合)に活用されることを考えてみます。

アクチュアリーに期待される役割として考えられることは、①多次元のデータをわかりやすく要約すること、②モデルの精緻さと簡明さのバランスをとること、③コストとリターンのバランスをとること、などでしょうか。

 

次回は株価リターンもしくはpython導入を扱う予定です。

Rで学ぶ損保数理②(パンジャーの再帰式とは?)

 

以前の記事(Rで学ぶ損保数理① - アクチュアリーはデータサイエンスの夢を見るか

の続編になります。第2回目はクレーム総額の確率分布の導出を扱います。

 

 

 

 損害額Xを指数分布、クレーム件数Nを負の二項分布とする複合分布について、パンジャーの再帰式やフーリエ変換を使用して近似値を求めています。

 

 今回使用したコードについては次の通りです。

claim_model_2.R

 

claim_model_3.R

Rを使って葉っぱを分類してみた①(k近傍法)

 

今回はk近傍法をRで動かしてみます。

使用するデータセットは以下のサイトから引用します。

https://archive.ics.uci.edu/ml/datasets/Leaf

UCI Machine Learning Repository: Leaf Data Set

40種の葉っぱについて、形状データと手触り(texture)データが記録されています。今回はこのデータセットを用いて、多クラス分類の手法の一つであるk近傍法を利用してみます。

 

変数1~7の形状データを用いて散布図を描いてみます。

f:id:r_std:20170122123631p:plain

 

変数8~14の手触り(texture)データは次の通りになります。f:id:r_std:20170122123955p:plain

変数とクラスが多いため、散布図で一見して評価するのは難しいように思われます。

 

今回利用するk近傍法は、直近のk点の学習データから多数決を行って最も多いクラスに分類を行う直感的に分かりやすい方法になります。

データセットを区分せず、学習データ=テストデータとすると次のような結果になりました。

k=3の場合の識別率 0.7764706

k=5の場合の識別率 0.7264706

k=10の場合の識別率 0.6588235

多数決に用いるデータ数を増やすと識別率が落ちることが分かりました。

 

参考に以前取り上げた線形判別分析も行ってみると、次の通りになりました。

線形判別分析の識別率 0.8705882

線形判別分析の方が良い結果を得られてしまいました。結果の評価の仕方は難しいですが、クラス内でのデータの距離が大きいことで、kNNが機能しにくくなっている可能性があります。

 

次回はSVMやNaiveBayesを取り上げたいと思います。

 

今回使用したソースコードは以下の通りです。

leaf

統計検定準1級に効率的に合格する勉強方法と参考書籍

本記事では自分が統計検定準1級を受験した際の勉強方法についてまとめます。

1.試験の特徴

 統計検定は専用の参考書などがまだ少なく、独学を中心に勉強を進める必要があります。その一方で試験範囲は非常に広いものになっており、全範囲を満遍なく学習しておく必要があります。アクチュアリー試験の数学と比較すると、多変量解析や機械学習のトピックが含まれていることが注意点になります。

統計検定準1級の試験問題は、前半の選択問題及び部分記述問題、後半の論述問題に大きく分かれます。それぞれに足切りなどは設定されていないようですが、時間配分が偏らないように配慮するとともに、バランスよく点数をとれるように実力をつける必要があります。自分が受験した際には、前半の計算問題などで確実に得点できるよう問題演習を行うとともに、後半で的外れな記述をしないように過去問の研究を行いました。

 また試験時間が120分とかなり短いことから、効率的に問題を解くことも重要になります。過去問を解く際などには実際に時間を計って練習を行いました。普段使用することが少ない関数電卓も迷いなく操作できるようにすることを心がけました。

 

2.使用した参考書

参考書としては下記の書籍を利用しました。

日本統計学会公式認定 統計検定 1級・準1級 公式問題集[2014〜2015年]

日本統計学会公式認定 統計検定 1級・準1級 公式問題集[2014〜2015年]

 

 統計検定の公式問題集は解答・解説が充実しており、本番の練習になります。2016年11月現在では収録されている年数が少ないので、2017年の受験を考えている方は2016年度試験分が収録されるまで購入を待った方がいいかもしれません。

  

はじめてのパターン認識

はじめてのパターン認識

 

 機械学習分野の知識を学習するのに最適と思われます。ある程度統計の知識がある方は入門書としてスラスラ読める一冊です。数式がきちんと解説されているのもさることながら、各手法の説明が丁寧になされており、統計検定の論述問題に回答するのに非常に参考になります。章ごとに練習問題があるのも理解につながります。

  

弱点克服大学生の確率・統計

弱点克服大学生の確率・統計

 

 大学の一般教養レベルの確率・統計の問題が分野別に練習できます。解説が充実しており、基礎から復習できる良書です。アクチュアリー試験の数学の際にも重宝しましたが、統計検定でも役立ちました。高校数学のレベルから導入があるため、初学者の方にも学習しやすい一冊です。

  

統計学入門 (基礎統計学)

統計学入門 (基礎統計学)

  統計学の教科書としては最もオススメな本です。統計検定の勉強の際には、忘れてしまった分布の性質などを復習するため、辞典のように参照しました。

 

3.終わりに 

統計検定準1級は1回の試験で出題される問題数が多く、論述や作図問題など、問題の種類も多岐にわたることから、さまざまなタイプの問題を想定しムラなく準備しておく必要があります。試験までの残り時間は少ないですが、今回受験される方は是非追い込みを頑張ってください。

Rで学ぶ損保数理①(クレームモデルとは?)

 「Rで学ぶ損保数理」と称して記事を書いてみます。損保数理は一次試験の中では難易度も高く、過去問以外の勉強方法が確立されていませんが、学習中の方の理解の助けになれば幸いです。第一回目はクレームモデルの導入を扱います。 

 スライドの最後では、Xを指数分布、Nを負の二項分布として複合分布を作成した場合の例を取り上げています。 このSの分布について、パンジャーの再帰式やフーリエ変換を使用した場合、どのような近似値を得られるか次回取り上げる予定です。

 今回使用したコードについては次の通りです。

gistf87ae1294d92e7468eff0c432d5c0957

ネット麻雀「天鳳」を統計的に分析してみた(後編)

前回の記事に引き続いて、天鳳強者のデータを分析します。

r-std.hatenablog.com

今回は主成分分析、因子分析を用いて、プレーヤーを打ち筋の観点から分類することを試みます。

1.主成分分析、因子分析

主成分分析は多くの変数を少ない変数に要約する手法の1つです。因子分析も主成分分析に類似した手法ですが、因子分析は多くの変数の背後に隠れているいくつかの因子を抽出する手法になります。

主成分分析、因子分析を用いる例として、期末テストのデータがあります。

期末テストの全科目の点数データに、主成分分析、因子分析を用いると

「文系科目が得意」⇔「理系科目が得意」

「美術・技術系の科目が得意」⇔「筆記試験系の科目が得意」

といった隠れた評価軸を明らかにすることができます。

今回は麻雀における各種成績指標をより少ない変数に落とし込むことで、麻雀の成績における隠れた評価軸を分析し、プレーヤーたちの打ち筋を抽象的に評価することを試みます。

 

2.結果

主成分分析の結果は次の通りです。

f:id:r_std:20160724151909p:plain

第一主成分は前回の多重回帰分析に用いた説明変数と成績データによって大きく動く成分であることが分かります。第二主成分は和了率や放銃率、副露率など、勝負に出れば出るほど小さくなる成分といえます。第三主成分はドラや役を使いこなして点数を稼ぐことによって大きくなる成分であると考えられます。

結果を分かりやすくするため、因子分析の結果についても見てみます。(varimax法を使った結果になります)

f:id:r_std:20160724153327p:plain

 

3.考察

第一因子は優秀⇔平凡の因子であると評価できます。第一因子得点が高いほど平凡なプレーヤーであることを意味します。因子負荷量の結果と重回帰分析の結果が一致していることからも、この評価は適切だと考えられます。

第二因子はリスク愛好派⇔ベタオリ派の因子であると評価できます。第二因子得点が高いほど、巡目が深い和了が多く、放銃率、ラス率も高いです。経験からの“読み“に頼って勝負するタイプであると考えられます。

第三因子は手作り重視⇔手数重視の因子であると評価できます。第三因子得点が高いほどドラや高い役をからめた大きな手を狙う傾向が強いです。逆に第三因子得点が低いほど安手を連発して和了を量産し、相手を牽制する傾向が強いと評価できます。

第三因子までの累積負荷量が0.706となったので、全変数の概ねの情報は要約できていると判断し、第三因子までの因子得点を散布図に描いてみます。

f:id:r_std:20160730101059p:plain

(Factor1が低いほど優秀、Factor2が高いほどリスク愛好派)

f:id:r_std:20160730101249p:plain

(Factor1が低いほど優秀、Factor3が高いほど手作り重視派)

f:id:r_std:20160730101233p:plain

(Factor2が高いほどリスク愛好派、Factor3が高いほど手作り重視派)

 

散布図のとおり、強者たちにはっきりしたクラスタリングは見られず、一様に散らばっていることが分かります。強者たちを打ち筋によってグループ化することは難しそうです。大体の人が同じような打ち方をしており、一部の人が個性の強い打ち方をしていることが伺えます。(見方を変えれば特徴がない打ち筋の人でも良い成績を出しうるといえるかもしれません)

たとえば、「断幺ドラ3」氏の戦績データに注目すると、因子分析の結果からは成績は標準、リスク愛好派、手作り重視の傾向があると評価できます。実際に氏の戦績データを見ると1位率(28.5%)と4位率(25.6%)が突出して高く、まずまずの成績(安定レート:1984.74)を出されています。またリーチを多用しており(立直率:23.2)、先制立直にこだわらずに勝負に臨んている姿勢が読み取れます。

一方「長村ビッグ」氏は成績は優秀、ベタオリ派、手作り重視のタイプと評価できます。実績データから高い和了率(23.5%)と極端に低い放銃率(11.4%)が見て取れ、因子分析の評価に近いと言えます。

また、データが2件あった「超ヒモロリ」氏は第三主成分で評価が大きく変わっていることにも注目です。2件のデータの観測期間の間で、「手数重視⇔手作り重視」の打ち筋が変化があったとも読めるかもしれません。

 

4.総論

多重回帰分析の結果から、オンライン麻雀ゲーム「天鳳」における成績は、

  1. 放銃率
  2. 和了
  3. 和了素点
  4. 副露率

の4つによって大部分を説明でき、立直率や平均和了巡目の説明能力は相対的に低いと考えられます。

 

また、主成分分析、因子分析の結果から、プレーヤーの打ち筋のタイプを見る因子として、

  1. 優秀⇔平凡
  2. リスク愛好派⇔ベタオリ
  3.  手作り重視派⇔手数重視派

の3つの因子が考えられます。

 

(関連記事)

r-std.hatenablog.com

r-std.hatenablog.com