アクチュアリーはデータサイエンスの夢を見るか

Rで保険数理と機械学習をやっています

株価変動を分析してみた

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

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

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

今回分析する銘柄は何でもよいのですが、野村ホールディングス【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 は決定係数が小さいことから、topixで説明できない部分が大きい状態。一方、Regime 2は決定係数も大きく、topixでほぼ説明可能な状態と言えます。AICについても単純な回帰モデルよりは改善していることが分かります。

 

f:id:r_std:20170815193952p:plain

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

f:id:r_std:20170815194217p:plain

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

 

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

stock price

 

葉っぱを分類してみた②(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

葉っぱを分類してみた①(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級の勉強方法

11月の統計検定も近づいてまいりました。今回は、自分が統計検定準1級を受験した際に勉強した参考書をご紹介します。

 

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

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

 

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

 

 

はじめてのパターン認識

はじめてのパターン認識

 

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

 

 

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

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

 

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

 

 

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

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

 

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

 

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

Rで学ぶ損保数理①

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

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

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

gistf87ae1294d92e7468eff0c432d5c0957

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

前回に引き続いて、天鳳強者のデータを分析します。今回は主成分分析、因子分析を行って、プレーヤーを打ち筋の観点から分類することを試みます。

 

【主成分分析、因子分析】

主成分分析は多くの変数を少ない変数に要約する手法の一つで、因子分析は多くの変数の背後にあるいくつかの因子を分析する手法になります。

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

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

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

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

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

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

 

【結果】

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

f:id:r_std:20160724151909p:plain

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

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

f:id:r_std:20160724153327p:plain

 

【考察】

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

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

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

第三因子までの累積負荷量が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件のデータの観測期間の間で、「手数重視⇔手作り重視」の打ち筋が変化があったとも読めるかもしれません。

 

【総論】

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

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

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

 

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

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

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

 

使用したデータについては追って公開いたします。