Greeks under normal model

任意の共分散行列に従う正規乱数の生成

概要

  • 任意の共分散行列に従う正規乱数の生成
  • 共分散行列の固有値と固有ベクトルから求められる
  • pythonで乱数が生成されることを確認する

数式

線形代数のおさらいという感じですが…(― ―)
各要素が実数の対称行列\( A\) (n行n列)は
$$
A = U \cdot \Sigma \cdot U^T
$$
と対角化可能(diasonalisable)である。ただし\(U\)は各列が固有ベクトル、\(\Sigma\)は対角行列で対角要素が固有値。
このとき\(R\)を、各要素がiid標準正規分布に従う1行n列のベクトルとした場合、
$$
R \cdot \Sigma^{1/2} \cdot U^T \sim N \left( 0, A \right)
$$
となる。

pythonで確認

データの用意

今回はSP500, EURO STOXX 50, FTSEの日次リターンの共分散行列を使用します。オリジナルデータはこんな感じ↓
original_data

元の共分散行列、相関行列はこんな感じ↓
original_cov

共分散行列に従うサンプルの生成

lo_returnという変数に日次変数が格納されていると仮定しています。

correlated_sampleという変数に、もとの共分散行列に従う(とされる)サンプルが格納されています。実際に確認したのが以下。どうやら近いっぽい。
sample_cov

ちなみに生成されたサンプルは以下のような感じ
sample_data

Quandlを用いて先物ロングオンリーのパフォーマンスを計測する

概要

  • Quandlから主要な先物の各限月データが取得できるので、それを用いて先物ロングオンリーのパフォーマンスを計測する。(先物ロングオンリー = 期近の買い持ち)

データ概要

今回対象としたアセットクラスは

  • 株式指数先物
  • 国債先物
  • 金利先物
  • 為替先物
  • コモディティ先物

の合計82項目。あまりメジャーでないと思われる先物は省いています。またQuandlには全ての限月が掲載されているわけではなく、例えば日経平均先物は2013年12月限からしかデータがありません。

先物ロール方法

基本的にはDeliveryの3営業日前に期近から期先へとロールするようにしています。単純に各先物のパフォーマンスを見てみたいだけなので、取引コストは無視しています。

各統計量について

先物のリターンを計測しているので、パフォーマンスは無リスク金利に対する超過リターンベースとなっています。

結果

と言いつつjupyter notebookの直貼りです。

参考

Collections – Quandl
https://www.quandl.com/collections/futures

Kerasでお試しニューラルネットワーク

概要

  • NNやCNNが簡単に記述できるKerasパッケージのお試し
  • 簡単な2レイヤーのNNの実装

Jupyter notebook

詳細は下記ノートブックを見て下さいというわけですが。。。

メモ

学習済みのパラメータを外部ファイルに保存することもできるようなので、それを読みこませれば毎度毎度再学習させる必要もないとのこと。

今回は簡単なNNなので適当なハイパーパラメータでも十分に収束しているように見えるが、込み入ったNNやディ〜プなんちゃらをやる場合にはちゃんとお勉強する必要がありますな(― ―)

前述したようにパラメータを保存できるので、ハイパーパラメータをメタデータとしてArctic(Mongo DBのお手軽コネクタみたいなパッケージhttps://github.com/manahl/arctic)に保存しておけば後々のクロスバリデーションとかも簡単になるんじゃねーのと適当に妄想中。

参考

Keras Documentation
http://keras.io/

CS231n Convolutional Neural Networks for Visual Recognition
http://cs231n.github.io/

Jupyter notebookをWordPressに転載する

概要

・Jupyter notebookを手っ取り早くwordpressに転載する方法。

HTML

div#ipynb_test -> iframe#iframe_test
という構造を想定しています。Jupyterからnotebookをhtmlとして出力。それをwordpressと同一ドメイン上にアップロードしております。

JavaScript

というかJSをどうやって書くかを忘れてたので備忘録。notebookファイル自体には手を加えずにその外側で対応するようにしています。

最初はload関数を使って読み込もうと思ったのですが、レイアウトとCSSが大幅に崩れるようなのでiframeを使っています。
iframeのheightはnotebookのheightと同様になるようにsetIntervalで毎秒判定しています。
(もう少し良い方法があるような気がする)
また転載に伴い必要のないCSSの一部をオフにしています。

描画テスト