Skip to main content

The blazing-fast data toolkit for quantitative workflows

Project description

BlazeStore

🚀 blazestore —— The blazing-fast data toolkit for quantitative workflows

专注于本地量化数据的高效管理与读写,具备以下特点:

  • High Performance:借助 polars(Rust 实现),大幅优于 pandas,单机内存/多核利用率高,I/O 高效,支持宽表大数据量(TB 级别)分析。
  • 分区与列式存储:自动按日期等分区,底层 Parquet 格式,适合全频段(tick/分钟/日线)数据。
  • 支持本地高效的数据读写、SQL 查询、分区管理,并方便与主流数据库(MySQL、ClickHouse)集成。
  • 内置任务调度与批量更新(DataUpdater),适合日常行情和因子数据自动维护。
  • 支持因子工程,便于复用、管理、批量计算和依赖关系控制,适合复杂因子体系的量化研究。

Installation

pip install -U blazestore

QuickStart

import blazestore as bs

# 获取配置
bs.get_settings()

# 假设有一个polars.DataFrame df, 内容为分钟频数据
kline_df = ... # date | time | asset | open | high | low | close | volume

# 持久化, 存放在表格 market_data/kline_minute, 按照日期分区
tb_name = "market_data/kline_minute"
bs.put(kline_df, tb_name=tb_name, partitions=["date", ],)
print((bs.DB_PATH/tb_name).exists()) # True

# read local data
query = f"select * from {tb_name} where date = '2025-05-06';"

read_df = bs.sql(query)

Examples

1.update data

import blazestore as bs

# implement update function
def update_stock_kline_day(tb_name, date):
    # 读取 clickhouse中的 行情数据落到本地 tb_name
    query = ...
    return bs.read_ck(query, db_conf="databases.ck")

import blazestore.updater
# write into local file: bs.DB_PATH/tb_name
tb_name = "mc/stock_kline_day"
blazestore.updater.submit(tb_name=tb_name, 
                          fetch_fn=update_stock_kline_day, 
                          mode="auto", 
                          beg_date="2018-01-01", )

2.customize data

from blazestore import Factor

# 日频因子
def my_day_factor(date):
    """实现当天的因子计算逻辑"""
    ...
fac_myday = Factor(fn=my_day_factor)

# 分钟频因子, 增加形参 `end_time`
def my_minute_factor(date, end_time):
    """实现在end_time时的因子计算逻辑"""
    ...

fac_myminute = Factor(fn=my_minute_factor)

3.expression database

import blazestore as bs

# create expression database from polars dataframe
df_pl = bs.sql(query="select * from maket_data/kline_minute where date='2025-05-06';")
db = bs.from_polars(df_pl)

exprs = [
    "ind_pct(close, 1) as roc_intraday", 
    "ind_mean(roc_intraday, 20) as roc_ma20", 
]

result = db.sql(*exprs)

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

blazestore-0.1.7.tar.gz (30.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

blazestore-0.1.7-py3-none-any.whl (34.1 kB view details)

Uploaded Python 3

File details

Details for the file blazestore-0.1.7.tar.gz.

File metadata

  • Download URL: blazestore-0.1.7.tar.gz
  • Upload date:
  • Size: 30.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.7.8

File hashes

Hashes for blazestore-0.1.7.tar.gz
Algorithm Hash digest
SHA256 0d8ecd4bf25928a96bfd2c24072d3eeadc1f93b775eb0bbf90a10b97605db78d
MD5 4b548155b965b05df65d838d61fb7ca0
BLAKE2b-256 ffd126a960cfaa27998bc6f135ad4193fbaa2dc3a332796c400e34309e754371

See more details on using hashes here.

File details

Details for the file blazestore-0.1.7-py3-none-any.whl.

File metadata

  • Download URL: blazestore-0.1.7-py3-none-any.whl
  • Upload date:
  • Size: 34.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.7.8

File hashes

Hashes for blazestore-0.1.7-py3-none-any.whl
Algorithm Hash digest
SHA256 0c32e834a612eca08728f9a5ec56956131afa604d09d0c8aa7013948b4f3a90b
MD5 d666a300fc31cb39970bf50408460baa
BLAKE2b-256 c4a4bdd401a6bbe61f088eefbc96165cc46b5302ab9b14dccf1083ad6969f0b9

See more details on using hashes here.

Supported by

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