{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# pybacktest tutorial\n", "\n", "This tutorial will give you a quick overview of **pybacktest**'s features. To do so, we will backtest classic MA crossover trading strategy:\n", "\n", "* go long when short MA crosses above long MA\n", "* go short when short MA crosses below long MA\n", "* entry rules are also exit rules, thus making strategy reversible\n", "\n", "Package is available for download at https://github.com/ematvey/pybacktest" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [], "source": [ "from __future__ import print_function\n", "\n", "import pybacktest # obviously, you should install pybacktest before importing it\n", "import pandas as pd" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**pybacktest** expects bars to be in `pandas.DataFrame` indexed by datetimestamps, with columns named `O`, `H`, `L`, `C`. Actually, in this version it would only check `O`, and only if trade prices are not explicitly specified.\n", "\n", "Lets load data from yahoo using helper." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", " | O | \n", "H | \n", "L | \n", "C | \n", "V | \n", "
---|---|---|---|---|---|
Date | \n", "\n", " | \n", " | \n", " | \n", " | \n", " |
2016-10-05 | \n", "215.410004 | \n", "216.130005 | \n", "215.330002 | \n", "215.630005 | \n", "72816000 | \n", "
2016-10-06 | \n", "215.369995 | \n", "216.039993 | \n", "214.740005 | \n", "215.779999 | \n", "62927400 | \n", "
2016-10-07 | \n", "216.100006 | \n", "216.300003 | \n", "214.190002 | \n", "215.039993 | \n", "89788300 | \n", "
2016-10-10 | \n", "216.160004 | \n", "216.699997 | \n", "215.990005 | \n", "216.160004 | \n", "51855000 | \n", "
2016-10-11 | \n", "215.660004 | \n", "215.740005 | \n", "212.580002 | \n", "213.429993 | \n", "127220400 | \n", "