Struct StockImbalance
- Namespace
- MassiveDotNet.WebSocket.Events
- Assembly
- MassiveDotNet.WebSocket.dll
One streamed net order imbalance: the NOI topic.
public readonly record struct StockImbalance : IEquatable<StockImbalance>
- Implements
- Inherited Members
Remarks
Auction imbalance updates, mostly at the opening and closing auctions but also during ticker-specific halts and mini-auctions. A struct for consistency with every other event type (D4), though this topic is far lower volume than trades or aggregates.
Two things differ from the trade, quote and aggregate topics. The ticker arrives as T
rather than sym — the same letter that is the trade topic's own wire code — and the
timestamp is Unix nanoseconds rather than milliseconds. Both are read from this topic's
own documentation, never inferred from a sibling.
Properties
AuctionTime
The wall-clock time the auction is planned for, in Eastern time, or null when AuctionTimeCode is not a valid wall clock.
public LocalTime? AuctionTime { get; }
Property Value
Remarks
Nullable rather than throwing: a computed property must not fail on a value the server chose, and the raw code remains available for a caller who wants to see what actually arrived.
AuctionTimeCode
The raw auction time as the wire encodes it: (hour × 100) + minutes in Eastern time,
so 930 is 09:30 and 1600 is 16:00.
public int AuctionTimeCode { get; init; }
Property Value
Remarks
Kept alongside AuctionTime so a code the wire sends that is not a wall clock is still readable, rather than being lost behind a null.
AuctionType
The auction type: O early opening, M core opening, H reopening after a
halt, C closing, P extreme closing imbalance, R regulatory closing
imbalance.
public string? AuctionType { get; init; }
Property Value
Remarks
A string rather than an enum, unlike StockTopic. That enum exists because the server silently ignores a topic code it does not recognise, so a caller's typo is unrecoverable and is made unrepresentable instead — an argument about a value the SDK sends. This is a value the SDK receives, where an enum could only throw on a code Massive adds later, failing a whole event over one field, or misfile it as an existing member. A string carries what arrived.
BookClearingPrice
The book clearing price.
public double BookClearingPrice { get; init; }
Property Value
ExchangeId
The exchange ID.
public int ExchangeId { get; init; }
Property Value
ImbalanceQuantity
The imbalance quantity.
public long ImbalanceQuantity { get; init; }
Property Value
PairedQuantity
The paired quantity.
public long PairedQuantity { get; init; }
Property Value
SymbolSequence
The symbol sequence number.
public long SymbolSequence { get; init; }
Property Value
Ticker
The ticker symbol, interned across events.
public required string Ticker { get; init; }
Property Value
Timestamp
When the imbalance was published.
public Instant Timestamp { get; }
Property Value
TimestampNanoseconds
The raw event timestamp, in Unix nanoseconds.
public long TimestampNanoseconds { get; init; }