Bootstrapを用いて為替商品計算ツールインタフェースをつくったみた!
イントロ
目的
- 日々の業務でもどうせなら流行りのwebアプリにのったものを使いたい
- 見た目の美しいインタフェース
- 自由自在で使い勝手の良いインタフェース
- 端末に関係なく使えるwebアプリ
現状
- エクセルツールとかいうダサいインタフェース。
- UI用ライブラリ使ったアプリもあるけど依然としてダサいし、保守がめんどうだ
問題点
解決策
- 更新が容易なweb UIスキームを用いて、UIを作ろう!
- なぜなら、
- 見た目が美しい
- 更新が容易
- 端末依存がない
- なぜなら、
Bootstrapとは
Bootstrap
Bootstrapを使ってみよう
準備
- このページに従って準備を行った
Fx Calculatorをつくってみた
依然としてダサいがまあデザインは後で改良するとしてこんな感じ
<!DOCTYPE html>
Bootstrap Sample <header style="background-color:white"> <h1>Fx Calculator</h1> </header> <div class="container-fluid"> <div class="row"> <div class="col-sm-4" style="background-color:gray;"> <h3>Today</h1> <div class="form-group"> <lable for="today">Today</lable> <input type="date" class="form-control" id="today"> </div> <div class="form-group"> <lable for="spot-rate">Spot Rate</lable> <input type="value" class="form-control" id="spot-rate" value="100.0"> </div> <h3>Model</h1> <div class="form-group"> <lable for="drift">Drift</lable> <input type="value" class="form-control" id="drift" value="0.0"> </div> <div class="form-group"> <lable for="volatility">Volatility</lable> <input type="value" class="form-control" id="volatility" value="0.0"> </div> <h3>Contract</h1> <select class="form-control"> <option>FxForward</option> <option>FxCallOption</option> <option>FxPutOption</option> </select> <div class="form-group"> <lable for="strike">Strike</lable> <input type="value" class="form-control" id="strike" value="0.0"> </div> <div class="form-group"> <lable for="delivery">DeliveryDate</lable> <input type="date" class="form-control" id="delivery"> </div> </div> <div class="col-sm-8" style="background-color:white;"> <h3>Result</h1> </div> </div> </div> <footer style="background-color:gray"> <button type="button" class="btn btn-primary btn-lg btn-block">Calculate</button> </footer> </body>
Pythonによるデータ分析入門 その1
Intro
随分前にPythonのPandasというライブラリを使用して金融データの分析をしようと言いましたが、新社会人生活も忙しくなかなか手が出せませんでした。他にも勉強しないといけないことはありますが、ちょくちょくやっていきたいと思います。
以前、Pandas:python用データ解析ライブラリ - 金融と工学のあいだのブログで紹介したように、早速
Pythonによるデータ分析入門 ―NumPy、pandasを使ったデータ処理
- 作者: Wes McKinney,小林儀匡,鈴木宏尚,瀬戸山雅人,滝口開資,野上大介
- 出版社/メーカー: オライリージャパン
- 発売日: 2013/12/26
- メディア: 大型本
- この商品を含むブログ (5件) を見る
Shreve Ⅰ Exercises chpater2
要旨
二項モデルにおいて標本空間\(\Omega\)と確率測度\(\mathbb P\)を導入し、\(\Omega\)上の確率変数\(X\)を説明しています。期待値や条件付き期待値、マルチンゲール、マルコフ過程を説明しています。
マルチンゲール性とは
\begin{align*}
M_n=\mathbb E_n[M_{k}]~~~~~~(n < k)
\end{align*}
のように確率変数の将来の期待値\(\mathbb E_n[M_{k}]\)(現在の条件付き期待値)が現在の値\(M_n\)から変化しないことを言い、賭け事の平等性などを表しています。
進め方
奇数の問題を解いていきたいと思います。
Exercises 2.1
証)
(i)
\( \mathbb P(A) + \mathbb P(A^c) = \mathbb P(\Omega) = 1 \)より\( \mathbb P(A^c) = 1 - \mathbb P(A) \)
(ii)
\(N=2\)の時を考える。
\(\sum_{n=1}^2 \mathbb P(A_n) = \mathbb P(A_1) + \mathbb P(A_2) = \mathbb P(\cup_{n=1}^2 A_n) - \mathbb P(A_1 \cap A_2) \geq \mathbb P(\cup_{n=1}^2 A_n)\)
Exercises 2.3
証)
\(M_n=\mathbb E_n[M_k] \rightarrow \phi(M_n) \leq \mathbb E_n[\phi(M_k)]\)を証明すれば良い。
Conditional Jensen's inequalityから証明できる。
Exercises 2.5
証)
(i)
定数nを導出するために\( (M_{j+1}-M_j)^2=1 \)であることに着目する。
\(n=\sum_{j=0}^{n-1} (M_{j+1}-M_j)^2=\sum_{j=0}^{n-1} M_{j+1}^2-2M_{j+1} M_j+M_j^2\)
\(=\sum_{j=0}^{n-1} -2(M_{j+1}M_j-M_j^2)+M_{j+1}^2-M_j^2=-2I_n+M_n^2\)より
\(I_n=\frac{1}{2}M_n^2-\frac{n}{2}\)
(ii)
\(E_n[f(I_{N+1})]=E_n[f(\frac{1}{2}M_{n+1}^2-\frac{n+1}{2})]=\frac{1}{2}f(\frac{1}{2}(M_{n}+1)^2-\frac{n+1}{2})+\frac{1}{2}f(\frac{1}{2}(M_{n}-1)^2-\frac{n+1}{2})\)
\(=\frac{1}{2} f(\frac{1}{2}(M_{n}^2+2 M_{n} - n))+\frac{1}{2}f(\frac{1}{2}(M_{n}^2-2 M_{n}-n))=\frac{1}{2}f(I_n+M_{n})+\frac{1}{2}f(I_n-M_{n})\)
\(=\frac{1}{2}f(I_n+\sqrt{2I_n+n})+\frac{1}{2}f(I_n-\sqrt{2I_n-n})=g(I_n)\)
Exercises 2.7
\(S_{n+1}=S_n+g(X_1,\cdots,X_n)X_{n+1}\)として\(g(X_1,\cdots,X_n)\)が-1または1になるようにした時、
マルチンゲール性を保ちながらも全ての試行結果を保存しなければならないのでマルコフ性はない。
Exercises 2.9
証)
(i)
\(\widetilde{p_0}=1/2,\widetilde{q_0}=1/2,\widetilde{p_1}(H)=1/2,\widetilde{q_1}(H)=1/2,\widetilde{p_1}(T)=1/6,\widetilde{q_1}(T)=5/6\)より
\(\widetilde{\mathbb P}(HH)=1/4,\widetilde{\mathbb P}(HT)=1/4,\widetilde{\mathbb P}(TH)=1/12,\widetilde{\mathbb P}(TT)=5/12\)
(ii)
\(V_1(H)=\frac{4}{5}(\frac{1}{2}5+\frac{1}{2}1)=12/5\)と同様に\(V_1(T)=1/9,V_0=226/225\)
(iii)
\(\Delta_0=\frac{V_1(H)-V_1(T)}{S_1(H)-S_1(T)}=103/270\)
(iv)
\(\Delta_1(H)=\frac{V_2(HH)-V_2(HT)}{S_2(HH)-S_2(HT)}=1\)
途中・・・
Shreve Ⅰ Exercises chpater1
進め方
とりあえず奇数の問題を解いていきたいと思います。
Exercises 1.1
少し文章がわかりづらかったが、簡単にまとめると\(0 < d < 1+r < u \)かつ\( X_0=0 \)の条件の時、
\begin{align*}
X_1=\Delta_0 S_1+(1+r)(X_0-\Delta_0 S_0)
\end{align*}
は必ず正になるとはかぎらないことを証明すれば良い。
ただし、\(r\)は利率で、コインが表の時は\(S_1=uS_0\),裏の時は\(S_1=dS_0\)である。
証)
コインが表の時\(X_1(T)=\Delta_0 uS_0+(1+r)(X_0-\Delta_0 S_0)>0\)、
コインが裏の時\(X_1(H)=\Delta_0 dS_0+(1+r)(X_0-\Delta_0 S_0)>0\)が常に成り立てば良い。
しかし、上式からは\(\Delta_0S_0(u-(1+r))>0\)より\(\Delta_0>0\)、
下式からは\(\Delta_0S_0(d-(1+r))>0\)より\(\Delta_0<0\)で矛盾する。
注)
これは条件として\( X_0=0 \)を加えているが一般的には必要ない。一般的にargitrageである場合、\( P(X_1 < (r+1)X_0 )=0 \)を証明すれば良い。
Exercises 1.3
証)
\( V_0 = \frac {1}{1+r} \{ \frac{1+r-d}{u-d}V_1(H) + \frac{u-1-r}{u-d}V_1(T)\}
=\frac {1}{1+r} \{ \frac{1+r-d}{u-d}uS_0 + \frac{u-1-r}{u-d}d S_0\}
=S_0
\)
注)
たしかに\(S_0\)これは\(S_1\)を完全に複製するコストである。
Exercises 1.5
証)
どちらの場合も持ち資金は0で等しくなる。
Exercises 1.7
例1.2.4の逆のストラテジを行えば良いようです。そもそもshortは(空)売りでlongは買いだそうです。
Stochastic Calculus for Finance のお勉強
はじめに
Stochastic Calculus for Finance I: The Binomial Asset Pricing Model (Springer Finance)
- 作者: Steven Shreve
- 出版社/メーカー: Springer
- 発売日: 2003/12/02
- メディア: ハードカバー
- この商品を含むブログを見る
- 作者: Steven Shreve
- 出版社/メーカー: Springer
- 発売日: 2008/06/19
- メディア: ハードカバー
- クリック: 1回
- この商品を含むブログを見る
金融工学の分野では有名な本らしいのでお勉強することにしました。まず、一巻から読んで問題に解答していこうと思います。ちなみに英語の解答*1もあるみたいなので適宜参照します笑
texで数式を書くには
ふと疑問に思ったのですがブログで数式を表現するにはどうしたらいいのでしょうか。調べた所、MathJaxというのを用いてはてなブログでもtexによる数式を記述できるようです*2。
- 右上の管理から、「デザイン」 → 「カスタマイズ」 → 「サイドバー」 → 「モジュールを追加」と進む。
- モジュールの名前は任意に、内容に、
<script type="text/javascript" src="http://cdn.mathjax.org/mathjax/1.1-latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML" ></script>と書いて、変更を適用する。
テスト
\(\alpha\)
\(\alpha\)
\begin{align*} b_n = \sum_{m=0}^{N-1} a_m \end{align*}
\begin{align*}
b_n = \sum_{m=0}^{N-1} a_m
\end{align*}
align環境については*3を参考にしました。
Pandas:python用データ解析ライブラリ
Intro
今まで研究ではデータ解析をするのにMatlab*1を使用していたのですが、これは有償なので個人的な趣味に使用するのには難しいです。
そのため、データ解析をできるフリーソフトを探しました。条件として以下を満たす探して見ました。
- 無償
- データの入出力が楽そう
- スクリプト言語
無料のデータ解析ソフトだとR*2が有名だと思いますが、上記の2の項目に不満が出てきそうです。
そのため、データの入出力はpython、解析をRで行い、互換のあるデータ形式(JSON等)で
やり取りをする*3ことを考えたのですが、たまたまpythonでもデータ解析を行うライブラリPandas*4が存在することが分かったのでinstallしてみました。
Install 方法 (Ubuntu 12.04)
official*5の通り、
sudo apt-get install python-pandas
で大丈夫でした。その後、pythonを起動して
import pandas
とすれば良いようです。まだできたばかりで使い勝手が良いのか怪しいですし、referenceも少ないみたいですが、簡単に準備できたのでちょっと遊んでみようと思います。
また、書籍として
Pythonによるデータ分析入門 ―NumPy、pandasを使ったデータ処理
- 作者: Wes McKinney,小林儀匡,鈴木宏尚,瀬戸山雅人,滝口開資,野上大介
- 出版社/メーカー: オライリージャパン
- 発売日: 2013/12/26
- メディア: 大型本
- この商品を含むブログ (5件) を見る