2011-01-01から1年間の記事一覧

Decorator パターン

Decorator パターン - Wikipediaオブジェクトにどんどんデコレーションをくっつけていくようなイメージ。実際にはどんどんオブジェクトをかぶせていく。くっつけられていくものは”機能”。以下の例はwikipediaに載って得いたJAVAのコードをC++に書き変えたも…

小技「if-elseは値を返すのか…そしてswitchよ、お前もか…」

R

知らなかった。 > if(TRUE){1:10}else{10:1} [1] 1 2 3 4 5 6 7 8 9 10 > if(FALSE){1:10}else{10:1} [1] 10 9 8 7 6 5 4 3 2 1 switch文は他の言語と違ってマッチの方法がちょっと気持ち悪い。文字列使うなってことかな。 > x <- 1:5 > type <- "mean" > sw…

上書きしてしまった関数を掘り起こす(match.fun関数)

R

たとえば以下のようにouter関数を適当な値で上書きしてしまった場合 outer <- 1:5 このままではouter関数を呼ぼうと思ってもouter変数を読んでしまうことになるが、match.fun関数を使って match.fun(outer) としてやることで上書きしてしまった関数を掘り起…

Composite パターン

Composite パターン - Wikipedia容器(Composite)と中身(Leaf)を同一視(Component)して、再帰的な構造を作るデザインパターン。以下の例のようにファイルとフォルダの関係のようなもん。一般に木構造で書けるものはこのパターンが当てはまる。addメソッドをど…

Strategy パターン

Strategy パターン - Wikipediaアルゴリズムを簡単に切り替えることができるようにしておくことで、同じ問題を別の方法で解くことを容易にする。Strategy パターンの クラス図は Bridge パターン - My Life as a Mock Quantのものと表面的には同じ。 #include<string></string>…

Builder パターン

Builder パターン - Wikipedia構造をもったオブジェクトを作成するパターン。構造を作り上げる過程の詳細はDirectorが隠ぺい。またDirectorは建築会社(Builder)にオブジェクト(今回はテキスト)の作成を依頼するものの、どこの会社(Text or HTMLBuilder)…

expand.grid関数・outer関数を使って2重forループを美しく書く

R

twitterで「Rでfor文書いて本当にすまんかった」旨を呟いたら色々とアドバイスが貰えた。内容は「expand.grid関数やouter関数を使えばいいのではないか?」ということだったので、ちょっとメモがてらやっておく。まずはexpand.grid関数を試してみると > x.se…

トレーディング戦略をRでバックテストする方法

なかなか面白い&有用な記事を見つけたので日本語に翻訳します。意訳がいっぱいあったり、完訳ではない点ご勘弁。ちなみにバックテストってのは「あるトレーディング戦略が過去どの程度有効だったのかを確かめる事」という意味。この記事で紹介されているス…

Prototype パターン

Prototype pattern - Wikipediaクラスからオブジェクトではなく、オブジェクトからオブジェクトを生成するパターン。Product(Prototype)だけを扱うManager(Client)が、UnderlinePen(Concrete Protype)を知ることなく新たなオブジェクトを生成することができ…

参照・ポインタ使い分けのとりあえずのルール

C++

久しぶりにC++書いてて思ったこと&思いだしたマイルール的なもの。 クラスのメンバ変数はポインタ オブジェクトの後始末を相手に渡す時はポインタ渡し そうじゃないときは参照 デザパタで書いた奴は上のルールに沿ってないのもあるけどいいや。

Bridge パターン

Bridge パターン - Wikipedia 「実装のクラス階層(Implementor)」と「機能のクラス階層(Abstraction)」を分けて、2つの独立したクラス階層にする。ついでに参照とポインタの関係も怪しかったのでいろいろやった。 #include<iostream> #include<string> using namespace std; /</string></iostream>…

Singleton パターン

Singleton パターン - Wikipediaそのクラスのインスタンスが1つしかないことを保証。一見簡単に書けるけど、単純に書いてしまうと(以下の例はすべて)マルチスレッド化した際に破たんするという実は奥が深いパターン。 参考LINK マルチスレッドにおける si…

Factory Method パターン

Factory Method パターン - Wikipediaインスタンスを生成する工場をTemplate Method パターンで構成したもの。Factory(Creator)でProduct(Product)の生成手順を記述しておいて、IDCardFactory(Concrete Creator)にIDCard(Concrete Productの作り方の詳細を記…

Template Method パターン

Template Method パターン - WikipediaAbstractDisplay(AbstractClass)で処理の骨組みを規定して、CharDisplay・StringClass(ConcreteClass)で処理の内容を具体化。 #include <iostream> #include <string> using namespace std; //AbstractClass class AbstractDisplay { publ</string></iostream>…

Adapterパターン

Adapter パターン - Wikipedia 上記LINKにある「委譲を利用したAdapter」の方で実装。継承を利用した版はC++だと多重継承になるんでめんどい。 Bannerクラス(Adaptee)が既に手元にある時、それをPrintBanner(Adapter)に委譲して、Printクラス(Target)として…

Iteratorパターン

完全にデザインパターンを忘れているので、復習を兼ねて1通りやっていこうと思う。手元ではJava言語で学ぶデザインパターン入門を見ながらやっている。 というわけで、今回はIteratorパターン。 Iterator パターン - Wikipedia だいたいどの言語でも実装さ…

第12回R勉強会@東京(#TokyoR)で話してきた

第12回R勉強会@東京(#TokyoR)で「Rで学ぶ回帰分析と単位根検定」というタイトルでお話させていただいた。 Rで学ぶ回帰分析と単位根検定 View more presentations from teramonagi ポイントをざっくりとまとめると ランダムウォーク(単位根過程)同士を回…

RStudioの文字化けを直す(windows XP)

R

日本のRコミュニティで話題の「RStudio」を入れてみたものはいいものの、windows環境下では文字化けして困っていたが、 Sys.setlocale("LC_CTYPE","C") をRStudioのコンソール上で入力すると解決した。ただし、これを実行した後libraryを読み込もうとしたら…

関数呼び出しのオーバーヘッドがすごい・・・ような気がした時期が私にもありました(修正)

R

今、いろんな関数に対してxtsオブジェクトを返すようなラッパー関数群パッケージを作ろうと思っていたのですが、関数呼び出しを一個噛ませただけでオーバーヘッドがすごくてこりゃこのままのやり方だと使いものにならないものができそうだぞと。以下、具体的…

yyyy年mm月dd日から○○個前のデータから取得したいという時

R

xtsパッケージを使っているとタイトルにあるように yyyy年mm月dd日から○○個前のデータから取得したいという時 というのが結構ある。結構あるがいい書き方がわからない&一回書いてもよく忘れるのでここにメモしておく。いい書き方がまた見つかったら追加…

...で変数をバインディングした関数を返す関数の挙動メモ

R

...で変数をバインディングした時の挙動。私的メモ。 > BindedFunc <- function(func,...){ + function(val){ + func(val,...) + } + } > MyFunc1 <- function(a,b){ + a - b + } > MyFunc2 <- function(a,b,c){ + a * b - c + } > BindedFunc(MyFunc1,b = 3…

do.callは気持ち悪いのでReduceを積極的に使いたい

R

リストをデータフレームの形に直すためにはdo.callを使うのが王道?(コチラ)っぽいんだけど、関数名を文字列で指定するのが気持ち悪いので同じような動作をReduceで再現してみた。こっちのほうが好き。 > x <- list(x = 1:5, y = 101:105, z = 1001:1005) …

doSMPをインストールして、それで並列計算してみた

R

ちょっと前に「foreach+doSNOWパッケージを使って、並列処理をやってみた - My Life as a Mock Quant」という記事を書いてdoSNOWパッケージを使ったRによる並列化計算を紹介したけどdoSMPパッケージなる並列化パッケージもあるらしい。というわけで早速試す…

サイズを指定したリスト(list)の初期化方法

R

vector関数を使えば、こんなんで初期化できるらしい。例は4つの要素を持つリストの初期化。 > vector("list",4) [[1]] NULL [[2]] NULL [[3]] NULL [[4]] NULL

foreach+doSNOWパッケージを使って、並列処理をやってみた

R

なんだかweb屋界隈ではHadoopだのMahoutだの象を使うだの使わないだの楽しそうな事をやっていて、私はとてもさみしく、そしてうらやましくもなったわけですが手元にそんな立派な環境なんてないわけで。しかし、そんな私にもマルチコアのパソコンが与えられて…

list(リスト)に対してデータはcでアペンドできる

R

Rでリストに要素をアペンドするにはc関数を使うのがスマートっぽい。これ良く使うのにすぐ忘れるのでメモ… > x <-list() > x <- c(x,list(1:10)) > x <- c(x,list(letters)) > x [[1]] [1] 1 2 3 4 5 6 7 8 9 10 [[2]] [1] "a" "b" "c" "d" "e" "f" "g" "h" …

C++ でXLLアドインを作る with XLW−3〜関数作成&XLWについて〜

C++

過去の記事 C++ でXLLアドインを作る with XLW−1〜インストールからサンプルソリューション実行まで〜 - My Life as a Mock Quant C++ でXLLアドインを作る with XLW−2〜サンプルソリューション解説とXLLのデバッグ方法〜 - My Life as a Mock Quant 前回…

C++ でXLLアドインを作る with XLW−2〜サンプルソリューション解説とXLLのデバッグ方法〜

C++

前回の記事(C++ でXLLアドインを作る with XLW−1〜インストールからサンプルソリューション実行まで〜 - My Life as a Mock Quant)の続き。前回でXLWのインストールからサンプルソリューションを実際に動かす方法までを示したので、今回は「サンプルソリ…

C++ でXLLアドインを作る with XLW−1〜インストールからサンプルソリューション実行まで〜

C++

xll(要するにExcelのアドインとして使えるdll)を作るためには通常Excel APIなるCのAPIを操作しなければならないのですが、幸いにしてそれのラッパーxlwを開発してくださっている方がおり、それを使ってxllを作成することで開発の手間が激減されます。今回…

等質なCDOを評価するコードを書いてみた

金融危機時における資産価格変動の相互依存関係:コピュラに基づく評価 新谷 幸平、山田 哲也、吉羽 要直に倣って等質なCDOのスプレッドを評価してみた。このディスカッションペーパーのP23-表7を再現することが目的。コピュラって何?CDOって何?という話自…