COMPANY

PAGE TOP

BLOG

RapidMinerによるポートフォリオのリスク管理(上)

皆さん、こんにちは!
KSKアナリティクスの周です。

株式相場の世界では、「卵は一つのカゴに盛るな」とよく言われている通り、
リスクを分散させるために複数の株式を購入することがあります。
この株式を分散して持っておく組み合わせのことをポートフォリオと言います。

今回はRapidMinerを使って、複数の株式の投資の収益とリスクを分析し、
最適なポートフォリオを見つけてみましょう!

今回作成したプロセスは、主に三つの部分で成り立っています。
まずは全体図を見ましょう。

① 株式データの説明と読み込み
● 日次収益率計算

② ポートフォリオの収益計算
● 任意の重み付けのポートフォリオ
● 同じ重み付けのポートフォリオ
● 時価総額で重み付けのポートフォリオ

③ 株式の相関性と共分散
● 相関性マトリックス
● 共分散マトリックス
● ポートフォリオのボラティリティ――標準偏差

5社でポートフォリオを構築し、2017年10月以降のデータを使ってシミュレーションを行います。
データの取得は前回のブログをご覧ください。

なお今回は時価総額で重み付け株式ポートフォリオを作成するために、
株式ごとの時価総額も取得し、それぞれの平均を計算しておきます。
(企業情報を保護するため、銘柄は隠しています)

① データの説明と読み込み

では、データを確認しましょう。
選んだ五つの株式の日次終値データ

各株の時価総額の平均

日次収益率計算

RapidMinerで使用したオペレーター

  • Loop Attributes
  • Loop Examples
  • Set Macro
  • Extract Macro
  • Generate Macro
  • Set Data
  • Generate Attributes

「時価総額で重み計算」サブプロセスの展開:

Loop Attributesの設定について
紫の枠内の設定が必要です。

Loop Attributesの中身

各オペレーターの設定
ピンク色の円は各オペレーター名を表し、紫の枠内のパラメータを設定する必要があります。(以降も同様)

Loop Examplesの中身

各オペレーターの設定

ここまで実行すると、結果は以下のようになります。

オレンジ枠元データ、右の緑枠が各株式の日次収益率を表します。
オレンジ枠の一行目以前のデータが存在していないため、緑枠一行目の値は正しくありません。
そのため、赤枠の行削除しましょう。

株式日次収益率

② ポートフォリオの収益計算

株式の収益ごとに重み付けを行います。
また、すべての株に重み付けされた収益を合計して、ポートフォリオの収益がでます。
ここでは、分かりやすくするために、ポートフォリオのパフォーマンスを収益率で表します。

使用したオペレーター:

  • Generate Macro:重み設定
  • Generate Attributes:重み付け
  • Execute Python:累積計算(ポートフォリオの収益率計算)
  • Join:結果まとめ

プロセス:

  • 既定重み付けのポートフォリオ
  • 統一重み付けのポートフォリオ
  • 時価総額で重み付けのポートフォリオ

サブプロセスを展開すると、以下のようになっています。

既定重み付けのオペレーターの設定を例として見ていきましょう。

  • 各株式の重みをマクロに入力します。

  • 重みを付けると、、、

  • Execute Pythonで累積計算(ポートフォリオの収益率計算)、とデータ形の整理します。

  • Joinで整理した結果を一つのグラフにまとめます。

ここまでを実行すると、
各株式の日次収益率

ポートフォリオの日次収益率は以下になります。

この図から、三つの提案の中で水色のパフォーマンスがやや優れています。
引き続き既定重みのポートフォリオのボラティリティ(Volatility)を計算してみましょう。

③ 株式の相関性と共分散

使用したオペレーター:

  • Numerical to Real: データ型変換
  • Matrix to ExampleSet: ExampleSetへの変換
  • Correlation Matrix: 相関性マトリックス作成
  • Covariance Matrix: 共分散マトリックス作成
  • Execute Python:標準偏差――ポートフォリオのボラティリティ

プロセス:
③のサブプロセスを展開します。

相関性マトリックスは、複数株式間の収益の間の線形関係を検討できます。

マトリクスの各要素は、それぞれの株式ペアに対して相関係数を算出します。
正の相関係数は正の相関関係があること,
相関係数が負の値の場合には負の相関関係があることを意味します。

共分散マトリックス
相関係数は株式間の線形関係しか表せない、収益の変動が分からないが、共分散マトリックスには含まれています。

  • ポートフォリオのボラティリティ――標準偏差
    ボラティリティーは、一般的に価格変動の度合いを表します。
    一般的にボラティリティーを標準偏差で数値化し、またその商品のリスクの度合いとして捉えています。
    以下の公式で、算出することができます。

ポートフォリオの標準偏差

重み

共分散マトリックス

重みの転置

・:ドット積

では、今回のプロセス全体を展開しましょう~


こんな感じになります。

実行すると、それぞれの結果を紫枠内のタブをクリックして確認することができます。

ここまでで収益とボラティリティの計算が出来ました!
でも投資の目線から、儲けをできるだけ最大化したい、
ボラティリティを小さくしたいですね。

では、どのような組み合わせが一番いいのでしょう?
次回、一緒にRapidMinerを使って探索しましょう~

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

もしRapidMinerに興味があるなら、是非今度のハンズオンに参加してみましょう!
また、ご質問等ありましたら下記の連絡先までご連絡ください。

https://ksk-anl.smktg.jp/public/application/add/43

1日で機械学習の基礎が学べる!無償ハンズオンセミナー随時開催中
https://www.ksk-anl.com/event/

RapidMinerをもっと知りたい方はこちら
https://www.rapidminer.jp/

早速使ってみたい!RapidMinerの体験版の無償DL
https://www.rapidminer.jp/download/

導入を検討中!わかりやすい詳細なQ&A
https://www.rapidminer.jp/faq/

$$ \begin{aligned} \newcommand\argmin{\mathop{\rm arg~min}\limits} \boldsymbol{\beta}_{\text{ridge}} & = \argmin_{\boldsymbol{\beta} \in \mathcal{R^p}} \biggl[ ||\boldsymbol{y}-\boldsymbol{X\beta}||^2 + \lambda ||\boldsymbol{\beta}||^2 \biggr] \\ & = (\boldsymbol{X}^T\boldsymbol{X} + \lambda\boldsymbol{I_{p+1}})^{-1}\boldsymbol{X}^T\boldsymbol{y} \end{aligned} $$
PAGE TOP