Skip to main content

Data pipeline for algo-trading, getting and storing both real-time and historical data made easy.

Project description

PFeed: Data Pipeline for Algo-Trading, Getting and Storing Real-Time and Historical Data Made Easy.

Twitter Follow GitHub stars PyPI downloads PyPI PyPI - Support Python Versions

Poetry

Problem

Starting algo-trading requires reliable, clean data. However, the time-consuming and mundane tasks of data cleaning and storage often discourage traders from embarking on their algo-trading journey.

Solution

By leveraging modern data engineering tools, pfeed handles the tedious data work and outputs backtesting-ready data, allowing traders to focus on strategy development.


PFeed (/piː fiːd/) is a data pipeline for algorithmic trading, serving as a bridge between raw data sources and traders. It enables you to download historical data, stream real-time data, and store cleaned data in a local data lake for quantitative analysis, by automating the processes of data collection, cleaning, transformation, and storage.

Core Features

  • Download or stream reliable, validated and clean data for research, backtesting, or live trading
  • Get historical data (dataframe) or live data in standardized formats by just calling a single function
  • Own your data by storing them locally using MinIO, with the option to connect to the cloud
  • Interact with different kinds of data (including TradFi, CeFi and DeFi) using a unified interface

Table of Contents

Installation

For more installation options, please refer to the documentation.

# [RECOMMENDED]: Full Features, choose this if you do not care about the package size
pip install -U "pfeed[all]"

# Minimal Features, only supports getting, downloading and streaming data
pip install -U "pfeed[core]"

Quick Start

1. Get Historical Data in Dataframe (No storage)

Get Bybit's data in dataframe, e.g. 1-minute data (data is downloaded on the fly if not stored locally)

import pfeed as pe

feed = pe.BybitFeed(data_tool='polars')

df = feed.get_historical_data(
    'BTC_USDT_PERP',
    resolution='1minute',  # 'raw' or '1tick'/'1t' or '2second'/'2s' etc.
    start_date='2024-03-01',
    end_date='2024-03-01',
)

Printing the first few rows of df:

ts product resolution open high low close volume
0 2024-03-01 00:00:00 BTC_USDT_PERP 1m 61184.1 61244.5 61175.8 61244.5 159.142
1 2024-03-01 00:01:00 BTC_USDT_PERP 1m 61245.3 61276.5 61200.7 61232.2 227.242
2 2024-03-01 00:02:00 BTC_USDT_PERP 1m 61232.2 61249 61180 61184.2 91.446

By using pfeed, you are just a few lines of code away from getting a standardized dataframe, how convenient!

2. Download Historical Data on the Command Line Interface (CLI)

For more CLI commands, please refer to the documentation.

# download data, default data type (dtype) is 'raw' data
pfeed download -d BYBIT -p BTC_USDT_PERP --start-date 2024-03-01 --end-date 2024-03-08

# download multiple products BTC_USDT_PERP and ETH_USDT_PERP as minute data and store them locally
pfeed download -d BYBIT -p BTC_USDT_PERP -p ETH_USDT_PERP --dtypes minute --use-minio

3. Download Historical Data in Python

import pfeed as pe

# compared to the CLI approach, this approach is more convenient for downloading multiple products
pe.download(
    data_source='bybit',
    pdts=[
        'BTC_USDT_PERP',
        'ETH_USDT_PERP',
        'BCH_USDT_PERP',
    ],
    dtypes=['raw'],  # data types, e.g. 'raw', 'tick', 'second', 'minute' etc.
    start_date='2024-03-01',
    end_date='2024-03-08',
    use_minio=False,
)

Supported Data Sources

Data Source Get Historical Data Download Historical Data Get Live Data Stream Live Data
Yahoo Finance 🟢
Bybit 🟢 🟢 🟡 🔴
*Interactive Brokers 🔴 🔴 🔴
*FirstRate Data 🔴 🔴
*Databento 🔴 🔴 🔴 🔴
*Polygon 🔴 🔴 🔴 🔴
Binance 🔴 🔴 🔴 🔴
OKX 🔴 🔴 🔴 🔴

🟢 = finished
🟡 = in progress
🔴 = todo
⚪ = not applicable
* = paid data

Related Projects

  • PFund — A Complete Algo-Trading Framework for Machine Learning, TradFi, CeFi and DeFi ready. Supports Vectorized and Event-Driven Backtesting, Paper and Live Trading
  • PyTrade.org - A curated list of Python libraries and resources for algorithmic trading.

Disclaimer

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES, OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF, OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

This framework is intended for educational and research purposes only. It should not be used for real trading without understanding the risks involved. Trading in financial markets involves significant risk, and there is always the potential for loss. Your trading results may vary. No representation is being made that any account will or is likely to achieve profits or losses similar to those discussed on this platform.

The developers of this framework are not responsible for any financial losses incurred from using this software. This includes but not limited to losses resulting from inaccuracies in any financial data output by PFeed. Users should conduct their due diligence, verify the accuracy of any data produced by PFeed, and consult with a professional financial advisor before engaging in real trading activities.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pfeed-0.0.2.dev3.tar.gz (41.2 kB view details)

Uploaded Source

Built Distribution

pfeed-0.0.2.dev3-py3-none-any.whl (53.5 kB view details)

Uploaded Python 3

File details

Details for the file pfeed-0.0.2.dev3.tar.gz.

File metadata

  • Download URL: pfeed-0.0.2.dev3.tar.gz
  • Upload date:
  • Size: 41.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.1 CPython/3.12.4 Darwin/24.0.0

File hashes

Hashes for pfeed-0.0.2.dev3.tar.gz
Algorithm Hash digest
SHA256 60047d0a8833ce850ef8c12d72916d02af4ac7ffdfcc6d1fc0c6bd6a39122dff
MD5 ae2c7ace6fcec30c91eefd09fdb78b1c
BLAKE2b-256 27c883691f0062a9066b8b0a143b36618d39aee6f0518b9b99d72446ca27df04

See more details on using hashes here.

File details

Details for the file pfeed-0.0.2.dev3-py3-none-any.whl.

File metadata

  • Download URL: pfeed-0.0.2.dev3-py3-none-any.whl
  • Upload date:
  • Size: 53.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.1 CPython/3.12.4 Darwin/24.0.0

File hashes

Hashes for pfeed-0.0.2.dev3-py3-none-any.whl
Algorithm Hash digest
SHA256 be0fd7f35847b7fe6b869c5adcf77a2f269ba15b4cf45b8bcdc6c586cefc2806
MD5 949b961ed5dd54f6aea0cccf8b841b98
BLAKE2b-256 c63189b4f95c9e755d1a704ee3afc087ecd0eec7b2a9b6c3d486da0f8e38f75a

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page