{"id":19046828,"url":"https://github.com/bfortuner/punisher","last_synced_at":"2026-01-22T13:48:20.588Z","repository":{"id":74523534,"uuid":"115811649","full_name":"bfortuner/punisher","owner":"bfortuner","description":"Cryptocurrency trading library for machine learning research","archived":false,"fork":false,"pushed_at":"2018-03-12T05:09:49.000Z","size":4104,"stargazers_count":6,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-24T00:28:44.873Z","etag":null,"topics":["algorithmic-trading","bitcoin","ccxt","cryptocurrency","deep-learning","jupyter","machine-learning","numpy","pandas","python","pytorch","reinforcement-learning","scikit-learn","trading-bot"],"latest_commit_sha":null,"homepage":"","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bfortuner.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2017-12-30T17:20:54.000Z","updated_at":"2024-07-09T09:44:29.000Z","dependencies_parsed_at":"2023-02-25T02:00:22.139Z","dependency_job_id":null,"html_url":"https://github.com/bfortuner/punisher","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/bfortuner/punisher","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bfortuner%2Fpunisher","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bfortuner%2Fpunisher/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bfortuner%2Fpunisher/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bfortuner%2Fpunisher/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bfortuner","download_url":"https://codeload.github.com/bfortuner/punisher/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bfortuner%2Fpunisher/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28663999,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-22T01:17:37.254Z","status":"online","status_checked_at":"2026-01-22T02:00:07.137Z","response_time":144,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["algorithmic-trading","bitcoin","ccxt","cryptocurrency","deep-learning","jupyter","machine-learning","numpy","pandas","python","pytorch","reinforcement-learning","scikit-learn","trading-bot"],"created_at":"2024-11-08T22:57:15.619Z","updated_at":"2026-01-22T13:48:20.569Z","avatar_url":"https://github.com/bfortuner.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# My, Man!\n\n![alt text](docs/punisher.png \"Logo Title Text 1\")\n\n## Quickstart\n\n1. Download price data from S3\n\n```\npython -m punisher.data.ohlcv_fetcher --exchange binance --symbol ETH/BTC --timeframe 30m --action download\n```\n\n2. Run the strategy script in backtesting mode\n```\npython -m punisher.strategies.simple -ohlcv .data/binance_ETH_BTC_30m.csv -t 30m -m backtest -a ETH/BTC -ex binance\n```\n\n3. View the results (visit localhost:8000)\n```\npython -m punisher.charts.dash_charts.dash_record --name default_backtest\n```\n\n## Install\n\n1. Install [Miniconda](https://conda.io/miniconda.html) with Python 3.6\n\n2. Create conda environment\n```\nconda env create -f environment.yaml -n punisher\nsource activate punisher\n```\n3. Add your API keys to ```dotenv_example``` and rename ```.env```.\n\n**No API keys?**\nYou can still download data from our S3 bucket for backtesting. Or access the Exchange public APIs by emptying the dictionary we pass in as a config to the CCXTExchange class.\n\n4. Initialize [submodules](https://chrisjean.com/git-submodules-adding-using-removing-and-updating/)\n```\ngit submodule init\ngit submodule update\n```\n\n4. Install Extras (Optional)\n```\nconda install ipywidgets\njupyter nbextension enable --py --sys-prefix widgetsnbextension\nconda install -c tim_shawver/label/dev qgrid==1.0.0b10\nconda install -c conda-forge python.app\nconda install pytorch torchvision -c pytorch (http://pytorch.org/)\n```\n\n## Download data from S3\n\nOHLCV\n```\npython -m punisher.data.ohlcv_fetcher --exchange gdax --symbol BTC/USD --timeframe 1d --action download\n```\n\nReddit\n```\npython -m punisher.data.reddit_fetcher --subreddit bitcoin --action download\n```\n\nTwitter\n```\npython -m punisher.data.tweet_fetcher --query 'bitcoin OR btc' --lang en --action download\n```\n\n## Running Tests\n```\npython -m pytest tests/ (all tests)\npython -m pytest -k filenamekeyword (tests matching keyword)\npython -m pytest tests/utils/test_sample.py (single test file)\npython -m pytest tests/utils/test_sample.py::test_answer_correct (single test method)\npython -m pytest --resultlog=testlog.log tests/ (log output to file)\npython -m pytest -s tests/ (print output to console)\n```\n\n## How to commit (cleanly)\n\n1. Before coding:\n\n```\ngit pull master\ngit checkout -b feature\n```\n\n2. After coding, when you're ready to merge\n```\n# Pull latest changes from repo\ngit checkout master\ngit pull\n\n# Merge master into feature branch.\ngit checkout feature\ngit merge master\n```\n\n3. Resolve conflicts\n\n4. Merge feature into master and squash all your commits\n```\ngit checkout master\ngit merge feature --squash\ngit commit -m 'Detailed Commit message describing your changes'\ngit push\n```\n\n## Resources\n\n### Data\n\n* https://www.quandl.com/collections/markets/bitcoin-data\n* https://market.mashape.com/bravenewcoin/digital-currency-tickers\n* https://bravenewcoin.com/\n* https://coinmetrics.io/data-downloads/\n\n\n### Exchanges\n\n* https://www.coinigy.com\n* https://poloniex.com\n* https://www.gdax.com/\n* https://gemini.com/\n* https://www.binance.com/\n* https://www.kraken.com/\n\n### Research\n\n* https://arxiv.org/archive/q-fin\n\n### Tutorials\n\n* [Buy/Sell/Short on Poloneix](https://www.youtube.com/watch?v=YwmoHfZ-qm8)\n\n### Blogs/News\n\n* TODO\n\n### Tools / Charts\n\n* https://zeroblock.com/\n* https://www.tradingview.com/\n\n### Repos\n\n* https://github.com/Crypto-AI/Gemini\n* https://github.com/quantopian/qgrid\n\n### Known Issues\n\n* [TODO](TODO.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbfortuner%2Fpunisher","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbfortuner%2Fpunisher","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbfortuner%2Fpunisher/lists"}