API documentation for tradingstrategy.utils.groupeduniverse.resample_candles Python function.

resample_candles(df, resample_freq, shift=None, origin=None)[source]#

Downsample or upsample OHLCV candles or liquidity samples.

E.g. upsample 1h candles to 1d candles.

See also: py:func:resample_price_series.


# Transform daily candles to monthly candles
from tradingstrategy.utils.groupeduniverse import resample_candles

single_pair_candles = raw_candles.loc[raw_candles["pair_id"] == pair.pair_id]
single_pair_candles = single_pair_candles.set_index("timestamp", drop=False)
monthly_candles = resample_candles(single_pair_candles, TimeBucket.d30)
monthly_candles = resample_candles(single_pair_candles, TimeBucket.d30)
assert len(monthly_candles) <= len(single_pair_candles) / 4
  • df (DataFrame) –

    DataFrame of price, liquidity or lending rate candles.

    Must contain candles only for a single trading pair.

    Supported columns: open, high, low, close. Optional: pair_id, volume.

    Any other columns in DataFrame are destroyed in the resampling process.

  • resample_freq (pandas._libs.tslibs.timedeltas.Timedelta | str) –

    Resample frequency.

    Timedelta or Pandas alias string e.g. “D”.

    E.g.`pd.Timedelta(days=1)` create daily candles from hourly candles.

  • shift (Optional[int]) –

    Before resampling, shift candles to left or right.

    The shift is measured in number of candles, not time. Make sure the DataFrame is forward filled first, see forward_fill().

    Set to 1 to shift candles one step right, -1 to shift candles one step left.

    There might not be enough rows to shift. E.g. shift=-1 or shift=1 and len(df) == 1. In this case, an empty data frame is returned.

  • origin (Optional[str]) –

    For daily resample, the starting hour.

    Use origin=”end” for a rolling resample.


Resampled candles in a new DataFrame.

Contains an added timestamp column that is also the index.

If the input DataFrame is zero-length, then return it as is.

Return type: