2016-01-01から1ヶ月間の記事一覧

Quantstratを使う3

「Quantstratを使う2 〜 簡単な実装」の続き。 トヨタの株価を使用して、単純に、終値が75日移動平均より上の場合に買うロジックを作ってみた。 目的はツールの使い方を調べることで、学習中なので売りロジックなど入っていない。 このような単純なロジック…

IN句を使用してselectで条件付き検索した結果を、IN句で指定した順番で抽出する

field句を使用して、次のようにすれば良い。 ポイントは、field句でカラム名を囲む際に、バッククォート(`)を使用すること。アポストロフィーだと期待する動きにならない。 SELECT id FROM table where id in (1,5,3,2) order by field(`id`, 1,5,3,2) ; …

単純移動平均とモーメンタムの関係について

- (追記 2016/01/28) 当初エントリー内容に新しく内容を追加。また、プログラムの変数名も自分が分かりやすいように変更。ただし、最終的な結果は同じで変更は無し。 - 必要なライブラリの読み込み。 require(quantmod) require(TTR) require(PerformanceAna…

Quantstratを使う1 〜 インストール 

まず初めに、このエントリーは「Using Quantstrat」を元に作成している。 正確な情報はこのPDFを参照。さて、8ページ目あたりに下図がある。 今回の対象範囲に赤丸を付けた。QuantStratとはその名の通り、トレードシグナルのロジックを作成するためのツール…

リスクについて

まずは、必要なRの関数について。 ・cummax関数 引数に与えたベクトルの要素について、それまでの要素の最大値を求める。 日本語では上手く言えないが試してみれば分かる。 > cummax(c(1,5,2,6,7,8,9,10,2)) [1] 1 5 5 6 7 8 9 10 10 この関数を使用してドロ…

Quantstratを使う2 〜 簡単な実装

前回「Quantstratを使う1 〜 インストール」ではインストールまで終わったので、簡単な実装をしてみる。■トレード戦略 ・シンボルデータ -GBPUSD -30分足のOHLCデータ・2つのSMAのデッドクロス/ゴールデンクロスを使用 -SMA10 -SMA30・エントリーロジック -…

シグナル集計

前回「シグナルの生成と検証」の続き。 > prev_x_qty<-0 > position<-0 > trade_size<-100 > signal<-as.numeric(data$signal) > signal[is.na(signal)]<-0 > beta<-as.numeric(data$betas) > qty_x<-rep(0, length(signal)) > qty_y<-rep(0, length(signal)…

シグナルの生成と検証

前回「スプレッドの構築」の続き。とりあえず、写経したところまでメモ。各種設定値およびデータの作成。 # ローリング期間 > window_length <- 10 # データ開始日・終了日 > start_date<-"2013-01-01" > end_date<-"2013-12-31" # データ範囲文字列の作成 >…

スプレッドの構築

スプレッドを計算する関数。 > calculate_spread<-function(x, y, beta){ + return (y - beta*x) + } βとレベルを計算する関数。 > calculate_beta_and_level<-function(x, y, start_date, end_date){ + require(xts) + time_range<-paste(start_date, "::",…

主成分を計算する

「共和分と総最小二乗法(TLS) 〜 主成分分析(PCA)の利用」の続き。データは「TOPIXと個別銘柄の価格」で求めた、UFJとTOPIXのデータを使用する。 > head(YJ8306_20130101_20140101) YJ8306.Open YJ8306.High YJ8306.Low YJ8306.Close YJ8306.Volume YJ83…

共和分と総最小二乗法(TLS) 〜 主成分分析(PCA)の利用

「COINTEGRATION AND TOTAL-LEAST-SQUARES REGRESSION」を読んでのメモ*1。まずはこの5点。 1.ある1つの株価データを使って、別の株価データの動きを計算する 2.線形回帰「株価A〜株価B」を計算し、式「株価A = intercept + beta * 株価B」におけるbeta…

TOPIXと個別銘柄の価格

前回「2銘柄の価格」で行ったことをTOPIXと個別銘柄で行う。TOPIX株価取得。 > YJ998405_20130101_20140101<-getSymbols("YJ998405", src="yahooj", auto.assign=FALSE, from='2013-01-01', to='2014-01-01') > head(YJ998405_20130101_20140101) YJ998405.O…

2銘柄の価格

株価の取得。 > YJ4528<-getSymbols("YJ4528", src="yahooj", auto.assign=FALSE, from='2013-01-01', to='2014-01-01') > head(YJ4528) YJ4528.Open YJ4528.High YJ4528.Low YJ4528.Close YJ4528.Volume YJ4528.Adjusted 2013-01-04 4475 4500 4445 4500 27…

自己相関いくつか

前回は相関についてメモした。前回のTOPIXのリターンデータの相関、2乗の相関、絶対値の自己相関をメモしておく。1次の自己相関。 > acf(YJ998405_returns) 2次の自己相関。 > acf(YJ998405_returns*YJ998405_returns) 絶対値の自己相関。 > acf(abs(YJ99840…

相関 〜 続編

トヨタ自動車のデータを取得。 > getSymbols("YJ7203", src='yahooj') [1] "YJ7203" > head(YJ7203) YJ7203.Open YJ7203.High YJ7203.Low YJ7203.Close YJ7203.Volume YJ7203.Adjusted 2007-01-04 8110 8140 8060 8090 6986200 8090 2007-01-05 8100 8100 78…

相関

国語と算数の点数を格納したベクトルを作り、分散と共分散を計算する。 国語と算数の点数は、合計で10点だとする。 > kokugo<-c(5,3,8,7,9) > sansu<-c(5,7,2,3,1) > var(kokugo,sansu) [1] -5.8 > cov(kokugo,sansu) [1] -5.8 合計で100点の場合は次のよう…

検定を行う前に 〜 データの整備

前回「urcaパッケージを使用した定常性検定 〜 続編」では、shapiro検定を使用して、TOPIX日次リターンの正規性を確認した。ところで、仮に検定対象のデータに異常値が含まれていたら検定結果はどのようになるのか。これが今回のテーマ。 > set.seed(100) > …

urcaパッケージを使用した定常性検定 〜 続編

前回「urcaパッケージを使用した定常性検定」の続き。今回はTOPIXのリターンについて、リターンの分布を調べる。 ※)ちなみに、以前のエントリー「Rで確率・統計の中級 〜 株価の分布」では(TOPIXではないが)価格の分布を調べた。その時、価格分布は非定常…

urcaパッケージを使用した定常性検定

urcaパッケージについては、マニュアル参照。 ざっとコードを追って、補足は追々後日しておく。 > getSymbols('YJ2489.T', src='yahooj') # アドウェイズの株価取得 [1] "YJ2489.T" > head(YJ2489.T) # 株価確認 YJ2489.T.Open YJ2489.T.High YJ2489.T.Low Y…

Rで確率・統計の中級 〜 株価の分布

価格分布を描く。 > T6758_AdjClose<-T6758$YJ6758.T.Adjusted > head(T6758_AdjClose) YJ6758.T.Adjusted 1983-01-04 1586.36 1983-01-05 1595.45 1983-01-06 1577.27 1983-01-07 1590.91 1983-01-08 1581.82 1983-01-10 1563.64 > T6758_MeanAdjClose<-mea…

Rで確率・統計の基礎2 〜 中心極限定理

前回「Rで確率・統計の基礎1 〜 母集団と標本」の続き。前回とは異なり、常に10個の抽出を行って平均を取得し、それらをリストmean_listに入れる。 そのヒストグラムを描き、Xの平均を縦線で追加で描く。 > mean_list<-list() > for(i in 1:10000){ + mean_…

Rで確率・統計の基礎1 〜 母集団と標本

乱数を生成してヒストグラムを描き、その上に平均値を縦線で描く。 ほぼ教科書通り。 > set.seed(100) > X <- rnorm(1000000, mean = 2.33, sd = 0.5) > mu <- mean(X) > sd <- sd(X) > hist(X, breaks=100) > abline(v=mu, lwd =3, lty =1) set.seed(引数)…

ggplot2でグラフ作成

前回は「quantmodでグラフ作成」だったが、今回はggplot2を使用する。データの確認。 > head(T6758) YJ6758.T.Open YJ6758.T.High YJ6758.T.Low YJ6758.T.Close YJ6758.T.Volume YJ6758.T.Adjusted 1983-01-04 1755 1770 1745 1745 309800 1586.36 1983-01-0…

quantmodでグラフ作成

前回「quantmodで株価データ取得」で取得したデータ「T6758」を使用したグラフを描いてみる。使用する関数はchartSeries。Rのプロンプトで「?chartSeries」と入力するとブラウザでAPIの仕様を読むことができる。 下記のようなもので、一部引用した。 Descrip…

quantmodで株価データ取得

米株データ取得がデフォルトだけど、src="yahooj"とすれば日本株データも取得可能。早速エラーだったが、パッケージが無かっただけ。 > getSymbols('6758.T', src="yahooj") getSymbols.yahooj(Symbols = "6758.T", env = <environment>, verbose = FALSE, でエラー: pack</environment>…

RからMySQL接続1 〜 RMySQL

ソース。 > install.packages("RMySQL") > require(RMySQL) > conn<-dbConnect(MySQL(), user="ユーザ名", password="パスワード", dbname="r", host="ホスト名/IPアドレス") > dbList<-dbListTables(conn) > class(dbList) [1] "character" > sql_command<-…

Excelファイルからデータを取り出す/データを書き込むパッケージ 〜 XLConnect

パッケージ「XLConnect」をインストールして、次のように使えばいい。 > install.packages("XLConnect") 警告: package ‘XLConnect’ is in use and will not be installed > library("XLConnect") > orderBook<-loadWorkbook("order.xlsx") > signals=readWo…

Yahoo Finance Americaから株価を取得してグラフにする

Yahoo Finance Americaから株価を取得してグラフにする。 取得した株価の銘柄は「The Bank of New York Mellon Corporation (BK)」。データはこんな感じのCSV。 Date Open High Low Close Volume Adj Close 2016/1/4 40.290001 40.290001 39.48 39.970001 74…

RStudioでグラフがかけない。

Rでは、ちょろっとグラフを書いてみたり、概要を把握するためにちょろっと計算したりするためだけに使用しているので、IDEも便利なエディタも特に不要だったけど、RStudio使おうかなと思った。それで、簡単なグラフをかいてみようとしたけど、グラフが出力さ…

R関数メモ

適宜、Rの関数をメモするためのエントリー。■%in% ベクトルvec1の中でベクトルvec2にも入っている要素を確認する関数 > vec1<-c(1,3,6,9,3.4) > vec2<-c(0,3,5,9,4) > vec1 %in% vec2 [1] FALSE TRUE FALSE TRUE FALSE■complete.cases 行ごとにNAがある場合…