サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
2024年ランキング
nekopuni.holy.jp
概要 (9-Jul-2017) データ更新 Time-series momentumおよびMomentum全般に関するまとめ 前回作成したロングオンリー系列をもとにTime-series momentumのバックテストを行なう 1. CTA Automated Hedge Funds Make Millions in January’s Market Selloff – WSJ The Quants Are Taking Over Wall Street ここ数年(?)ですが、コンピュータードリブンの投資意思決定を行なうファンドがにわかに注目を集めています。その中でも特にヘッドラインを占めるのが俗にCTA(Commodity Trading Advisers)と呼ばれるヘッジファンドのグループではないでしょうか。CTAは、名前にこそCommodityとありますが、投資対象をコモディティに限
概要 ・しばらくティックデータで遊んでいたのだが、その際にハマった点についてのメモ 取得方法 URL そもそも取得する方法ですが、 http://www.google.com/finance/getprices?p=1d&f=d,h,o,l,c,v&i=300&x=INDEXNIKKEI&q=NI225 このような形で取得することができます。上記URLは日経平均を取得します。 ちなみに、ティックデータのAPIに関するドキュメントはどうやら公式には無いらしく、詳しいことは分からないようです(知っている人が居たら教えて下さい!) URLパラメータの説明 URLに付随するパラメータに関しては q – ティッカー (日経平均ならNI225、ドル円ならUSDJPY) x – ティッカーが取引されている取引所 (為替や特定の株価に関しては指定する必要なし) i – 何秒刻みのデータか (86400で1
概要 ・GARCHでドル円のボラティリティを推定 ・tseriesのgarch関数を使えるようになるまで モデル GARCHを何となく把握する必要があるような気がしてきたので概観とRの使い方だけメモ リターン系列\( r_t \)をAR(m)モデルに適用した場合の残差系列\( \epsilon_t \)としたとき、GARCH(p,q)は以下。 $$ \epsilon_t \sim N \left( 0, \sigma_t^2 \right) \\ \epsilon_t = \sigma_t z_t \\ z_t \sim N \left(0, 1 \right) \\ \sigma_t^2 = w + \sum_{i=0}^p \beta_i \sigma_{t-i}^2 + \sum_{j=1}^q \alpha_j \epsilon_{t-j}^2 $$ 2-3行目が解釈しづらかったの
概要 ・Quandlから各限月の先物価格を取得し、月末ローリングでのリターン系列を作成する ・Quandlのデフォルト期近系列そのものは実現可能なリターンではない Quandlの先物ロール方法について Quandlには期近の価格系列がすでにあるのですが、それを用いて分析する場合少し問題があります。 Continuous Contracts – Data from Quandl https://www.quandl.com/c/futures/continuous Quandl’s continuous contracts are created using the simplest possible roll algorithm: “end-to-end concatenation”. That is to say, CL1 is always the crude oil contract
概要 xlwingsというpythonパッケージを使うことでExcelからPython関数を呼ぶ さらにRのPypeRパッケージを使うことでPythonからR関数を呼ぶ Quandlから日経平均を取得し、そこからGarchモデルを計算してみる xlwingsを用いたPythonとExcelの連携 公式HPとドキュメントが非常にわかりやすいのでそこに従うだけで連携は簡単にできます。(URLは記事一番下にあります) xlwingsのダウンロードはpipがある環境では
概要 未知パラメータ(ノイズの分散など)を含む場合のパーティクルフィルタの実装 システムノイズが正規分布の場合とコーシー分布の場合の比較 システムノイズが正規分布の場合 詳しい理論に関しては参考文献のP.225辺りからを御覧ください。 library(pipeR) library(dlm) #------------------------------------------------------------------------------ # Generate sample data #------------------------------------------------------------------------------ mod <- dlmModPoly(1, dV = 2, dW = 1, m0 = 10, C0 = 9) n <- 100 set.seed
概要 ExcelPythonを使うとエクセルのビルドイン関数のようにpythonの関数を呼び出すことができる 当然numpyにも対応。ただしpythonのクラスには対応していない(?) VBAを1行も書く必要がない。xlwingsではVBAに、呼び出したいpython関数を書かなければならなかった。 VBAを駆逐可能という代物 ExcelPythonのインストール まずは下記サイトダウンロードし、インストールします。今回はv2.0.8を使用しています。 ExcelPython – Write Excel UDFs in Python! http://ericremoreynolds.github.io/excelpython/ その後エクセルを起動させるとExcelPythonのリボンが追加されています。 Pythonコード ここでは前回の記事で使用した関数を流用します。 ポイントとしては
概要 そんなにパフォーマンス良くないよ モメンタム効果(など)を説明変数としたうえでランダムフォレストによりシグナルを発生 パフォーマンスの計測とロングオンリーとの比較 モメンタム効果とは 一言で言うと、「上がってる株は今後も上がる、下がってる株は今後も下がる」という傾向を表すものです。また、この効果は何も株に限定されるものではなく、様々な資産クラスにおいて報告されています(例えば参考[1]) モメンタム効果を表す代理変数としては、「過去X日のリターン」といったものが良く使われますね。 もしくは「今日の株価が過去X日の移動平均よりも高いか低いか」などでしょうか。 このモメンタム効果を駆使することによって俺様投資戦略を開発しメシウマヘブンを狙うのがこの記事の趣旨です。 なぜランダムフォレスト? どうもランダムフォレスト最強と思ってるマンです。 というよりも別にランダムフォレストじゃなくても良
概要 ・TrueFXにて公開されているミリ秒単位のクオートをもとに秒足データに加工する ・Pandasを用いて任意の間隔(今回は5秒間隔)のOHLCデータにリサンプリング ・matplotlibでロウソク足チャートを描画する nysol前処理 為替データに関しては参考サイト1からダウンロード可能。 nysolは2.0を使用。 TrueFXのサイトからダウンロードできるデータは月次でcsvにまとまっているので、とりあえず日次に分解して個別ファイルに保存するようにしています。 私はこれをparseFxData.shというシェルスクリプトとして保存しています。 #!/bin/sh outDirectory="daily" if [ ! -e ${outDirectory} ]; then #create save directory mkdir ${outDirectory} fi mchkcs
概要 ・並列処理が可能なMultiprocessingモジュールの使い方をメモる Pythonコード cpu_count()でコア数を取得できる。コア数4で計算。 apply_async()でタスクを渡して、get()で実行結果を取得する。 asyncという名前が付いているように、終わり次第その結果を取得するようだ。ただしget()で結果を抽出するとタスクを渡している順番に結果が帰ってきてるように見える。 # -*- coding: utf-8 -*- import numpy as np import multiprocessing as mp import time class CountClass(): def __init__(self, n): self.m = np.ones(n) def count(self): out = 0 for i in xrange(len(sel
概要 ・迷路の状態価値を学習させるよくあるパターン ・Q学習を使って学習、政策の選択(どっちの方向に移動するか)はとりあえずランダム ・学習してるっぽいのでRのanimationパッケージを使って学習の様子を可視化 ・エージェントかわいい やってること 久しぶりの強化学習シリーズ。書いている本人もすっかり内容を忘れているので、思い出しがてら迷路を探索してみる。 基本的には迷路内をランダムに移動しながらゴールを目指す。ゴールに到達すると大きな報酬(rewardGoal)がもらえる。それ以外のマスでは1マス歩くごとに-1の報酬(懲罰)がもらえる。これにより、より早くゴールに達することができるマスの状態価値は高いと学習されるはず。 移動方法はとりあえずランダム。壁にぶつかる方向に進まないように無理矢理調整しているがそれ以外はランダム。 本来ならば、学習した状態価値を元に、最適と思われる方向に進む
概要 ・PythonとRを連携させることで、PythonからRのコードを実行させる ・統計的な分析はRに、データのハンドリングなどはPythonに任せるのが現時点での最適解か ・この記事はR Advent Calendar 2014(https://atnd.org/events/58648)の12/10用の記事です モチベーション 専らRやPythonはトレーディング戦略のシミュレーションに用いているわけですが、たまには統計的な分析結果をもとにトレードする戦略などを考える時もあります。 シミュレーションの本体はPythonで構築しているので、自ずとPythonで統計分析モジュールも構築する必要があるのですが、これがなかなかかゆいところに手が届かない。 (scikit-learn?知らない子ですね。) やはり餅は餅屋ということで、統計分析はRに任せたい。 というか今まで培ってきたRのノウハ
概要 ・Numpy, Pandasを使ってcsvを読み込むときの俺様備忘録 ロード対象csvフォーマット 下記pythonコードにも書いてありますが、手元にあったFXデータを使用。 フォーマットは hogehoge, YYYYMMDD, HH:MM:SS, bid price, ask price という形。 hogehogeには”USDJPY”といった為替レートの通貨名文字列が格納されてます。 stringとfloatが混在していて少し扱いが面倒。 コード いつもググってる気がするのでまとめておく 最終的に、リストのリスト形式にしたいと考えているので、各々のロード関数を使った後に変換しています。 pandasで読み込んだ後に、ndarrayに変換するのが最速という結果。 どうやらcsvを読む処理がボトルネックになっているようで、ndarrayへの変換はそこまで時間がかからない様子。 pa
概要 ・HFTでのベーシックな考え(らしい)One pass algorithmを為替秒足データへと適用 ・今回は指数ウェイト平均、分散、単回帰係数を見てみる データなど 拙ポストで恐縮ですが、 One pass algorithmについては http://nekopuni.holy.jp/?p=1005 秒足チャートについては http://nekopuni.holy.jp/?p=1285 を参照ということで。 秒足チャートに関しては、今回はUSDJPYの2014年8月4日のデータを対象として進めます。 指数ウェイト単回帰について 簡単に言うと、単回帰係数を推定する際に、指数ウェイト付された誤差項を最小化するというもの(っぽい) まずRで通常(誤差項が等ウェイト)の単回帰と、指数ウェイト単回帰の違いを見てみる。 非説明変数がt期のリターン、説明変数がt-1期までのリターン(ウィンドウは1
概要 ・Cythonを用いてnumpyのarrayへのアクセスを高速化する ・numpy使用時に陥りがちな罠(様々なサイトで書かれているが)をまとめておく 準備(setup.py) とりあえずsetup.pyを用いたコンパイル方法を使うにあたって、numpyのarrayを使う際に微妙に書き換える場所があるのでそれをメモ include_dirsの設定を行う必要がある
概要 ・いわゆる前処理 ・TrueFX(参考1)にて公開されているミリ秒単位のクオートをもとに秒足データに加工する NYSOLを使うまで そもそもなんでNYSOLなのかといいますと、とてもcsvの処理が早いらしい(参考3) しかもTrueFXからダウンロードできるcsvファイルが月別に1つのファイルにまとめてありエクセルではもはや開けない代物 というわけで実験がてらNYSOLを試してみることに。 で、 NYSOLはなんとまさかのUNIX環境のみの提供だったのでWindowsでは動かない。 Cygwin環境ならインストールできるかなとも思ったりしましたが
概要 ・強化学習シリーズその2 ・Epsilon-greedyのEpsilonに対する感度分析 → とりあえずEpsilon=0.1でやろうと思うがQ値が収束していなさそう。。より早く収束させる方法が求められる ・学習させたQ値に対して汎化能力をテストできるようコードを追加 → 学習期間と同じ期間に対してテストするも微妙な結果に Epsilonに対する感度分析 相変わらずこのシミュレーション方法で合っているのかすら謎シリーズとも言いますが^^ ・Epsilon = 0.5 Q値 赤マスはロングポジションが最適な状態、グレーはフラットポジション、青色はショートポジション。以下同様。 各エピソードの累積リターンのエルゴード平均(expanding window) ・Epsilon = 0.1 Q値 各エピソードの累積リターンのエルゴード平均(expanding window) ・Epsilon
概要 ・強化学習をトレード戦略に適用するとこんな感じになるのかなというテスト。我流なので何やってんのpgrという場合も生暖かい眼で何卒よろしくお願いします(ヘッジ文言^^) ・モンテカルロをぶん回すことでQ-valueを推定します。 ・今回は簡単のために初回訪問モンテカルロ(逐一訪問はめんどいのお) ・モメンタム戦略を試すため、状態として過去の自分自身のシャープレシオ(1ヶ月と3ヶ月)を使用しています。 ・行動決定にはEpsilon-Greedy法 初回訪問モンテカルロ いかんせん強化学習の学習自体が何をどう考えて良いか門外漢のため五里霧中+Pythonも同じく門外漢のため五里霧中のため、自身の勉強方法も探索しっぱなしという^^;; これであってんのですかねえ 詳しくは参考文献[1]のP.134を見てケロというかんじなのですが、 ・現在での状態を確認(状態=過去のシャープレシオ) ↓ ・そ
Online Algorithms in High-frequency Trading – ACM Queue http://queue.acm.org/detail.cfm?id=2534976 内容としては、HFTで用いられているone-pass algorithmsというものの紹介。 HFTで使われている一般的な方法を、私は全く知らないのでこの記事の内容が正しいのかどうかはわからないですが。 NYSEでは1秒間に215,000回もクオートが更新されるらしく、それを適切にインプットしてトレードのための意思決定を行なわなければならない。かつ、それらを高速に処理する必要がある。 そのためには以下の計算が主に重要だとか。 ・時系列平均のオンライン推定 ・ボラティリティのオンライン推定 ・単回帰の回帰推定のオンライン推定 日次データを元に計算するというタイムスケールではなく、マイクロ秒ごと(か
概要 ・米国金利(今回はスワップレートを使用)の推移 ・主成分分析結果 よく言われるように3つの主成分で大体の変動は説明される ・どの主成分がいつ効いているか(ファクター)の推移 米国金利(スワップレート)の推移 なんで米債の金利じゃないんですかと聞かれたらFRED先生がなぜかスワップレートしか提供してくれていないからです。 米債の金利に関してはFEDか財務省あたりが公表しているとかしていないかという話も聞きますがデータの取得がめんど(― ―) まあ金利スワップも米債利回りも同じようなもんだからということで、データは以下からいつものように取得。 Interest Rate Swaps – FRED – St. Louis Fed http://research.stlouisfed.org/fred2/categories/32299 xts型としてswpという変数に格納したとします。 ま
概要 ・とある物件で8000万弱のレコードを新規のDBに効率的にぶち込む方法を考える必要に ・MySQL(Amazon RDS) + Python(mysql.connector)を想定 ・mysql.connector + pythonについては拙文ながら(http://nekopuni.holy.jp/?p=927)に書いております。 ・コミットの位置には気をつけよう + Multiple Insert最強ねというお話。 方法その1 まずは最初にやった方法。1レコードごとにInsertしてコミットしていく方法。 今までDB関連でやったコードはレコード量も大したことなかったので以下の方法でも特に問題なかった。 具体的な環境としてはテキストデータ(csv)を読み込み、それをDBにInsertしていくというもの。 csvの中身は日付(DATE)とデータ値(VALUE)がカンマ区切りになってい
モデルの概要 今回は最終的に和分ランダムウォークを2変量へと拡張します。 まずは、2変量のDLMを構築するわけですが、といっても概形は1変量とあまり変わりません。 $$ \left( \begin{array}{c} y_{1,t} \\ y_{2,t} \\ \end{array} \right) = \left( \begin{array}{cccc} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ \end{array} \right) \left( \begin{array}{c} \mu_{1, t} \\ \mu_{2, t} \\ \beta_{1, t} \\ \beta_{2, t} \\ \end{array} \right) + \left( \begin{array}{c} v_{1, t} \\ v_{2, t} \\ \end{array}
概要 ・状態空間モデルの練習も兼ねて非農業部門雇用者数(の変化)をモデル化し、1期先予測を行なう。 ・使うモデルはローカルレベルモデル ローカルレベルモデルとは 学んだばかりのものをドヤ顔で紹介するわけですが、ローカルレベルモデルとは以下のように定式化されます。 $$ y_t = \mu_t + v_t \\ \mu_t = \mu_{t-1} + w_t $$ ここで\( v_t, w_t \)は正規分布に従い $$ v_t \sim N \left( 0, V \right) \\ w_t \sim N \left( 0, W \right) $$ と表されます。解釈としては、\( \mu_t \)が\( t \)時点での観測不可能な状態、これがランダムウォークに従い、また実際に観測される値(今回は非農業部門雇用者数(NFP)の変化が該当する)は、その状態から観測誤差( \( v_t
このページを最初にブックマークしてみませんか?
『神金融最新!他社借り入れ7件で借りれるカードローン』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く