Trading Dev AcademyFree quant education

Free lesson · Point-in-time data

Four clocks for one observation

Open interactive lessonPractice calculationsExplore labs

Start with the idea

Economic time, public release time, arrival time and decision time answer different questions.

Symbols, units & horizon
  • t_release: public release time in seconds from a fixed epoch
  • t_ingest: actual receipt time on the same clock
  • d≥0: processing duration in seconds
  • t_usable: earliest computed availability time

When and why to use this

Prevent release-date and low-latency backtests from assuming information arrived instantaneously.

Economic time, public release time, arrival time and decision time answer different questions.

A filing can describe an earlier quarter and still arrive after a trade. A market event can occur at an exchange before a delayed subscriber sees it. Retain the original event and release timestamp while recording ingestion and transformations separately.

Use one declared timezone, preferably UTC internally, and preserve the original timezone and daylight-saving interpretation. For a derived feature, the latest required input availability and processing completion determine when it can be used.

tusable=max⁡(trelease,tingest)+d
Information-availability convention and timestamp arithmetic

Four clocks for one observation

  1. Identify release time independently of the observation period.
  2. Take the later of release and ingestion because both must have occurred.
  3. Add processing duration before allowing a decision to use the feature.
Work it by hand

Release at epoch-second 1000, receipt 1003 and two seconds processing give usable time 1005. A decision at 1004 cannot use it.

Apply it in a strategy

  • Freeze inputs at the stated decision time and record their units.
  • Prevent release-date and low-latency backtests from assuming information arrived instantaneously.
  • Recompute the example, then change the material assumption and explain the difference.

Research deliverable

Four clocks for one observation: produce the worked calculation, a timestamped input record and a written decision addressing this limitation: Incorrect clock synchronization or vendor backfills can make stored ingestion times misleading.

These are synthetic mechanics examples, not historical performance or paper replications. Module evidence and research boundaries record the 12 September 2026 review.

Research sources, review dates and limitations

Python implementation

Self-contained teaching example. Python 3.10+; dependencies and input conventions are shown in the code and notation. Run in your own Python environment.

# Python 3.10+; standard library and NumPy only.
# Synthetic teaching inputs; conventions and units are defined in the notation above.
def usable_time(release,ingest,processing):
    if processing<0: raise ValueError('Processing delay must be nonnegative')
    return max(release,ingest)+processing

assert usable_time(1000,1003,2)==1005
print(usable_time(1000,1003,2))

Continue learning

Data: Availability, Revisions & Reproducible Research — all lessons
  1. Four clocks for one observation
  2. An as-of join that never selects the future
  3. First prints and revisions can reverse a signal
  4. Reconcile splits and cash distributions
  5. Universe membership and disappearing assets
  6. Coverage, missingness and stale values
  7. Purging labels that cross a test boundary
  8. Reproducible snapshots and discrepancy ledgers

Quantitative finance and development glossary · Python resources and libraries · Research sources and limitations