{ "info": { "author": "Igor Grigorev", "author_email": "barsic1080@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "=========================\nSimple trading backtester\n=========================\n\nOverview\n========\n\nQuantitative approach to trading is done via applying mathematical models to\nvarious financial instruments. In order to get money for you strategy,\nmathematical model beneath it should be sound. And to prove that this model\nworth money one should do proper backtesting.\nThis project aims to provide easy and straitforward backtesting solution.\n\nRelevance\n=========\n\nThere are number of python projects for backtesting: `backtrader `_,\n`pyalgotrade `_, `zipline `_,\n`rqalpha `_, etc.. When i was trying out them,\ni was dissatisfied with one or more of the following: event driven,\nunnecessary complex architecture, no support for trading multiple instruments\nin convinient way, no proper performance evaluation, etc..\nThis project solves those issues at cost of not so wide functionality\ncompared to mentioned ones above.\nProject is designed to be easily build on top of it.\n\nFeatures\n========\n\n* Data manipulations are made with pandas.\n\n* Backtesting operations are vector( no loops, not event driven).\n\n* Extensive statistical evaluation of strategies.\n\n* Number of visualizations embedded.\n\n* Strategy robustness tests.\n\n* API to work with OHLC data( download, prepare).\n\n* Clean and straitforward project structure.\n\n* PEP8 compliant code.\n\nInstallation\n============\n\n* Install via setup.py:\n\n.. code-block:: bash\n\n git clone git@github.com:bluella/stbt.git\n cd stbt\n python setup.py install\n\n* Install via pip:\n\n.. code-block:: bash\n\n pip install stbt\n\n* Run tests:\n\n.. code-block:: bash\n\n pip install pytest\n pytest\n\nUsage\n=====\n\n.. code-block:: python\n\n import datetime as dt\n import pandas as pd\n import matplotlib.pyplot as plt\n from stbt.simulator import Strategy\n from stbt.download_ohlc.cryptocurrency import get_ohlc_cryptocompare\n from stbt.indicators.technical import skewness\n\n # get trading data from cryptocompare\n BTC_TICKER = 'BTC'\n ETH_TICKER = 'ETH'\n USD_TICKER = 'USD'\n\n END_DATE = dt.datetime(2018, 7, 1, 0, 0, 0)\n START_DATE = dt.datetime(2018, 3, 1, 0, 0, 0)\n\n OHLC_BTC = get_ohlc_cryptocompare(BTC_TICKER, USD_TICKER, START_DATE,\n end_date=END_DATE, interval_key='day')\n OHLC_ETH = get_ohlc_cryptocompare(ETH_TICKER, USD_TICKER, START_DATE,\n end_date=END_DATE, interval_key='day')\n\n # create dfs in format that Strategy requires\n closes_df = pd.concat([OHLC_BTC['Close'], OHLC_ETH['Close']],\n axis=1, keys=['BTC', 'ETH'])\n\n # use imported indicator to create weights\n weights_df = skewness(closes_df)\n\n # create strategy\n s = Strategy(closes_df, weights_df, cash=100)\n\n # run backtest, robust tests, calculate stats\n s.run_all(delay=2, verify_data_integrity=True, instruments_drop=None,\n commissions_const=0, capitalization=False)\n\n # check strategy stats\n print(s.stats_dict)\n\n # save strategy to futher comparison\n s.add_to_pnls_pool()\n\n # plot pool correlation heatmap\n heatmap_fig, corr_matrix = s.get_pool_heatmap()\n\n plt.show()\n\nLinks\n=====\n\n * `Pypi `_\n\n * `readthedocs `_\n\n * `GitHub `_\n\n\nFuther development\n==================\n\n * Improve test coverage.\n\n * More API for data download.\n\n * More technical indicators.\n\n * Portfolio optimization tools.\n\nReleases\n========\n\nSee `CHANGELOG `_.\n\nLicense\n=======\n\nThis project is licensed under the MIT License -\nsee the `LICENSE `_ for details.\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/bluella/stbt", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "stbt", "package_url": "https://pypi.org/project/stbt/", "platform": "any", "project_url": "https://pypi.org/project/stbt/", "project_urls": { "Homepage": "https://github.com/bluella/stbt" }, "release_url": "https://pypi.org/project/stbt/0.1.3/", "requires_dist": [ "numpy", "pandas", "matplotlib", "seaborn", "pytest ; extra == 'testing'" ], "requires_python": ">=3.7", "summary": "Simple trading backtester", "version": "0.1.3" }, "last_serial": 5332266, "releases": { "0.0.2": [ { "comment_text": "", "digests": { "md5": "5c50ceee2c8573d7714c20b30916a600", "sha256": "27ac604b274e31e8d546913861caa017e4ff5c7d6522b4801d183ce668f60c42" }, "downloads": -1, "filename": "stbt-0.0.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "5c50ceee2c8573d7714c20b30916a600", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.7", "size": 23108, "upload_time": "2019-05-18T22:47:10", "url": "https://files.pythonhosted.org/packages/d3/29/18ebfcf9ef67bcaef43292224e4982184caabd0ad1b904cd8baf3b3e62cd/stbt-0.0.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "66e84ca4e1c24bc23288493e4f885e63", "sha256": "eab0eb79cbc5626067941fd7bb0750a5fb8c306cec8be8fecfbb5a53434fd909" }, "downloads": -1, "filename": "stbt-0.0.2.tar.gz", "has_sig": false, "md5_digest": "66e84ca4e1c24bc23288493e4f885e63", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 23010, "upload_time": "2019-05-18T22:47:13", "url": "https://files.pythonhosted.org/packages/6d/13/29d7c7994dfcc92e900e222553d01773be8fc18c1d89ab6a3adfb052c63f/stbt-0.0.2.tar.gz" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "0b8daaead558a9800bdfb54cc1084d28", "sha256": "689a425bb1146c575fd112895362f28610e6bbc59c722337704280dedc433a0f" }, "downloads": -1, "filename": "stbt-0.0.7-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0b8daaead558a9800bdfb54cc1084d28", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.7", "size": 24374, "upload_time": "2019-05-20T01:07:07", "url": "https://files.pythonhosted.org/packages/68/a4/860771b6442f4e3293f554bcee56a0b2c710c58ecf1576ccba9155496382/stbt-0.0.7-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "11074327d0159cecaec6431ba2e950bb", "sha256": "1ff0b453bb778a100ee728d58c0e4ba766a29990ed4701cb4fff6a7b0e6523a6" }, "downloads": -1, "filename": "stbt-0.0.7.tar.gz", "has_sig": false, "md5_digest": "11074327d0159cecaec6431ba2e950bb", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 47733, "upload_time": "2019-05-20T01:07:10", "url": "https://files.pythonhosted.org/packages/e7/54/066066af921ed054afff51bab5bf9c4d39206ea318cf8adc496cd965fa50/stbt-0.0.7.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "b450352f1ff70f5bce8e8124cdcdaf6a", "sha256": "bf0801e65b9fa32ae5bbfab2c03b35f0e25ae4e49a6f9881e75b3233f8696b43" }, "downloads": -1, "filename": "stbt-0.1.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b450352f1ff70f5bce8e8124cdcdaf6a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.7", "size": 14244, "upload_time": "2019-05-25T15:27:06", "url": "https://files.pythonhosted.org/packages/e5/87/2b0d0377c337eeeb354001d0100560d5b9272e9c2f63c44a50366be474ee/stbt-0.1.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "40a3e952cab9509c1cf6d537767c585b", "sha256": "dcaf3b6601b10da2fd526ad33ab2162dfb73dda126e0f8e7141ffd72f0146789" }, "downloads": -1, "filename": "stbt-0.1.2.tar.gz", "has_sig": false, "md5_digest": "40a3e952cab9509c1cf6d537767c585b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 50469, "upload_time": "2019-05-25T15:27:08", "url": "https://files.pythonhosted.org/packages/1c/d9/cebccfe348315e58c32a6145f0ada9224f92b2bfc887c0d34587331cdd6d/stbt-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "9a2957582d4f9cec68d35b0775dad8a0", "sha256": "5078ba28ccd1ca99a360b6a9d2b3eab676fedf17bdd9ea9c2b28f32799eacbf4" }, "downloads": -1, "filename": "stbt-0.1.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9a2957582d4f9cec68d35b0775dad8a0", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.7", "size": 14357, "upload_time": "2019-05-29T13:18:33", "url": "https://files.pythonhosted.org/packages/38/26/df533c893018af012d94ded05eb4870328b030271bfea498dcbd1ba849cc/stbt-0.1.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ca0351eb6a0c0cf1a533e95f5d12655a", "sha256": "5afbca11b9f5dd7c6da201d3bc4fbfee0d34634909306f8b4744490579f13062" }, "downloads": -1, "filename": "stbt-0.1.3.tar.gz", "has_sig": false, "md5_digest": "ca0351eb6a0c0cf1a533e95f5d12655a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 50821, "upload_time": "2019-05-29T13:18:35", "url": "https://files.pythonhosted.org/packages/99/55/7a33ed992450ae2b29159143c8c18460a9318efa4da96e1f07b24bc74a15/stbt-0.1.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "9a2957582d4f9cec68d35b0775dad8a0", "sha256": "5078ba28ccd1ca99a360b6a9d2b3eab676fedf17bdd9ea9c2b28f32799eacbf4" }, "downloads": -1, "filename": "stbt-0.1.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9a2957582d4f9cec68d35b0775dad8a0", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.7", "size": 14357, "upload_time": "2019-05-29T13:18:33", "url": "https://files.pythonhosted.org/packages/38/26/df533c893018af012d94ded05eb4870328b030271bfea498dcbd1ba849cc/stbt-0.1.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ca0351eb6a0c0cf1a533e95f5d12655a", "sha256": "5afbca11b9f5dd7c6da201d3bc4fbfee0d34634909306f8b4744490579f13062" }, "downloads": -1, "filename": "stbt-0.1.3.tar.gz", "has_sig": false, "md5_digest": "ca0351eb6a0c0cf1a533e95f5d12655a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.7", "size": 50821, "upload_time": "2019-05-29T13:18:35", "url": "https://files.pythonhosted.org/packages/99/55/7a33ed992450ae2b29159143c8c18460a9318efa4da96e1f07b24bc74a15/stbt-0.1.3.tar.gz" } ] }