Skip to content

Commit 276b965

Browse files
committed
v11 init
1 parent 968a036 commit 276b965

File tree

8 files changed

+152
-8
lines changed

8 files changed

+152
-8
lines changed

src/config/sidebar.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -877,6 +877,16 @@ export const SIDEBAR: Partial<Record<Sections, SectionEntry[]>> = {
877877
},
878878
],
879879
},
880+
{
881+
title: "24/5 US Equities Streams",
882+
url: "data-streams/us-equities-streams",
883+
children: [
884+
{
885+
title: "Report Schema v11",
886+
url: "data-streams/reference/report-schema-v11",
887+
},
888+
],
889+
},
880890
{
881891
title: "Market Hours",
882892
url: "data-streams/market-hours",

src/content/data-streams/reference/report-schema-overview.mdx

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ Below is a summary of all available Data Streams report schemas, their main use
2323
| [Real World Asset (RWA)](#real-world-asset-rwa-report-schema) | [View schema (v8)](/data-streams/reference/report-schema-v8) | Real World Asset (RWA) price streams | `midPrice`, `marketStatus`, `lastUpdateTimestamp` |
2424
| [Net Asset Value (NAV)](#net-asset-value-nav-report-schema) | [View schema (v9)](/data-streams/reference/report-schema-v9) | Net Asset Value (NAV) streams | `aum`, `navPerShare`, `navDate`, `ripcord` |
2525
| [Backed xStock](#backed-xstock-report-schema) | [View schema (v10)](/data-streams/reference/report-schema-v10) | Tokenized stocks and backed asset streams | `price`, `tokenizedPrice`, `marketStatus`, `currentMultiplier`, `newMultiplier` |
26+
| [24/5 US Equities](#245-us-equities-report-schema) | [View schema (v11)](/data-streams/reference/report-schema-v11) | Extended-hours US equity price streams | `mid`, `bid`, `ask`, `bidVolume`, `askVolume`, `lastTradedPrice`, `marketStatus` |
2627

2728
## Cryptocurrency Report Schema
2829

@@ -65,3 +66,11 @@ Data Streams ensures that any NAV update, whenever it occurs, is captured and ma
6566
The underlying US equities trade on traditional exchanges during [market hours](/data-streams/market-hours). These market hours depend per asset class and can be subject to unexpected halts, pauses and other behaviors affecting traditional markets. For this reason, this class of Data Streams contains a market hours flag and a staleness measure to equip our users to handle these events correctly. It is critical that users implement correct safeguards on their end to pause markets, add more conservative risk caps, or implement other measures appropriate for their application.
6667

6768
[The schema](/data-streams/reference/report-schema-v10) is designed specifically for tokenized equities such as xStocks and contains data from the Chainlink US equities streams, combined with data provided by the tokenizer to properly handle corporate actions. With this enhanced data users are able to handle expected and unexpected market events such as pauses, halts and market off hours. The tokenization provider layers in data around the `currentMultiplier`, the `newMultiplier` and the `activationDateTime` of the new multiplier to handle corporate actions.
69+
70+
## 24/5 US Equities Report Schema
71+
72+
[Chainlink 24/5 US Equities Data Streams](/data-streams/reference/report-schema-v11) provide comprehensive market data for US equity assets across extended trading hours, enabling DeFi protocols to access real-time pricing during pre-market, regular, post-market, overnight, and weekend sessions. Each report includes a liquidity-weighted mid price (`mid`), consensus bid and ask prices (`bid`, `ask`), associated volumes (`bidVolume`, `askVolume`), the most recent traded price (`lastTradedPrice`), a staleness measure (`lastSeenTimestampNs`), and market status (`marketStatus`).
73+
74+
US equities trade on traditional exchanges during [market hours](/data-streams/market-hours), which can be subject to unexpected halts, pauses, and other behaviors affecting traditional markets. The `marketStatus` field provides critical context about the current trading session (pre-market, regular, post-market, overnight, or weekend), helping protocols implement appropriate safeguards based on market conditions. It is important to note that market status cannot automatically detect public holidays. Users should reference documented holiday schedules and implement staleness checks using `lastSeenTimestampNs` to handle holiday periods appropriately.
75+
76+
For optimal integration, users should implement safeguards that respond to both market status changes and staleness indicators, adjusting risk parameters, liquidity constraints, or trading pauses as appropriate for their specific application during non-regular hours or when data appears stale.
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
---
2+
section: dataStreams
3+
date: Last Modified
4+
title: "24/5 US Equities Report Schema (v11)"
5+
metadata:
6+
title: "24/5 US Equities Report Schema (v11) | Chainlink Data Streams"
7+
description: "Learn about Chainlink 24/5 US Equities report schema (v11), including fields, encoding, and examples for integrating extended-hours equity data in your applications."
8+
keywords:
9+
[
10+
"Report Schema",
11+
"US Equities",
12+
"24/5 Trading",
13+
"v11 Schema",
14+
"Data Format",
15+
"Report Structure",
16+
"Extended Hours",
17+
"Pre-market",
18+
"Post-market",
19+
]
20+
---
21+
22+
import DataStreams from "@features/data-streams/common/DataStreams.astro"
23+
import ReportSchemaTabs from "@features/data-streams/common/ReportSchemaTabs.astro"
24+
25+
<DataStreams section="dsNotes" />
26+
27+
<ReportSchemaTabs />
28+
29+
Chainlink 24/5 US Equities Data Streams adhere to the report schema outlined below.
30+
31+
### Schema Fields
32+
33+
| Field | Type | Description |
34+
| ----------------------- | --------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
35+
| `feedId` | `bytes32` | Unique identifier for the Data Streams feed |
36+
| `validFromTimestamp` | `uint32` | Earliest timestamp when the price is valid (seconds) |
37+
| `observationsTimestamp` | `uint32` | Latest timestamp when the price is valid (seconds) |
38+
| `nativeFee` | `uint192` | Cost to verify report onchain (native token) |
39+
| `linkFee` | `uint192` | Cost to verify report onchain (LINK) |
40+
| `expiresAt` | `uint32` | Expiration date of the report (seconds) |
41+
| `mid` | `int192` | Liquidity-weighted mid price |
42+
| `lastSeenTimestampNs` | `uint64` | Staleness indicator based on mid price (nanoseconds) |
43+
| `bid` | `int192` | Median bid price |
44+
| `bidVolume` | `int192` | Volume at bid price |
45+
| `ask` | `int192` | Median ask price |
46+
| `askVolume` | `int192` | Volume at ask price |
47+
| `lastTradedPrice` | `int192` | Last traded price |
48+
| `marketStatus` | `uint32` | Status of the real-world equity market. <br/> Possible values: <br/> `0` (Unknown), <br/> `1` (Pre-market extended hours), <br/> `2` (Regular hours), <br/> `3` (Post-market hours), <br/> `4` (Overnight), <br/> `5` (Weekend) <br/> [More details](#market-status-values) |
49+
50+
**Notes:**
51+
52+
- Future 24/5 US Equities streams may use different report schemas.
53+
- `lastSeenTimestampNs` helps applications detect stale data, especially important during market transitions and holidays.
54+
- Market status cannot detect public holidays. See [Market Hours](/data-streams/market-hours) for major holiday periods.
55+
56+
##### Market Status Values
57+
58+
The `marketStatus` field reflects the current state of the equity market:
59+
60+
- **`0` (Unknown)** - Market status cannot be determined
61+
- **`1` (Pre-market extended hours)** - Market is in pre-market trading session
62+
- **`2` (Regular hours)** - Market is in regular trading session
63+
- **`3` (Post-market hours)** - Market is in post-market trading session
64+
- **`4` (Overnight)** - Market is closed overnight (between post-market close and next day's pre-market open)
65+
- **`5` (Weekend)** - Weekend period (Friday 20:00 ET to Sunday 20:00 ET)
66+
67+
Users should implement appropriate safeguards based on market status, such as pausing trading, adjusting risk parameters, or implementing staleness checks during non-regular hours.
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
---
2+
section: dataStreams
3+
title: "Data Streams 24/5 US Equities streams"
4+
datafeedtype: streamsCrypto
5+
metadata:
6+
title: "Data Streams 24/5 US Equities streams"
7+
description: "A list of available Data Streams 24/5 US Equities streams and their ID."
8+
date: Last Modified
9+
isIndex: true
10+
---
11+
12+
import FeedPage from "@features/feeds/components/FeedPage.astro"
13+
14+
<FeedPage
15+
dataFeedType="streams245"
16+
initialNetwork="arbitrum"
17+
allowNetworkTableExpansion={true}
18+
defaultNetworkTableExpanded={false}
19+
/>

src/features/data-streams/common/ReportSchemaTabs.astro

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,10 @@ const allReportSchemaPages = [
3434
name: "Backed xStock Report Schema (v10)",
3535
url: "/data-streams/reference/report-schema-v10",
3636
},
37+
{
38+
name: "24/5 US Equities Report Schema (v11)",
39+
url: "/data-streams/reference/report-schema-v11",
40+
},
3741
]
3842
3943
// Only show deprecated schemas if user is currently on a deprecated page

src/features/data/api/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ export interface Docs {
2525
decoding?: DecodingVariable[]
2626
issuer?: string
2727
deliveryChannelCode?: string
28+
schema?: string
2829
}
2930

3031
export interface ChainMetadata {

src/features/feeds/components/FeedList.tsx

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ export type DataFeedType =
2626
| "streamsNav"
2727
| "streamsExRate"
2828
| "streamsBacked"
29+
| "streams245"
2930
export const FeedList = ({
3031
initialNetwork,
3132
dataFeedType = "default",
@@ -47,7 +48,8 @@ export const FeedList = ({
4748
dataFeedType === "streamsRwa" ||
4849
dataFeedType === "streamsNav" ||
4950
dataFeedType === "streamsExRate" ||
50-
dataFeedType === "streamsBacked"
51+
dataFeedType === "streamsBacked" ||
52+
dataFeedType === "streams245"
5153
const isSmartData = dataFeedType === "smartdata"
5254
const isUSGovernmentMacroeconomicData = dataFeedType === "usGovernmentMacroeconomicData"
5355

@@ -563,7 +565,9 @@ export const FeedList = ({
563565
? "Mainnet Exchange Rate Streams"
564566
: dataFeedType === "streamsBacked"
565567
? "Mainnet Backed xStock Streams"
566-
: "Mainnet RWA Streams"
568+
: dataFeedType === "streams245"
569+
? "Mainnet 24/5 US Equities Streams"
570+
: "Mainnet RWA Streams"
567571
const streamsTestnetSectionTitle =
568572
dataFeedType === "streamsCrypto"
569573
? "Testnet Crypto Streams"
@@ -573,6 +577,8 @@ export const FeedList = ({
573577
? "Testnet Exchange Rate Streams"
574578
: dataFeedType === "streamsBacked"
575579
? "Testnet Backed xStock Streams"
580+
: dataFeedType === "streams245"
581+
? "Testnet 24/5 US Equities Streams"
576582
: "Testnet RWA Streams"
577583

578584
// Initialize search input fields with URL parameter values
@@ -599,7 +605,8 @@ export const FeedList = ({
599605
dataFeedType === "streamsRwa" ||
600606
dataFeedType === "streamsNav" ||
601607
dataFeedType === "streamsExRate" ||
602-
dataFeedType === "streamsBacked"
608+
dataFeedType === "streamsBacked" ||
609+
dataFeedType === "streams245"
603610
) {
604611
const mainnetFeeds: ChainNetwork[] = []
605612
const testnetFeeds: ChainNetwork[] = []

src/features/feeds/components/Tables.tsx

Lines changed: 32 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -994,7 +994,7 @@ const StreamsTr = ({ metadata, isMainnet }) => (
994994
</dd>
995995
</div>
996996
)}
997-
{(metadata.feedType === "Equities" || metadata.feedType === "Forex") && (
997+
{(metadata.feedType === "Equities" || metadata.feedType === "Forex") && metadata.docs?.schema !== "v11" && (
998998
<div className={tableStyles.definitionGroup}>
999999
<dt>
10001000
<span className="label">Report Schema:</span>
@@ -1042,6 +1042,18 @@ const StreamsTr = ({ metadata, isMainnet }) => (
10421042
</dd>
10431043
</div>
10441044
)}
1045+
{metadata.docs?.schema === "v11" && (
1046+
<div className={tableStyles.definitionGroup}>
1047+
<dt>
1048+
<span className="label">Report Schema:</span>
1049+
</dt>
1050+
<dd>
1051+
<a href="/data-streams/reference/report-schema-v11" rel="noreferrer" target="_blank">
1052+
24/5 US Equities Schema (v11)
1053+
</a>
1054+
</dd>
1055+
</div>
1056+
)}
10451057
</dl>
10461058
</div>
10471059
</td>
@@ -1088,7 +1100,8 @@ export const MainnetTable = ({
10881100
dataFeedType === "streamsRwa" ||
10891101
dataFeedType === "streamsNav" ||
10901102
dataFeedType === "streamsExRate" ||
1091-
dataFeedType === "streamsBacked"
1103+
dataFeedType === "streamsBacked" ||
1104+
dataFeedType === "streams245"
10921105
const isSmartData = dataFeedType === "smartdata"
10931106
const isUSGovernmentMacroeconomicData = dataFeedType === "usGovernmentMacroeconomicData"
10941107
const isDefault = !isStreams && !isSmartData && !isUSGovernmentMacroeconomicData
@@ -1143,7 +1156,8 @@ export const MainnetTable = ({
11431156
if (dataFeedType === "streamsRwa") {
11441157
return (
11451158
metadata.contractType === "verifier" &&
1146-
(metadata.docs.feedType === "Equities" || metadata.docs.feedType === "Forex")
1159+
(metadata.docs.feedType === "Equities" || metadata.docs.feedType === "Forex") &&
1160+
metadata.docs?.schema !== "v11"
11471161
)
11481162
}
11491163

@@ -1159,6 +1173,10 @@ export const MainnetTable = ({
11591173
return metadata.contractType === "verifier" && metadata.docs.feedType === "Tokenized Equities"
11601174
}
11611175

1176+
if (dataFeedType === "streams245") {
1177+
return metadata.contractType === "verifier" && metadata.docs.schema === "v11"
1178+
}
1179+
11621180
if (isSmartData) {
11631181
if (showOnlyMVRFeeds) {
11641182
return !metadata.docs?.hidden && metadata.docs?.isMVR === true && metadata.docs?.deliveryChannelCode !== "DS"
@@ -1347,7 +1365,8 @@ export const TestnetTable = ({
13471365
dataFeedType === "streamsRwa" ||
13481366
dataFeedType === "streamsNav" ||
13491367
dataFeedType === "streamsExRate" ||
1350-
dataFeedType === "streamsBacked"
1368+
dataFeedType === "streamsBacked" ||
1369+
dataFeedType === "streams245"
13511370
const isSmartData = dataFeedType === "smartdata"
13521371
const isRates = dataFeedType === "rates"
13531372
const isUSGovernmentMacroeconomicData = dataFeedType === "usGovernmentMacroeconomicData"
@@ -1398,7 +1417,8 @@ export const TestnetTable = ({
13981417
if (dataFeedType === "streamsRwa") {
13991418
return (
14001419
metadata.contractType === "verifier" &&
1401-
(metadata.docs.feedType === "Equities" || metadata.docs.feedType === "Forex")
1420+
(metadata.docs.feedType === "Equities" || metadata.docs.feedType === "Forex") &&
1421+
metadata.docs?.schema !== "v11"
14021422
)
14031423
}
14041424

@@ -1413,6 +1433,13 @@ export const TestnetTable = ({
14131433
if (dataFeedType === "streamsBacked") {
14141434
return metadata.contractType === "verifier" && metadata.docs.feedType === "Tokenized Equities"
14151435
}
1436+
1437+
if (dataFeedType === "streams245") {
1438+
return metadata.contractType === "verifier" && metadata.docs.schema === "v11"
1439+
}
1440+
1441+
// If we're in streams mode but didn't match any specific stream type, exclude this feed
1442+
return false
14161443
}
14171444

14181445
if (isSmartData) {

0 commit comments

Comments
 (0)