Skip to content

Commit 524376e

Browse files
Merge pull request #1 from FlashAlpha-lab/docs/data-as-of-provenance
docs: document the data_as_of response envelope
2 parents a1a3023 + 0199208 commit 524376e

2 files changed

Lines changed: 50 additions & 0 deletions

File tree

README.md

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,44 @@ See [COOKBOOK.md](COOKBOOK.md) for the full catalog (added in Phase 1+).
2323
Phase 0 ships the foundation and one canonical recipe:
2424
[01-gex-dashboard](notebooks/tier-a-hooks/01-gex-dashboard.ipynb).
2525

26+
## Data provenance: `data_as_of`
27+
28+
Every FlashAlpha API response carries `data_as_of`, reporting when each upstream feed last
29+
delivered to the node that answered, plus `endpoint_version` identifying the deployment
30+
that produced it.
31+
32+
```json
33+
"endpoint_version": "2026.08.25",
34+
"data_as_of": {
35+
"node": "fa2",
36+
"equity_feed": "2026-08-25T18:48:58.204Z",
37+
"equity_options_feed": "2026-08-25T18:48:57.900Z",
38+
"index_feed": null,
39+
"index_options_feed": null,
40+
"futures_feed": null,
41+
"futures_options_feed": null,
42+
"flow_feed": "2026-08-25T18:48:55.100Z",
43+
"oi_feed": "2026-08-24T20:00:00.000Z",
44+
"macro_feed": "2026-08-25T18:45:00.000Z"
45+
}
46+
```
47+
48+
Spot and options are reported separately because they arrive over different pipes and fail
49+
independently - an index chain can be current while the index level behind it is not, and
50+
one timestamp cannot express that.
51+
52+
Read each feed against its **own cadence**, not against `as_of`. `oi_feed` at the previous
53+
session's close is correct: settled open interest is published once per session, so on a
54+
Monday the newest figure that exists is Friday's. An options feed an hour behind during
55+
the regular session is not correct. A `null` means that node has not seen that feed, not
56+
that it is broken.
57+
58+
The field evidences that a feed delivered recently. It does not assert that every contract
59+
in a chain is equally current: an illiquid strike may not have quoted for hours while its
60+
feed is healthy.
61+
62+
Full reference: <https://flashalpha.com/docs/lab-api-overview#response-envelope>
63+
2664
## Authoring a new recipe
2765

2866
```bash

llms.txt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,18 @@
44

55
The repository at https://github.com/FlashAlpha-lab/flashalpha-examples hosts the cookbook itself. The FlashAlpha API it calls is documented separately at https://lab.flashalpha.com/llms.txt — both the live surface (`api.flashalpha.com`) and the historical replay surface (`historical.flashalpha.com`) return identical response shapes; backtest recipes use historical, real-time recipes use live.
66

7+
## Data provenance
8+
9+
Every FlashAlpha API response carries `data_as_of`: when each upstream feed last delivered
10+
to the node that answered - equity and index spot, their option chains, futures and futures
11+
options, the classified trade tape, settled open interest, and the macro series, each
12+
reported separately because they arrive over different pipes and fail independently. `null`
13+
means that node has not seen that feed, not that it is broken. Read each feed against its
14+
own cadence: settled open interest dated to the previous session's close is correct, while
15+
an options feed an hour behind during the regular session is not. `endpoint_version`
16+
identifies the deployment. Full reference:
17+
https://flashalpha.com/docs/lab-api-overview#response-envelope
18+
719
## Quick start
820

921
```bash

0 commit comments

Comments
 (0)