読者です 読者をやめる 読者になる 読者になる

Pythonと機械学習

Pythonも機械学習も初心者ですが、頑張ってこのブログで勉強してこうと思います。

RRLの学習にGAを使ってみる

目次 目次 はじめに RRLスクリプト スクリプトの変更点 重みの変更範囲の設定と学習の実施 GAによる学習結果 シャープレシオの推移 過去の期間Tでの学習結果 未来の期間Tでの取引シミュレーション結果 過去10回分のアクションを入力してみる シャープレシオ…

DEAP

目次 目次 はじめに 使い方の解説 creator.create()関数 適応度の定義 個体の定義 base.Toolbox.register()関数 遺伝子を作成する関数 個体を作成する関数 世代を作成する関数 目的関数 交叉関数 突然変異関数 選択関数 注意点 main関数内の処理 個体にnumpy…

遺伝的アルゴリズム

目次 目次 はじめに 遺伝的アルゴリズム 用語説明 ステップ1(初期世代の作成) ステップ2 (選択) ステップ3 (交叉) ステップ4 (突然変異) Pythonで実装 実行結果 はじめに 機械学習では重みの最適化に勾配降下法が一般的に採用されているようですが、なぜだろ…

RRLをMT4で試してみる

目次 目次 はじめに RRLを実装したEA コードの解説 パラメータ説明 コードの流れ バックテスト結果 はじめに 3月はじめから書いているRRLシリーズも今回で5回目になりました。 今回はRRLをMetatrader4のEAに実装してみようと思います。 いきなりこの記事を読…

CythonでC++コードをラッピング

目次 目次 はじめに C++テストコード Cythonラッパーコード コンパイル用setup.py 実行スピード比較 C++で書いたRRLのコードをCythonでラッピング 参考にさせていただいたサイト はじめに PythonはC++に比べて圧倒的に実行速度が遅いのですが、それでもPytho…

C++でRRLを実装

目次 目次 はじめに C++による実装 実行結果 はじめに 前回はPythonで書いたRRLのコードをCython化して、学習速度がどれだけ速くなるか試してみましたが、思ったよりも実行速度が速くならず、結局理由もよく分からないので、今回はRRLのコードをC++で書いて…

CythonでRRLを実装

目次 目次 はじめに 準備するもの テストコード Cythonファイルのコンパイル 実行スピード比較 RRLをCythonで実装 Cythonスクリプト setup.py 学習実行スクリプト 学習結果 参考にさせて頂いたサイト はじめに 前回の記事では、再帰型強化学習(RRL)を使ってF…

再帰型強化学習

目次 目次 はじめに 再帰型強化学習のアルゴリズム Pythonで実装してみる 検証結果 シャープレシオの推移 過去の期間Tでの学習結果 未来の期間Tでの取引シミュレーション結果 はじめに こちらのブログで紹介されている、再帰型強化学習を使ってFXトレードを…

自動トレードボット(マージントレード版)

目次 目次 はじめに 使い方 ボットの取引ルール 運用結果 はじめに 少し前ですが、Poloniexで仮想通貨の現物取引ボットを作った記事の続編です。 前のボットは現物買いしかできませんでしたが、今回は空売り空買いができるマージントレードに対応させました…

PoloniexでMarginTrade

目次 目次 はじめに 解説ページの和訳 マージントレード アカウント ポジション マージンアカウント 強制ロスカット マージントレードをするためには? ローンを提供して利子を得るには? はじめに 現物買いだけだとボットの運用成績が悪いので空売りができる…

k近傍法

目次 目次 はじめに k近傍法のアルゴリズム 距離指標 自作スクリプト スコア比較 決定領域 自作スクリプト版 scikit-learn版 はじめに 最初は機械学習に対し、何かよく分からないマシーンが人間の様に学習しているイメージを持っていましたが、最近は学習と…

ランダムフォレスト

目次 目次 はじめに ブートストラップサンプリング 特徴量の重要度 自作スクリプト スコアと特徴量の重要度比較 決定領域 自作スクリプト版 scikit-learn版 おわりに はじめに ランダムフォレストは複数の決定木学習による多数決で学習結果を決定するアルゴ…

決定木アルゴリズムを実装してみる

目次 目次 はじめに 再帰呼び出し 決定木のチャート図 決定木で使われる乱数 特徴量の重要度 自作スクリプト テスト結果のスコア比較 特徴量の重要度比較 決定領域比較 自作版の決定領域 scikit-learn版の決定領域 決定木チャート図比較 自作版のチャート図 …

決定木アルゴリズム

目次 目次 はじめに ジニ不純度 情報エントロピー 情報利得 具体例 不純度指標にジニ不純度を使った場合 不純度指標に情報エントロピーを使った場合 参考 はじめに 今まで何も考えずに決定木を使っていましたが、どういうアルゴリズムなのか調べてみることに…

python-poloniexのバージョンアップ

ずっと使ってたpython-poloniexがバージョンアップしたようで、関数名が一新されてしまいました。 アップデートしたら、botが動かなくなってしまったので焦ってしまいました。 ラッパー中で使っている関数名をAPIのオリジナルコマンド名と合わせたみたいです…

自動トレードボット

目次 目次 はじめに 使い方 準備するもの ボット稼働方法 ボット内のルーチン 注意 おまけ はじめに ここまでで仮想通貨の自動トレードボット作成に必要な知識がそろったので、実際にボットを作ってみました。 一カ月ほど運用していますが、まあ結果は全然ダ…

APScheduler

目次 目次 はじめに Poloniexサーバー時間 使用例 Linuxでバックグラウンド実行 はじめに Poloniexからチャートデータを取ってきて明日のコイン価格を予想することができ、またAPIを使って成行トレードもできるようになったので、後はそれらをまとめて実行す…

カスタムPoloniex

目次 目次 はじめに サンプルスクリプト 基軸コイン バランスデータ取得 資産データをBTCとUSD換算 成行買い 成行買い(買えるだけ) 成行売り 成行売り(売れるだけ) はじめに Poloniex APIのpythonラッパーであるpython-poloniexは非常に便利なのですが、バラ…

PoloniexのAPIを使ってトレードしてみる

目次 目次 はじめに API KeyとSecretの取得 APIの使い方 バランスデータの取得 トレードしてみる はじめに 前回はPush APIを使ってPoloniexのサーバーが配信するデータを自動受信してみました。 今回は通常のAPIを使って仮想通貨のトレードをしてみたいと思…

PoloniexのPush APIを使ってみる

PoloniexのAPIを使ってデータを取得する際にPush APIというものがあるらしいです。 PoloniexのAPI解説ページに行くと、いきなりPush APIの説明が出てきてWAMP protocolで通信する必要があり、環境をセットアップしなければならない等ややこしいので挫折して…

サポートベクターマシンを実際に試してみる

2次計画法のスクリプトが出来たので、サポートベクターマシンに実装してみます。 サポートベクターマシンにおける最小化すべき目的関数は、 制約条件は、 になります。重みが設計変数になります。 これらを行列形式で表します。(トレーニングサンプル数は、…

2次計画法

ラグランジュ乗数の意味 サポートベクトルのマージンを最大化するために、ラグランジュの未定乗数法を等式制約から不等式制約がある場合に拡張する必要があります。 ラグランジュの未定乗数法を不等式制約がある場合に拡張した最適化アルゴリズムを2次計画法…

ラグランジュの未定乗数法

最適化問題 世の中には非常に多くの最適化問題が存在します。ある条件の下で、この値を最適化したい等、良く耳にすることが多いです。 燃費低減の為自動車のエンジン軽くしたい。でもあまり軽すぎると強度が心配。強度を保ちつつどこまで軽くできるか?等、…

サポートベクターマシン

名前だけ聞くとなんか凄そうなマシンに聞こえますね。 サポートベクターとはベクトルの事です。トレーニングサンプルを特徴量空間の位置ベクトルとしてみています。 決定境界に一番近いトレーニングサンプルの事をサポートベクトルといいます。サポートベク…

ロジスティック回帰を実際に試してみる

少し考えてみましたが、コスト関数である対数尤度は活性化関数の出力が教師データに近づくにつれ、0に漸近していくようです。 計算機上ではにするとが-∞に発散してしまうので値を求めることができないですが、解析解としては0に漸近します。 したがって、の…

ロジスティック回帰

ロジスティック回帰はADALINEに確率的な解釈を与えたアルゴリズムです。 活性化関数とコスト関数に対し、ロジスティック関数と尤度を用いています。ADALINEとの違いは、この活性化関数とコスト関数だけです。 ここでは、ロジスティック関数と尤度の概念を学…

確率的勾配降下法

ADALINEでは、全てのトレーニングサンプルからコスト関数の勾配を求め、コスト関数が小さくなる方向に向かって重みを更新していました。その為エポック毎に重みが更新されることになります。 これに対し、1トレーニングサンプル毎にコスト関数の勾配を求め、…

ADALINEを実際に試してみる

パーセプトロンの時と同様に、アヤメのデータを使ってADALINEの挙動を見てみましょう。 numpyの行列表記を使ってやれば、前回のパーセプトロンのコードを少しいじるだけでいけそうです。 以下のスクリプトは、学習率と最大エポック数を変化させて4通りの結果…

ADALINEのコスト関数を行列で表記

ADALINEのコスト関数、またその勾配は、行列で表してやると非常にすっきりと書くことができます。 numpyでは行列演算が可能なので、コーディングの際もそのまま行列として扱うことができて便利です。 numpy内で行列演算が最適化されている(はず)なので、for…

ADALINE

ADALINEはパーセプトロンの改良版です。 ここで覚えておきたいことはコスト関数という概念です。 パーセプトロンでは活性化関数としてヘビサイド関数という変な関数で出力を1か-1の2値に無理やりしていましたが、ADALINEでは適当な係数をかけることで連続値…

パーセプトロンを実際に試してみる

前回まででパーセプトロンが具体的にどんなものかわかりました。 更に理解を深める為には、やはり実際に自分で作ってみるのがいいと思います。 テキストにスクリプト例が載っていましたが、どうも分かりずらいので自分でわかりやすい様にコーディングしてみ…

パーセプトロン

10年くらい前にニューラルネットワークに興味を持ち、本を買って勉強したことがありましたが、非常に難しくて挫折した覚えがあります。 その本にもパーセプトロンが一番最初のニューラルネットワークモデルとして紹介されていました。 トレーニングサンプル…

Pythonと機械学習のお勉強

私は理論よりも実践を重視しようと考えてますが、やはり知識は必要です。 これまでBitcoin投資にscikit-learnを使う環境を作ってきました。しかし決定木アルゴリズムだけではどうもうまく行かなそうなのでもっと知識をつけようと思います。 Kindle版で通常よ…

決定木アルゴリズムを使った自動取引EAを作成

scikit-learnを使って決定木アルゴリズムにより自動取引させるEAを作ってみました。 BTCUSDの日足チャートで、チャート更新時に明日のOpen価格の上昇・下降を予測します。 上昇シグナル時は買いを入れ、もし買いポジションを持っていた場合は、そのまま保持…

Metatrader4でPython実行環境を整える

Metatrader4はFXで使われているプラットフォームです。C言語に似たmqlというスクリプトで、トレード指標やシステムトレードのプログラムを自作することができます。 自作したプログラム(EAって呼ばれています)を使って、バックテストもできますし、EAパラメ…

明日のBTC価格予想をGメールで送信

明日のBTC価格を予測するスクリプトにバックテストとGメールの送信機能を付けてみました。 main関数中の下記でGメールアドレスとパスワードを記述します。 バックテスト結果と明日のBTC価格予想を自分自身に送付します。 #--メール送信パラメータ sendMailFl…

学習パラメータの最適化

バックテストの実施期間により、学習パラメータであるトレーニングデータ数と、トレーニングデータと教師データのセット数を最適化してやる必要がありそうです。バックテストの学習パラメータを最適化するスクリプトを作ってみました。 最適化といっても学習…

バックテストの実施

決定木アルゴリズムを使って、取りあえず明日のBitcoin価格を予想することはできますが、本当にそれで利益を出すことができるのでしょうか?過去のBTC価格データで検証してみました。 以下がバックテストを実施するコードです。 初期資金として$1000ある状態…

決定木アルゴリズムで明日のBitcoin価格を予想

下記のブログ記事に影響を受けて、私なりに調べてみました。 サイト名にも惹かれました。非常にナイスなネーミングだと思います。 機械学習(scikit-learn)を使ってビットコインの価格を予想する 決定木アルゴリズムは機械学習のアルゴリズムの一種ですが、正…

PoloniexのAPIを使ってBitcoin価格データの取得

Poloniexは仮想通貨の取引所です。かなり規模が大きく色々な仮想通貨を取り扱っています。 Python用のAPIを公開しているので、Python上からPoloniexにアクセスしていろいろな事ができるみたいです。 PoloniexのサイトでAPIの使い方を調べてみましたがよくわ…

PyCharmのインストール

Pythonのコードを書くのにそのままエディターで書いてもいいですが、やはりやりずらいのでIDE環境を整えたほうがいいです。 いろいろ試してみましたが、PyCharmがよさそうなのでこいつを使うことにしました。こちらのサイトを参考にさせてもらいました。 PyC…

Python環境を整える

Pythonのインストール WindowsにPythonをインストールして機械学習ができる環境を作った時のメモです。"Python インストール"で検索するとPythonのサイトが出てくるのでそこからインストーラをダウンロードします。私はバージョン2.7.12の32bit版python-2.7.…

ことはじめ

そもそものきっかけは、明日のBitcoin価格を機械学習で予想するという記事をネットで見つけたことでした。 機械学習やディープラーニングを投資に使えないだろうかと前々から思っていて、たまに調べた事があったのですが、中々の難しさでいつも挫折していま…