Data Reference

Schemas for ctx.data (DataAccessor). Use these methods inside universe() and signal().

Examples use synthetic data for illustration. Actual values will differ.

ohlcv

ohlcv(symbols=None, lookback=None, start_date=None, end_date=None) -> DataFrame
ParameterTypeDescription
symbolslist[str] | NoneSubset of universe symbols (default: all available)
lookbackint | NoneNumber of most recent trading days
start_datestr | NoneInclusive start date YYYY-MM-DD
end_datestr | NoneInclusive end date YYYY-MM-DD

Returns: MultiIndex DataFrame (date, symbol) with columns: open, high, low, close, volume, adjusted_close (float).

Example (synthetic data)

ctx.data.ohlcv(["SYN_001", "SYN_002"], lookback=3)
#                    open    high     low   close  volume  adjusted_close
# date       symbol
# 2025-01-02 SYN_001  100.0  102.5   99.1  101.3  1500000         101.3
# 2025-01-02 SYN_002   45.2   46.8   44.9   46.1   800000          46.1

returns

returns(symbols=None, lookback=None, start_date=None, end_date=None) -> DataFrame
ParameterTypeDescription
symbolslist[str] | NoneSubset of universe symbols (default: all available)
lookbackint | NoneNumber of most recent trading days
start_datestr | NoneInclusive start date YYYY-MM-DD
end_datestr | NoneInclusive end date YYYY-MM-DD

Returns: DataFrame indexed by date; columns are symbols; values are daily close-to-close returns (float).

Example (synthetic data)

ctx.data.returns(["SYN_001", "SYN_002"], lookback=5)
#            SYN_001   SYN_002
# 2025-01-06   0.012    -0.004
# 2025-01-07  -0.003     0.008

close

close(symbols=None, lookback=None, start_date=None, end_date=None) -> DataFrame
ParameterTypeDescription
symbolslist[str] | NoneSubset of universe symbols (default: all available)
lookbackint | NoneNumber of most recent trading days
start_datestr | NoneInclusive start date YYYY-MM-DD
end_datestr | NoneInclusive end date YYYY-MM-DD

Returns: DataFrame indexed by date; columns are symbols; values are close (float).

Example (synthetic data)

ctx.data.close(["SYN_001"], lookback=2)
#            SYN_001
# 2025-01-06   100.0
# 2025-01-07   101.2

open

open(symbols=None, lookback=None, start_date=None, end_date=None) -> DataFrame
ParameterTypeDescription
symbolslist[str] | NoneSubset of universe symbols (default: all available)
lookbackint | NoneNumber of most recent trading days
start_datestr | NoneInclusive start date YYYY-MM-DD
end_datestr | NoneInclusive end date YYYY-MM-DD

Returns: DataFrame indexed by date; columns are symbols; values are open (float).

Example (synthetic data)

ctx.data.open(["SYN_001"], lookback=2)
#            SYN_001
# 2025-01-06   100.0
# 2025-01-07   101.2

high

high(symbols=None, lookback=None, start_date=None, end_date=None) -> DataFrame
ParameterTypeDescription
symbolslist[str] | NoneSubset of universe symbols (default: all available)
lookbackint | NoneNumber of most recent trading days
start_datestr | NoneInclusive start date YYYY-MM-DD
end_datestr | NoneInclusive end date YYYY-MM-DD

Returns: DataFrame indexed by date; columns are symbols; values are high (float).

Example (synthetic data)

ctx.data.high(["SYN_001"], lookback=2)
#            SYN_001
# 2025-01-06   100.0
# 2025-01-07   101.2

low

low(symbols=None, lookback=None, start_date=None, end_date=None) -> DataFrame
ParameterTypeDescription
symbolslist[str] | NoneSubset of universe symbols (default: all available)
lookbackint | NoneNumber of most recent trading days
start_datestr | NoneInclusive start date YYYY-MM-DD
end_datestr | NoneInclusive end date YYYY-MM-DD

Returns: DataFrame indexed by date; columns are symbols; values are low (float).

Example (synthetic data)

ctx.data.low(["SYN_001"], lookback=2)
#            SYN_001
# 2025-01-06   100.0
# 2025-01-07   101.2

volume

volume(symbols=None, lookback=None, start_date=None, end_date=None) -> DataFrame
ParameterTypeDescription
symbolslist[str] | NoneSubset of universe symbols (default: all available)
lookbackint | NoneNumber of most recent trading days
start_datestr | NoneInclusive start date YYYY-MM-DD
end_datestr | NoneInclusive end date YYYY-MM-DD

Returns: DataFrame indexed by date; columns are symbols; values are volume (float).

Example (synthetic data)

ctx.data.volume(["SYN_001"], lookback=2)
#            SYN_001
# 2025-01-06   100.0
# 2025-01-07   101.2

vwap

vwap(symbols=None, lookback=None, start_date=None, end_date=None) -> DataFrame
ParameterTypeDescription
symbolslist[str] | NoneSubset of universe symbols (default: all available)
lookbackint | NoneNumber of most recent trading days
start_datestr | NoneInclusive start date YYYY-MM-DD
end_datestr | NoneInclusive end date YYYY-MM-DD

Returns: DataFrame of volume-weighted average price per symbol per day (computed from OHLCV if vwap column absent).

Example (synthetic data)

ctx.data.vwap(["SYN_001"], lookback=2)
#            SYN_001
# 2025-01-06   100.5
# 2025-01-07   101.0

fundamentals

fundamentals(symbol: str, dataset: str = "key_metrics_ttm") -> dict | None
ParameterTypeDescription
symbolstrTicker symbol in the platform universe
datasetstrkey_metrics_ttm | ratios_ttm | income_statement | balance_sheet | cash_flow | earnings | profile

Returns: Dictionary of field name → numeric value for the requested dataset, or None if unavailable.

Example (synthetic data)

ctx.data.fundamentals("SYN_001", "key_metrics_ttm")
# {"peRatioTTM": 18.5, "returnOnEquityTTM": 0.22, "debtToEquityTTM": 0.45, ...}

fundamentals datasets

key_metrics_ttm (57 fields)

revenuePerShareTTM, netIncomePerShareTTM, operatingCashFlowPerShareTTM, freeCashFlowPerShareTTM, cashPerShareTTM, bookValuePerShareTTM, tangibleBookValuePerShareTTM, shareholdersEquityPerShareTTM, interestDebtPerShareTTM, marketCapTTM, enterpriseValueTTM, peRatioTTM, priceToSalesRatioTTM, pocfratioTTM, pfcfRatioTTM, pbRatioTTM, ptbRatioTTM, evToSalesTTM, enterpriseValueOverEBITDATTM, evToOperatingCashFlowTTM, evToFreeCashFlowTTM, earningsYieldTTM, freeCashFlowYieldTTM, debtToEquityTTM, debtToAssetsTTM, netDebtToEBITDATTM, currentRatioTTM, interestCoverageTTM, incomeQualityTTM, dividendYieldTTM, payoutRatioTTM, salesGeneralAndAdministrativeToRevenueTTM, researchAndDevelopmentToRevenueTTM, intangiblesToTotalAssetsTTM, capexToOperatingCashFlowTTM, capexToRevenueTTM, capexToDepreciationTTM, stockBasedCompensationToRevenueTTM, grahamNumberTTM, roicTTM, returnOnTangibleAssetsTTM, grahamNetNetTTM, workingCapitalTTM, tangibleAssetValueTTM, netCurrentAssetValueTTM, investedCapitalTTM, averageReceivablesTTM, averagePayablesTTM, averageInventoryTTM, daysSalesOutstandingTTM, daysPayablesOutstandingTTM, daysOfInventoryOnHandTTM, receivablesTurnoverTTM, payablesTurnoverTTM, inventoryTurnoverTTM, roeTTM, capexPerShareTTM

ratios_ttm (69 fields)

dividendYielTTM, dividendYielPercentageTTM, peRatioTTM, pegRatioTTM, payoutRatioTTM, currentRatioTTM, quickRatioTTM, cashRatioTTM, daysOfSalesOutstandingTTM, daysOfInventoryOutstandingTTM, operatingCycleTTM, daysOfPayablesOutstandingTTM, cashConversionCycleTTM, grossProfitMarginTTM, operatingProfitMarginTTM, pretaxProfitMarginTTM, netProfitMarginTTM, effectiveTaxRateTTM, returnOnAssetsTTM, returnOnEquityTTM, returnOnCapitalEmployedTTM, netIncomePerEBTTTM, ebtPerEbitTTM, ebitPerRevenueTTM, debtRatioTTM, debtEquityRatioTTM, longTermDebtToCapitalizationTTM, totalDebtToCapitalizationTTM, interestCoverageTTM, cashFlowToDebtRatioTTM, companyEquityMultiplierTTM, receivablesTurnoverTTM, payablesTurnoverTTM, inventoryTurnoverTTM, fixedAssetTurnoverTTM, assetTurnoverTTM, operatingCashFlowPerShareTTM, freeCashFlowPerShareTTM, cashPerShareTTM, operatingCashFlowSalesRatioTTM, freeCashFlowOperatingCashFlowRatioTTM, cashFlowCoverageRatiosTTM, shortTermCoverageRatiosTTM, capitalExpenditureCoverageRatioTTM, dividendPaidAndCapexCoverageRatioTTM, priceBookValueRatioTTM, priceToBookRatioTTM, priceToSalesRatioTTM, priceEarningsRatioTTM, priceToFreeCashFlowsRatioTTM, priceToOperatingCashFlowsRatioTTM, priceCashFlowRatioTTM, priceEarningsToGrowthRatioTTM, priceSalesRatioTTM, dividendYieldTTM, enterpriseValueMultipleTTM, priceFairValueTTM, dividendPerShareTTM, bookValuePerShareTTM, tangibleBookValuePerShareTTM, shareholdersEquityPerShareTTM, interestDebtPerShareTTM, marketCapTTM, enterpriseValueTTM, evToSalesTTM, evToOperatingCashFlowTTM, evToFreeCashFlowTTM, earningsYieldTTM, freeCashFlowYieldTTM

Other datasets (key fields)

  • income_statement: revenue, grossProfit, operatingIncome, netIncome, eps, ebitda, ...
  • balance_sheet: totalAssets, totalLiabilities, totalEquity, cashAndCashEquivalents, totalDebt, ...
  • cash_flow: operatingCashFlow, capitalExpenditure, freeCashFlow, dividendsPaid, ...
  • earnings: date, eps, epsEstimated, revenue, revenueEstimated, ...
  • profile: companyName, sector, industry, country, exchange, ...

sector

sector(symbol: str) -> str | None
ParameterTypeDescription
symbolstrTicker symbol

Returns: GICS sector name string, or None.

Example (synthetic data)

ctx.data.sector("SYN_001")  # "Technology"

market_cap

market_cap(symbol: str) -> float | None
ParameterTypeDescription
symbolstrTicker symbol

Returns: Market capitalization in USD (float). Used internally; not exposed via public APIs.

Example (synthetic data)

ctx.data.market_cap("SYN_001")  # 250000000000.0

Common Recipes

Momentum ranking (6-month return)

returns = ctx.data.returns(lookback=126)
cum = (1 + returns).prod() - 1
top = cum.sort_values(ascending=False).head(20)
w = 1.0 / len(top)
signal = {sym: round(w, 6) for sym in top.index}

Sector filtering

all_syms = list(ctx.data.returns(lookback=5).columns)
return [s for s in all_syms if ctx.data.sector(s) == "Technology"]

Quality scoring (ROE + margins)

scores = {}
for sym in universe:
    m = ctx.data.fundamentals(sym, "key_metrics_ttm")
    if m and m.get("returnOnEquityTTM") and m.get("netProfitMarginTTM"):
        scores[sym] = m["returnOnEquityTTM"] * m["netProfitMarginTTM"]
top = sorted(scores, key=scores.get, reverse=True)[:15]
w = 1.0 / len(top)
signal = {s: w for s in top}

Volatility (trailing std of returns)

rets = ctx.data.returns(lookback=21)
vol = rets.std()
low_vol = vol.nsmallest(20)
w = 1.0 / len(low_vol)
signal = {sym: round(w, 6) for sym in low_vol.index}

Mean reversion (z-score)

close = ctx.data.close(lookback=63)
z = (close.iloc[-1] - close.mean()) / close.std()
worst = z.nsmallest(20)
w = 1.0 / len(worst)
signal = {sym: round(w, 6) for sym in worst.index}

See also Data API.