Point-in-time

Exabel stores data with point-in-time support, so that you can see what data was available at a specified time. This is especially useful for backtests, as we can then make sure that all the data that is being used as input was actually available at the given time.

signal.as_of(date: str = None, *, relative_days: int = None)

Evaluate a signal with a point in time. Either date or relative_days must be provided.

If a date is provided, the signal produces time series as they were known at the given date.

If relative_days is provided, the known time of each data point is determined relative to the date of the data point itself. If relative_days is 0, the known time is equal to the date of the data point, and if it is non-zero, it is shifted with the specified number of dates. If the value is positive, the known time is shifted to the future, and if it is negative, it is shifted to the past.

Parameters:
  • date (str) – The date to use as the point in time.

  • relative_days (int) – The number of days between the known time and the date of the data point. If it is positive, the known time is later, and if it is negative, the known time is earlier.

Examples:

Calculate a signal as it was known at a specified point in time:

signal.as_of('2023-12-31')

Calculate a signal where each data point is as-of its date. For example, return the 2024-01-01 data point as-of 2024-01-01, the 2024-01-02 data point as of 2024-01-02, and so on. Note that if your data is delivered with a lag, this will return no results.

signal.as_of(relative_days=0)

Calculate a signal where each data point is as-of 3 days after its date. This may be useful when looking at a daily alternative data signal that is delivered with a T+3 lag, but is subsequently revised (due to panel normalization / etc changes); as_of() will help you understand what each data point looked like when first delivered.

signal.as_of(relative_days=3)

See how a time series has changed over some time period:

signal.as_of('2021-12-01') - signal.as_of('2021-11-01')
signal.revisions(date: str)

Show the revisions of the signals for the given date.

Parameters:

date – the date to evaluate the signal for

Example:

To see how a time series value for 1 Dec 2021 has changed over time:

signal.revisions('2021-12-01')