Building Intra-Bar Features

This tutorial provides a comprehensive guide to building intra-bar features using FinMLKit. Intra-bar features are derived from raw trade data within a bar, such as OHLCV features, directional features, and footprint data.

Restoring Preprocessed Data

To begin, load the preprocessed trade data from an HDF5 file:

from finmlkit.bar.data_model import TradesData

trades = TradesData.load_trades_h5("BTCUSDT.h5")
print(trades.data.head())

Building Time Bars

Time bars aggregate trade data into fixed time intervals. For example, to create 5-minute time bars:

from finmlkit.bar.kit import TimeBarKit

tb5min_kit = TimeBarKit(trades, period=pd.Timedelta(minutes=5))
tb5min_klines = tb5min_kit.build_ohlcv()
print(tb5min_klines.head())

Directional Features

Directional features capture the buy/sell imbalance within a bar:

tb5min_directional = tb5min_kit.build_directional_features()
print(tb5min_directional.head())

Size Distribution Features

Estimate the typical trade size and compute size distribution features:

from finmlkit.bar.io import TimeBarReader

tbd = TimeBarReader("BTCUSDT.h5").read(timeframe="1d")
typical_trade_size = tbd.median_trade_size.median()

tb5min_sizedis = tb5min_kit.build_trade_size_features(
    theta=np.ones_like(tb5min_klines.close.values) * typical_trade_size
)
print(tb5min_sizedis.head())

Footprint Features

Footprint features provide insights into volume distribution and imbalances:

tb5min_fp = tb5min_kit.build_footprints()
print(tb5min_fp.get_df().head())

Next Steps

With intra-bar features computed, you can proceed to build inter-bar features. Continue to the next tutorial: Building Inter-Bar Features.