250日ルックバックでモメンタムがゼロを超えたら買い、逆にゼロを下回ったら売ります。
# -*- coding: utf-8 -*-
import pandas_datareader.data as web
from datetime import datetime
import talib as ta
import matplotlib.pyplot as plt
import pandas as pd250日ルックバックでモメンタムがゼロを超えたら買い、逆にゼロを下回ったら売ります。
# -*- coding: utf-8 -*-
import pandas_datareader.data as web
from datetime import datetime
import talib as ta
import matplotlib.pyplot as plt
import pandas as pd#この記事について QuantopianのAPIリファレンスについて、気になる部分をメモ代わりに日本語化しておきます。なお筆者は英語が不自由なので文章はお察し。
#必須のメソッド
アルゴリズムにはinitializeとhandle_dataの2つのメソッドを実装しなければなりません。3番めのメソッドとしてbefore_trading_startがありますが、これはオプションです。
##初期化
initialize(context)
バックテストの最初に一度だけ呼び出されます。contextオブジェクトはアルゴリズム内のすべての他のメソッドに渡すことができます。
この銘柄って大型?中型?小型?と気になるときに、指数の構成銘柄かどうかいう情報があると便利ですね。というわけで、任意の銘柄コードを与えるとTOPIXのサイズ別指数のどれに含まれるかのほか、浮動株比率や構成ウェイトを返すクラスを作りました。 なお元データをオンラインで取ってくるのが難しかったので更新は手動です。つらみ。
クラスと同じ場所に以下のPDFをtxt形式で保存しといてください。(Acrobat Readerでできます)
TOPIX(東証株価指数) | 日本取引所グループ 構成銘柄別浮動株比率及び構成ウエイト一覧
Pythonでファイナンス関係の情報を探していたところ見つけた"Quantopian"が面白そうだったので試してみます。 Quantopian
クラウドベースのアルゴリズムトレーディングプラットフォームです。ユーザはブラウザで専用のIDE(開発環境)を使ってPythonライクなコードでトレーディングアルゴリズムを作成し、バックテストを行うことができます。Interactive Brokers証券に口座がある場合は、接続してリアルトレードを行うこともできるようです。
2002年以降の米国株/ETFのデータを分足ベースで保持しているようです。
| #!/usr/local/bin python | |
| # -*- coding: UTF-8 -*- | |
| from pandas_datareader.base import _DailyBaseReader | |
| import pandas as pd | |
| from datetime import datetime | |
| import urllib.request | |
| class StooqDataReader(_DailyBaseReader): | |
| @property |
| #!/usr/local/bin python | |
| # -*- coding: UTF-8 -*- | |
| from pandas_datareader.base import _DailyBaseReader | |
| import pandas as pd | |
| class TseDataReader(_DailyBaseReader): | |
| @property | |
| def url(self): | |
| return 'http://www.jpx.co.jp/listing/others/margin/tvdivq0000000od2-att/list.xls' |
| #!/usr/local/bin python | |
| # -*- coding: UTF-8 -*- | |
| from pandas_datareader.base import _DailyBaseReader | |
| from datetime import datetime | |
| import pandas as pd | |
| import urllib.request | |
| import numpy as np | |
| from time import sleep | |
| _SLEEP_TIME = 0.5 |
| #!/usr/local/bin python | |
| # -*- coding: UTF-8 -*- | |
| from pandas_datareader import data | |
| from pandas_datareader.yahoo.daily import YahooDailyReader | |
| from time import sleep | |
| import urllib.request | |
| import urllib.error | |
| import lxml.html | |
| import numpy as np | |
| import pandas as pd |