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.
Four clocks for one observation
- Identify release time independently of the observation period.
- Take the later of release and ingestion because both must have occurred.
- Add processing duration before allowing a decision to use the feature.
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- Four clocks for one observation
- An as-of join that never selects the future
- First prints and revisions can reverse a signal
- Reconcile splits and cash distributions
- Universe membership and disappearing assets
- Coverage, missingness and stale values
- Purging labels that cross a test boundary
- Reproducible snapshots and discrepancy ledgers
Quantitative finance and development glossary · Python resources and libraries · Research sources and limitations