Layer 0 · Atomic Factors
Foundational input nodes — price / volume / macro / sentiment series + pure-math primitives (SMA / RSI / Sharpe etc.)
Modules: 22 total · 13 Active (shipped)
Auto-generated
This page is auto-generated from card frontmatter by scripts/build-docs-layer-index.py. Do not edit by hand — changes will be overwritten. To modify the listing, edit the individual operator card or the label mapping in the script.
✅ Active (shipped)
Goldened, validated, and deployed to Canvas
Average True Range (ATR)
ATR = RMA(True Range, 14), Wilder RMA average of True Range. Used for position sizing / stop-loss / volatility filter.
Period-over-Period Growth Rate Series
Calculates period-over-period growth rate g_t = (v_t - v_{t-1}) / v_{t-1} from a value series, automatically skipping None/zero baselines (returns None place...
Hodrick-Prescott Filter (trend-cycle decomposition)
Classic Hodrick-Prescott filter: performs λ-weighted second-difference penalty minimization on time series, decomposing into trend + cycle. Pangura implement...
Macro Factor — Macro Regime Snapshot Node
Canvas macro atomic node: fetches FRED macro series (CPI / FEDFUNDS / UNRATE / GDPC1 etc.) and the MFLE engine aggregates them into a current regime judgment...
News Feed — News Stream Atomic Node
Canvas news-stream atomic node: fetches recent news RSS by keyword or ticker, aggregated across multiple categories. Three-path fallback cascade: explicit ti...
Percentile Rank (ordinal)
Percentile rank of a value within a reference series: strictly-less count / total. Distribution-agnostic alternative, superior to z_score in non-normal scena...
Price Factor — Atomic Price Data Node
The most foundational Canvas node: fetch the latest price plus an N-day history (for sparkline + return calculation) for any ticker (equity / ETF / index / F...
Rolling Mean (window-based)
Rolling mean with window size w; None values within the window are automatically skipped (no None padding to output). Library-level primitive.
Sentiment Factor — Atomic Sentiment Data Node
Canvas sentiment atomic node: synthesizes multi-source sentiment signals (news NLP / TradingView analyst rating / CNN Fear & Greed Index) and returns a per-t...
Stability Score (1 - CV × 5, clipped)
Stability scoring based on Coefficient of Variation CV = std/mean: stability = clip(1 - CV × 5, 0, 1). Directly used for BLCV-V / macro_cli stability dimension.
OLS 1-D Trend Slope
Slope coefficient from numpy.polyfit 1st-order fit, used to determine sequence trend direction (up/down/flat). Library-level primitive, consumed by operators...
Volume Factor — Atomic Volume Data Node
Canvas volume atomic node: fetches N-day OHLCV for any ticker and computes the
currentVolume / avgVolumeratio. Volume spikes often lead price trends and s...
Z-Score (standardization)
Standardize a value relative to a reference series: z = (v - μ) / σ (ddof=0). None-filter + zero-variance returns None. Library-level primitive.
🔁 Superseded
Replaced by newer version
Bollinger Bands
Bollinger Bands: middle = SMA(20), upper/lower = middle ± 2×std_rolling. Dispatched implementation via pandas-ta library.
Exponential Moving Average (EMA)
EWM recursive form (adjust=False): EMA_t = α × price_t + (1-α) × EMA_{t-1}, α = 2/(period+1). Shared by MACD / Bollinger.
Moving Average Convergence/Divergence (MACD)
MACD triplet: MACD line (EMA12 - EMA26), signal line (EMA9 of MACD), histogram (MACD - signal). pandas-ta library dispatch implementation.
Simple Moving Average (SMA)
Thin wrapper for pandas.Series.rolling(window).mean(), default period 20. Library-level primitive, dependency for MACD / Bollinger / momentum strategies.
Pairwise Pearson Correlation Matrix
Calculates pairwise Pearson correlation matrix from dict[name -> series], outputs nested dict. Consumed by portfolio_optimization / portfolio_correlation / b...
Running Drawdown Series + Max Drawdown
Calculates the running drawdown series dd_t = (cum_t - running_max_t) / running_max_t from a daily return series, as well as the maximum drawdown (min of the...
Relative Strength Index (RSI)
RSI = 100 - 100/(1 + RS), where RS is the rolling smoothed version of avg_gain / avg_loss. Defaults to Wilder's RMA/SMMA to match Bloomberg; optional Cutler'...
Sharpe Ratio
Annualized Sharpe Ratio: (mean_excess_return) / std(excess_return) × √252, used as a standardized metric for portfolio risk-adjusted returns. Library-level p...
Sortino Ratio
Sortino ratio: (mean_excess) / downside_std × √252, denominator only for negative returns — corrects Sharpe distortion under fat-tailed / asymmetric distribu...

