Skip to main content

Filtering & sorting

Filter inputs for array sub-graphs.

Most array sub-graphs (news, research, filings, OHLCV history, …) accept an optional filter argument. The generic shape is ArrayFilterInput (date range + limit + sort), but a few fields use domain-specific inputs where the extra dimensions matter — options chains, regulatory filings, risk signals, and futures.

ArrayFilterInput — the generic filter

input ArrayFilterInput {
since: String # ISO 8601 — only items on/after this timestamp
until: String # ISO 8601 — only items on/before this timestamp
limit: Int # Cap result count (default 20)
sort: SortDirection # ASC | DESC (default DESC — newest first)
}

enum SortDirection { ASC, DESC }

Applies to: Entity.news, Entity.research, Entity.predictions, Entity.discussions, Entity.insiderTrades, Entity.earnings, Entity.earningsPressReleases, Entity.periodicFilings, Entity.segmentedRevenue, Entity.institutionalHoldings, Social.reddit, Social.redditComments, MarketData.history, MarketData.keyEvents, MarketData.shortInterest, FinancialStatements.{income,balanceSheet,cashFlow}, and the top-level gdp, inflation, interestRates, sp500Multiples, famaFrenchFactors, shortInterest queries.

query {
entitiesByTickers(tickers: ["AAPL"]) {
news(filter: {
since: "2025-01-01T00:00:00Z"
limit: 10
sort: DESC
}) { title date }
}
}

Slicing OHLCV history

MarketData.history can return thousands of candles. Pair priceHistory's range / interval with a filter to cap the payload.

query {
entitiesByTickers(tickers: ["AAPL"]) {
market {
history(filter: { since: "2024-01-01", limit: 60 }) {
date close volume
}
}
}
}

FilingsFilterInput — regulatory filings

Filter SEC filings by type in addition to date / limit / sort:

input FilingsFilterInput {
types: [FilingType!] # e.g. [FILING_10K, FILING_10Q]
since: String
until: String
limit: Int # default 20
sort: SortDirection # default DESC
}
query {
entitiesByTickers(tickers: ["AAPL"]) {
regulatory {
filings(filter: { types: [FILING_10K, FILING_10Q], limit: 5 }) {
type date url
}
}
}
}

RiskSignalFilterInput — risk signals

Hide low-confidence noise by filtering on signal type and severity:

input RiskSignalFilterInput {
types: [RiskSignalType!] # SANCTIONS, LITIGATION, REGULATORY_ACTION, ADVERSE_MEDIA, PEP
severities: [Severity!] # LOW, MEDIUM, HIGH, CRITICAL
since: String
until: String
limit: Int
sort: SortDirection
}
query {
entitiesByTickers(tickers: ["Gazprom"]) {
risk {
signals(filter: { severities: [HIGH, CRITICAL] }) {
type severity description source date
}
}
}
}

FuturesCurveFilterInput — futures curve

Date-ranges on expiration. Defaults to ASC so the nearest contract comes first.

input FuturesCurveFilterInput {
since: String # expirations on/after
until: String # expirations on/before
limit: Int # default 50
sort: SortDirection # default ASC (nearest first)
}

OptionsChainFilterInput — always pass this in production

Options chains on liquid underliers can exceed 5000 rows. Filter aggressively:

input OptionsChainFilterInput {
since: String # expirations on/after
until: String # expirations on/before
strikeMin: Float
strikeMax: Float
optionType: OptionType # CALL | PUT
minVolume: Float
minOpenInterest: Float
limit: Int # default 100
sort: OptionsChainSort # default EXPIRATION_ASC
}

enum OptionType { CALL, PUT }

enum OptionsChainSort {
EXPIRATION_ASC
EXPIRATION_DESC
STRIKE_ASC
STRIKE_DESC
VOLUME_DESC
OPEN_INTEREST_DESC
}
query {
entitiesByTickers(tickers: ["BTC"]) {
derivatives {
options(filter: {
optionType: CALL
strikeMin: 60000
strikeMax: 80000
minOpenInterest: 100
sort: VOLUME_DESC
limit: 25
}) {
contractSymbol expiration strike lastTradePrice volume openInterest
}
}
}
}

Defaults at a glance

FilterDefault limitDefault sort
ArrayFilterInput20DESC
FilingsFilterInput20DESC
RiskSignalFilterInput20DESC
FuturesCurveFilterInput50ASC
OptionsChainFilterInput100EXPIRATION_ASC

Omitting the filter argument entirely on an ArrayFilterInput field returns the full upstream set; passing an empty filter: {} applies the default cap. Domain-specific filters always apply their defaults.