{
  "name": "Sharemaestro Factor Intelligence schema",
  "entities": {
    "FactorUniverse": [
      {
        "name": "id",
        "type": "BigAutoField",
        "help_text": ""
      },
      {
        "name": "name",
        "type": "CharField",
        "help_text": ""
      },
      {
        "name": "display_name",
        "type": "CharField",
        "help_text": ""
      },
      {
        "name": "currency",
        "type": "CharField",
        "help_text": "Primary ISO currency code, e.g. GBP, USD, EUR, JPY"
      },
      {
        "name": "include_currencies",
        "type": "JSONField",
        "help_text": "Additional currency codes alongside primary. e.g. ['GBX'] for GBP_UK so pence-denominated tickers are included."
      },
      {
        "name": "countries",
        "type": "JSONField",
        "help_text": "ISO2 country codes to include. e.g. ['GB'] or ['FR','DE','NL','BE','PT','ES','IT','AT','IE','FI','GR']. Empty = currency-only filter (no country restriction)."
      },
      {
        "name": "min_market_cap_usd",
        "type": "DecimalField",
        "help_text": "USD equivalent minimum market cap for ranking inclusion."
      },
      {
        "name": "min_market_cap_local",
        "type": "DecimalField",
        "help_text": "Minimum market cap in the universe's local currency. Optional alternative to min_market_cap_usd \u2014 avoids FX dependency. If set, takes precedence over min_market_cap_usd for this universe."
      },
      {
        "name": "min_tickers_for_activation",
        "type": "PositiveSmallIntegerField",
        "help_text": "Universe must have at least this many rankable tickers to be active."
      },
      {
        "name": "benchmark_symbol",
        "type": "CharField",
        "help_text": "Override benchmark for Mansfield RS within this universe. Falls back to exchange.benchmark_symbol per ticker if blank. e.g. ^FTSE for GBP_UK, ^GSPC for USD_US."
      },
      {
        "name": "exclude_financials",
        "type": "BooleanField",
        "help_text": "Exclude banks and insurance companies from factor ranking. Their balance sheets are structured differently (debt IS the product) so leverage ratios and NWC are not comparable."
      },
      {
        "name": "exclude_utilities",
        "type": "BooleanField",
        "help_text": "Exclude utility companies (capital-intensive, regulated returns)."
      },
      {
        "name": "is_active",
        "type": "BooleanField",
        "help_text": ""
      },
      {
        "name": "description",
        "type": "TextField",
        "help_text": ""
      },
      {
        "name": "created",
        "type": "DateTimeField",
        "help_text": ""
      },
      {
        "name": "updated",
        "type": "DateTimeField",
        "help_text": ""
      }
    ],
    "FactorSnapshot": [
      {
        "name": "id",
        "type": "BigAutoField",
        "help_text": ""
      },
      {
        "name": "ticker",
        "type": "ForeignKey",
        "help_text": ""
      },
      {
        "name": "universe",
        "type": "ForeignKey",
        "help_text": ""
      },
      {
        "name": "week_end_date",
        "type": "DateField",
        "help_text": ""
      },
      {
        "name": "source_primary",
        "type": "CharField",
        "help_text": "Provider that supplied the majority of fields."
      },
      {
        "name": "source_gaps",
        "type": "JSONField",
        "help_text": "field_name \u2192 provider used for gap-fill."
      },
      {
        "name": "financials_period_end",
        "type": "DateField",
        "help_text": "Period end date of the most recent statements used."
      },
      {
        "name": "financials_age_days",
        "type": "PositiveSmallIntegerField",
        "help_text": "Days between financials_period_end and week_end_date."
      },
      {
        "name": "has_full_data",
        "type": "BooleanField",
        "help_text": ""
      },
      {
        "name": "completeness_score",
        "type": "DecimalField",
        "help_text": "0.0\u20131.0 fraction of key factor fields populated."
      },
      {
        "name": "missing_fields",
        "type": "JSONField",
        "help_text": ""
      },
      {
        "name": "is_included_in_ranking",
        "type": "BooleanField",
        "help_text": "Met market cap and data completeness thresholds."
      },
      {
        "name": "is_market_leader",
        "type": "BooleanField",
        "help_text": "Above-average market cap AND revenue within this universe. O'Shaughnessy Market Leaders filter."
      },
      {
        "name": "is_published",
        "type": "BooleanField",
        "help_text": ""
      },
      {
        "name": "computed_at",
        "type": "DateTimeField",
        "help_text": ""
      },
      {
        "name": "batch_id",
        "type": "CharField",
        "help_text": "ID of the build_factor_snapshots run that created this row."
      },
      {
        "name": "os_score_delta",
        "type": "DecimalField",
        "help_text": "Change in overall_composite vs prior week's snapshot."
      },
      {
        "name": "price_close",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "market_cap",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "market_cap_usd",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "enterprise_value",
        "type": "DecimalField",
        "help_text": "market_cap + total_debt - cash + minority_interest"
      },
      {
        "name": "shares_outstanding",
        "type": "BigIntegerField",
        "help_text": ""
      },
      {
        "name": "fx_rate_to_usd",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "pe_ratio",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "pb_ratio",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "ptbv_ratio",
        "type": "DecimalField",
        "help_text": "Price / tangible book value. More conservative than P/B for acquisitive companies with large goodwill."
      },
      {
        "name": "ps_ratio",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "pcf_ratio",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "pfcf_ratio",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "ev_ebitda",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "ev_ebit",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "ev_sales",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "ev_fcf",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "earnings_yield",
        "type": "DecimalField",
        "help_text": "EBIT TTM / EV"
      },
      {
        "name": "fcf_yield",
        "type": "DecimalField",
        "help_text": "FCF TTM / EV"
      },
      {
        "name": "dividend_yield",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "buyback_yield",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "shareholder_yield",
        "type": "DecimalField",
        "help_text": "dividend + net buyback yield"
      },
      {
        "name": "debt_paydown_yield",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "total_yield",
        "type": "DecimalField",
        "help_text": "shareholder + debt paydown yield"
      },
      {
        "name": "gross_margin",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "operating_margin",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "net_margin",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "ebitda_margin",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "fcf_margin",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "roe",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "roa",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "roic",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "roc_greenblatt",
        "type": "DecimalField",
        "help_text": "EBIT / (NWC + NetPPE) \u2014 Greenblatt / SVQF"
      },
      {
        "name": "asset_turnover",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "cash_conversion",
        "type": "DecimalField",
        "help_text": "FCF / Net income \u2014 earnings quality"
      },
      {
        "name": "accruals_ratio",
        "type": "DecimalField",
        "help_text": "(Net income - OCF) / Assets \u2014 Sloan accruals"
      },
      {
        "name": "sbc_to_revenue",
        "type": "DecimalField",
        "help_text": "Stock-based compensation / revenue. Dilution risk signal."
      },
      {
        "name": "debt_to_equity",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "net_debt_to_ebitda",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "debt_to_assets",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "interest_coverage",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "current_ratio",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "quick_ratio",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "net_debt",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "revenue_growth_1y",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "revenue_growth_3y_cagr",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "revenue_growth_5y_cagr",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "eps_growth_1y",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "eps_growth_3y_cagr",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "eps_growth_5y_cagr",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "fcf_growth_1y",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "book_value_growth_1y",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "piotroski_f_score",
        "type": "PositiveSmallIntegerField",
        "help_text": "Piotroski F-Score 0\u20139. Computed from 9 binary signals across profitability, leverage, and efficiency."
      },
      {
        "name": "altman_z_score",
        "type": "DecimalField",
        "help_text": "Altman Z-Score. >2.99 safe, 1.81-2.99 grey zone, <1.81 distress."
      },
      {
        "name": "earnings_stability_5y",
        "type": "DecimalField",
        "help_text": "Coefficient of variation of EPS over 5 years (lower = more stable)."
      },
      {
        "name": "revenue_stability_5y",
        "type": "DecimalField",
        "help_text": "Coefficient of variation of revenue over 5 years."
      },
      {
        "name": "eps_surprise_avg",
        "type": "DecimalField",
        "help_text": "Average EPS surprise % over last 4 reported quarters. +ve = company consistently beats estimates. Coverage: US/EU large caps. Null when unavailable."
      },
      {
        "name": "sue_score",
        "type": "DecimalField",
        "help_text": "Standardised Unexpected Earnings = mean(surprise%) / std(surprise%). Classic earnings momentum factor (Ball & Brown 1968). Null when fewer than 2 quarters of data available."
      },
      {
        "name": "price_return_1m",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "price_return_3m",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "price_return_6m",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "price_return_9m",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "price_return_12m",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "price_return_12m_ex1m",
        "type": "DecimalField",
        "help_text": "12-month return excluding most recent month. Core O'Shaughnessy momentum signal \u2014 skips short-term reversal."
      },
      {
        "name": "distance_from_52w_high",
        "type": "DecimalField",
        "help_text": "Current price / 52-week high. George & Hwang (2004) signal."
      },
      {
        "name": "distance_from_52w_low",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "relative_strength",
        "type": "DecimalField",
        "help_text": "Mansfield RS vs exchange.benchmark_symbol."
      },
      {
        "name": "local_beta",
        "type": "DecimalField",
        "help_text": "Beta vs exchange.benchmark_symbol (not vs SPY). Computed from 52-week weekly bar regression. More meaningful than Yahoo's .info beta for non-US tickers."
      },
      {
        "name": "volatility_252d",
        "type": "DecimalField",
        "help_text": "Rolling 252-day annualized volatility of weekly returns."
      },
      {
        "name": "volatility_60d",
        "type": "DecimalField",
        "help_text": "Rolling 60-day annualized volatility of weekly returns."
      },
      {
        "name": "max_drawdown_12m",
        "type": "DecimalField",
        "help_text": "Maximum drawdown over trailing 12 months."
      },
      {
        "name": "revenue_ttm",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "gross_profit_ttm",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "ebit_ttm",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "ebitda_ttm",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "net_income_ttm",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "eps_diluted_ttm",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "operating_cash_flow_ttm",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "capital_expenditure_ttm",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "fcf_ttm",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "dividends_paid_ttm",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "share_repurchases_ttm",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "shares_issued_ttm",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "interest_expense_ttm",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "cash_and_equivalents",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "total_current_assets",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "total_current_liabilities",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "net_ppe",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "total_assets",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "total_debt",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "total_equity",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "net_working_capital",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "book_value_per_share",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "retained_earnings",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "preferred_stock",
        "type": "DecimalField",
        "help_text": "Preferred stock \u2014 used for common equity ROE calculation."
      },
      {
        "name": "minority_interest",
        "type": "DecimalField",
        "help_text": "Non-controlling interest \u2014 included in EV."
      },
      {
        "name": "tangible_book_value",
        "type": "DecimalField",
        "help_text": "total_equity - goodwill_and_intangibles. More conservative than book value for acquisitive companies. Null when goodwill/intangibles data unavailable."
      },
      {
        "name": "tangible_book_per_share",
        "type": "DecimalField",
        "help_text": "tangible_book_value / shares_outstanding."
      },
      {
        "name": "universe_ticker_count",
        "type": "PositiveSmallIntegerField",
        "help_text": "Number of tickers included in ranking for this universe/week."
      },
      {
        "name": "sector",
        "type": "CharField",
        "help_text": "Sector at time of snapshot \u2014 used for sector z-score composites."
      },
      {
        "name": "rank_pe",
        "type": "PositiveSmallIntegerField",
        "help_text": ""
      },
      {
        "name": "rank_pb",
        "type": "PositiveSmallIntegerField",
        "help_text": ""
      },
      {
        "name": "rank_ptbv",
        "type": "PositiveSmallIntegerField",
        "help_text": "Within-universe rank on price/tangible book value. More reliable than P/B for companies with large goodwill."
      },
      {
        "name": "rank_ps",
        "type": "PositiveSmallIntegerField",
        "help_text": ""
      },
      {
        "name": "rank_pcf",
        "type": "PositiveSmallIntegerField",
        "help_text": ""
      },
      {
        "name": "rank_ev_ebitda",
        "type": "PositiveSmallIntegerField",
        "help_text": ""
      },
      {
        "name": "rank_ev_ebit",
        "type": "PositiveSmallIntegerField",
        "help_text": ""
      },
      {
        "name": "rank_earnings_yield",
        "type": "PositiveSmallIntegerField",
        "help_text": ""
      },
      {
        "name": "rank_fcf_yield",
        "type": "PositiveSmallIntegerField",
        "help_text": ""
      },
      {
        "name": "rank_dividend_yield",
        "type": "PositiveSmallIntegerField",
        "help_text": ""
      },
      {
        "name": "rank_shareholder_yield",
        "type": "PositiveSmallIntegerField",
        "help_text": ""
      },
      {
        "name": "rank_total_yield",
        "type": "PositiveSmallIntegerField",
        "help_text": ""
      },
      {
        "name": "rank_roe",
        "type": "PositiveSmallIntegerField",
        "help_text": ""
      },
      {
        "name": "rank_roc",
        "type": "PositiveSmallIntegerField",
        "help_text": ""
      },
      {
        "name": "rank_roic",
        "type": "PositiveSmallIntegerField",
        "help_text": ""
      },
      {
        "name": "rank_gross_margin",
        "type": "PositiveSmallIntegerField",
        "help_text": ""
      },
      {
        "name": "rank_fcf_margin",
        "type": "PositiveSmallIntegerField",
        "help_text": ""
      },
      {
        "name": "rank_piotroski",
        "type": "PositiveSmallIntegerField",
        "help_text": ""
      },
      {
        "name": "rank_accruals",
        "type": "PositiveSmallIntegerField",
        "help_text": ""
      },
      {
        "name": "rank_sue",
        "type": "PositiveSmallIntegerField",
        "help_text": "Within-universe rank on SUE score (earnings momentum)."
      },
      {
        "name": "rank_eps_growth_1y",
        "type": "PositiveSmallIntegerField",
        "help_text": ""
      },
      {
        "name": "rank_eps_growth_5y",
        "type": "PositiveSmallIntegerField",
        "help_text": ""
      },
      {
        "name": "rank_revenue_growth_1y",
        "type": "PositiveSmallIntegerField",
        "help_text": ""
      },
      {
        "name": "rank_momentum_12m",
        "type": "PositiveSmallIntegerField",
        "help_text": ""
      },
      {
        "name": "rank_momentum_12m_ex1m",
        "type": "PositiveSmallIntegerField",
        "help_text": ""
      },
      {
        "name": "rank_relative_strength",
        "type": "PositiveSmallIntegerField",
        "help_text": ""
      },
      {
        "name": "value_composite",
        "type": "DecimalField",
        "help_text": "Equal-weighted value factor percentile."
      },
      {
        "name": "quality_composite",
        "type": "DecimalField",
        "help_text": "Equal-weighted quality factor percentile."
      },
      {
        "name": "momentum_composite",
        "type": "DecimalField",
        "help_text": "Equal-weighted momentum factor percentile."
      },
      {
        "name": "growth_composite",
        "type": "DecimalField",
        "help_text": "Equal-weighted growth factor percentile."
      },
      {
        "name": "yield_composite",
        "type": "DecimalField",
        "help_text": "Equal-weighted yield factor percentile."
      },
      {
        "name": "svqf_composite",
        "type": "DecimalField",
        "help_text": "Greenblatt Magic Formula: equal-weight(rank_earnings_yield + rank_roc). SVQF = Shareholder Value + Quality + Financials."
      },
      {
        "name": "vc1_composite",
        "type": "DecimalField",
        "help_text": "Value Composite 1 (O'Shaughnessy): P/B + P/E + P/S + P/CF + EV/EBITDA"
      },
      {
        "name": "vc2_composite",
        "type": "DecimalField",
        "help_text": "Value Composite 2: VC1 + shareholder yield"
      },
      {
        "name": "vc3_composite",
        "type": "DecimalField",
        "help_text": "Value Composite 3: VC1 + total yield (buyback-inclusive)"
      },
      {
        "name": "trending_value_composite",
        "type": "DecimalField",
        "help_text": "O'Shaughnessy Trending Value (4th ed flagship): cheapest VC2 decile ranked by 6-month momentum (descending). Rank 1 = best candidate within the VC2-cheapest cohort. Null when ticker is outside the VC2 cheapest decile."
      },
      {
        "name": "overall_composite",
        "type": "DecimalField",
        "help_text": "Strict O'Shaughnessy blend: 50% value + 25% momentum + 25% quality (re-ranked)."
      },
      {
        "name": "factor_coverage",
        "type": "DecimalField",
        "help_text": "Fraction (0-1) of core factor inputs populated."
      },
      {
        "name": "signal_confidence",
        "type": "DecimalField",
        "help_text": "Composite confidence score (0-1) from coverage and freshness."
      },
      {
        "name": "cornerstone_value_rank",
        "type": "PositiveSmallIntegerField",
        "help_text": "O'Shaughnessy Cornerstone Value rank within Market Leaders universe. 1 = highest dividend yield among Market Leaders (excl. utilities). Null if not a Market Leader."
      },
      {
        "name": "cornerstone_growth_rank",
        "type": "PositiveSmallIntegerField",
        "help_text": "O'Shaughnessy Cornerstone Growth rank within qualifying stocks. Filters: P/S < 1.5, positive EPS growth 1Y and 5Y CAGR. Ranked by 12M price return. Null if stock fails any filter."
      },
      {
        "name": "tiny_titans_rank",
        "type": "PositiveSmallIntegerField",
        "help_text": "O'Shaughnessy Tiny Titans rank within micro-cap / low P/S universe. Size: 0.5\u00d7\u20135\u00d7 universe min_market_cap_usd (~$25M\u2013$250M USD). Filter: P/S < 1.0. Ranked by 12M price return. Null if outside size range or P/S too high."
      },
      {
        "name": "all_cap_buyback_rank",
        "type": "PositiveSmallIntegerField",
        "help_text": "O'Shaughnessy All-Cap Buyback Yield rank within full universe. Rank 1 = highest net buyback yield (repurchases \u2212 issuances) / mcap. Dilutive companies rank last. Null only if not in ranking universe."
      },
      {
        "name": "small_cap_core_rank",
        "type": "PositiveSmallIntegerField",
        "help_text": "O'Shaughnessy Small Cap Core rank within small-cap universe segment. Small-cap: mcap \u2265 universe min_market_cap AND < universe average mcap. Ranked by VC2 (cheapest = rank 1). Null if outside small-cap size range."
      },
      {
        "name": "is_cornerstone_value",
        "type": "BooleanField",
        "help_text": "True if cornerstone_value_rank \u2264 10 (top 10% of Market Leaders by dividend yield, excl. utilities). Proxy for OS top-50 selection."
      },
      {
        "name": "is_cornerstone_growth",
        "type": "BooleanField",
        "help_text": "True if cornerstone_growth_rank \u2264 10 (top 10% of qualifying stocks by 12M relative strength). Proxy for OS top-50 selection."
      },
      {
        "name": "is_tiny_titan",
        "type": "BooleanField",
        "help_text": "True if tiny_titans_rank \u2264 10 (top 10% of micro-cap low-P/S stocks by 12M momentum). Proxy for OS top-25 selection."
      },
      {
        "name": "is_all_cap_buyback",
        "type": "BooleanField",
        "help_text": "True if all_cap_buyback_rank \u2264 10 (top 10% of universe by net buyback yield)."
      },
      {
        "name": "is_small_cap_core",
        "type": "BooleanField",
        "help_text": "True if small_cap_core_rank \u2264 10 (top 10% of small-cap segment by VC2 composite)."
      }
    ],
    "FinancialPeriod": [
      {
        "name": "id",
        "type": "BigAutoField",
        "help_text": ""
      },
      {
        "name": "ticker",
        "type": "ForeignKey",
        "help_text": ""
      },
      {
        "name": "period_end_date",
        "type": "DateField",
        "help_text": "Fiscal period end date (e.g. 2023-12-31 for FY2023)."
      },
      {
        "name": "period_type",
        "type": "CharField",
        "help_text": ""
      },
      {
        "name": "fiscal_year",
        "type": "PositiveSmallIntegerField",
        "help_text": "e.g. 2023. Null for quarterly rows."
      },
      {
        "name": "fiscal_quarter",
        "type": "PositiveSmallIntegerField",
        "help_text": "1\u20134. Null for annual rows."
      },
      {
        "name": "provider",
        "type": "ForeignKey",
        "help_text": ""
      },
      {
        "name": "currency_reported",
        "type": "CharField",
        "help_text": "Currency as returned by provider (e.g. GBP, GBX, USD, EUR)."
      },
      {
        "name": "fetched_at",
        "type": "DateTimeField",
        "help_text": ""
      },
      {
        "name": "is_restated",
        "type": "BooleanField",
        "help_text": "True if provider issued a restatement of a previously fetched period."
      },
      {
        "name": "raw_data",
        "type": "JSONField",
        "help_text": "Complete provider response for this period. Full audit trail."
      },
      {
        "name": "revenue",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "cost_of_revenue",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "gross_profit",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "research_and_development",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "selling_general_admin",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "other_operating_expenses",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "total_operating_expenses",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "ebit",
        "type": "DecimalField",
        "help_text": "Operating income / EBIT"
      },
      {
        "name": "depreciation_amortisation",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "ebitda",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "interest_expense",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "interest_income",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "other_non_operating",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "pretax_income",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "tax_provision",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "effective_tax_rate",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "net_income",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "net_income_continuing_ops",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "net_income_to_common",
        "type": "DecimalField",
        "help_text": "After preferred dividends"
      },
      {
        "name": "eps_basic",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "eps_diluted",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "shares_basic",
        "type": "BigIntegerField",
        "help_text": ""
      },
      {
        "name": "shares_diluted",
        "type": "BigIntegerField",
        "help_text": ""
      },
      {
        "name": "cash_and_equivalents",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "short_term_investments",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "net_receivables",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "inventory",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "other_current_assets",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "total_current_assets",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "net_ppe",
        "type": "DecimalField",
        "help_text": "Net property, plant & equipment"
      },
      {
        "name": "goodwill",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "intangible_assets",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "goodwill_and_intangibles",
        "type": "DecimalField",
        "help_text": "Goodwill + intangibles combined. Used for tangible book value (tangible_equity = total_equity - goodwill_and_intangibles). Populated by the yfinance extractor \u2014 tries the combined row first, then sums goodwill + intangible_assets as fallback."
      },
      {
        "name": "long_term_investments",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "other_non_current_assets",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "total_non_current_assets",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "total_assets",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "short_term_debt",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "accounts_payable",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "deferred_revenue_current",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "other_current_liabilities",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "total_current_liabilities",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "long_term_debt",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "deferred_revenue_lt",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "other_non_current_liabilities",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "total_non_current_liabilities",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "total_liabilities",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "total_debt",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "preferred_stock",
        "type": "DecimalField",
        "help_text": "Preferred stock value \u2014 deducted for true common equity ROE"
      },
      {
        "name": "minority_interest",
        "type": "DecimalField",
        "help_text": "Non-controlling interest \u2014 added to EV calculation"
      },
      {
        "name": "retained_earnings",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "total_equity",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "shares_outstanding",
        "type": "BigIntegerField",
        "help_text": ""
      },
      {
        "name": "operating_cash_flow",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "stock_based_compensation",
        "type": "DecimalField",
        "help_text": "Non-cash SBC charge. SBC/revenue = earnings quality signal."
      },
      {
        "name": "deferred_tax_cf",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "change_in_working_capital",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "capital_expenditure",
        "type": "DecimalField",
        "help_text": "Stored as negative value (cash outflow)"
      },
      {
        "name": "acquisitions",
        "type": "DecimalField",
        "help_text": "Acquisition spend \u2014 separate from organic capex"
      },
      {
        "name": "other_investing",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "investing_cash_flow",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "dividends_paid",
        "type": "DecimalField",
        "help_text": "Stored as negative value"
      },
      {
        "name": "share_repurchases",
        "type": "DecimalField",
        "help_text": "Stored as negative value"
      },
      {
        "name": "shares_issued",
        "type": "DecimalField",
        "help_text": "Proceeds from new equity issuance"
      },
      {
        "name": "net_debt_issued",
        "type": "DecimalField",
        "help_text": "+ve = net borrowing, -ve = net repayment"
      },
      {
        "name": "other_financing",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "financing_cash_flow",
        "type": "DecimalField",
        "help_text": ""
      },
      {
        "name": "free_cash_flow",
        "type": "DecimalField",
        "help_text": "Provider pre-computed if available; else OCF + capex"
      },
      {
        "name": "net_change_in_cash",
        "type": "DecimalField",
        "help_text": ""
      }
    ]
  },
  "field_groups": {
    "snapshot": {
      "identity": [
        "week_end_date",
        "source_primary",
        "financials_period_end",
        "financials_age_days",
        "has_full_data",
        "completeness_score",
        "is_included_in_ranking",
        "is_market_leader",
        "is_published",
        "computed_at",
        "batch_id"
      ],
      "size": [
        "price_close",
        "market_cap",
        "market_cap_usd",
        "enterprise_value",
        "shares_outstanding",
        "fx_rate_to_usd"
      ],
      "valuation": [
        "pe_ratio",
        "pb_ratio",
        "ptbv_ratio",
        "ps_ratio",
        "pcf_ratio",
        "pfcf_ratio",
        "ev_ebitda",
        "ev_ebit",
        "ev_sales",
        "ev_fcf",
        "earnings_yield",
        "fcf_yield",
        "price_to_sales",
        "price_to_book",
        "price_to_cashflow",
        "ebitda_to_ev",
        "sales_yield"
      ],
      "yield": [
        "dividend_yield",
        "buyback_yield",
        "shareholder_yield",
        "debt_paydown_yield",
        "total_yield"
      ],
      "quality": [
        "gross_margin",
        "operating_margin",
        "net_margin",
        "ebitda_margin",
        "fcf_margin",
        "roe",
        "roa",
        "roic",
        "roc_greenblatt",
        "asset_turnover",
        "cash_conversion",
        "accruals_ratio",
        "sbc_to_revenue",
        "piotroski_f_score",
        "altman_z_score",
        "earnings_stability_5y",
        "revenue_stability_5y",
        "eps_surprise_avg",
        "sue_score",
        "gross_profit_to_assets",
        "external_financing"
      ],
      "leverage_and_risk": [
        "debt_to_equity",
        "net_debt_to_ebitda",
        "debt_to_assets",
        "interest_coverage",
        "current_ratio",
        "quick_ratio",
        "net_debt",
        "local_beta",
        "volatility_252d",
        "volatility_60d",
        "max_drawdown_12m",
        "risk_adjusted_momentum"
      ],
      "growth": [
        "revenue_growth_1y",
        "revenue_growth_3y_cagr",
        "revenue_growth_5y_cagr",
        "eps_growth_1y",
        "eps_growth_3y_cagr",
        "eps_growth_5y_cagr",
        "fcf_growth_1y",
        "book_value_growth_1y",
        "revenue_growth",
        "earnings_growth"
      ],
      "momentum": [
        "price_return_1m",
        "price_return_3m",
        "price_return_6m",
        "price_return_9m",
        "price_return_12m",
        "price_return_12m_ex1m",
        "momentum_6m",
        "momentum_12m",
        "momentum_12_1",
        "distance_from_52w_high",
        "distance_from_52w_low",
        "relative_strength"
      ],
      "raw_ttm": [
        "revenue_ttm",
        "gross_profit_ttm",
        "ebit_ttm",
        "ebitda_ttm",
        "net_income_ttm",
        "eps_diluted_ttm",
        "operating_cash_flow_ttm",
        "capital_expenditure_ttm",
        "fcf_ttm",
        "dividends_paid_ttm",
        "share_repurchases_ttm",
        "shares_issued_ttm",
        "interest_expense_ttm",
        "cash_and_equivalents",
        "total_current_assets",
        "total_current_liabilities",
        "net_ppe",
        "total_assets",
        "total_debt",
        "total_equity",
        "net_working_capital",
        "book_value_per_share",
        "retained_earnings",
        "preferred_stock",
        "minority_interest",
        "tangible_book_value",
        "tangible_book_per_share"
      ],
      "ranks": [
        "universe_ticker_count",
        "rank_pe",
        "rank_pb",
        "rank_ptbv",
        "rank_ps",
        "rank_pcf",
        "rank_ev_ebitda",
        "rank_ev_ebit",
        "rank_earnings_yield",
        "rank_fcf_yield",
        "rank_dividend_yield",
        "rank_shareholder_yield",
        "rank_total_yield",
        "rank_roe",
        "rank_roc",
        "rank_roic",
        "rank_gross_margin",
        "rank_fcf_margin",
        "rank_piotroski",
        "rank_accruals",
        "rank_sue",
        "rank_eps_growth_1y",
        "rank_eps_growth_5y",
        "rank_revenue_growth_1y",
        "rank_momentum_12m",
        "rank_momentum_12m_ex1m",
        "rank_relative_strength"
      ],
      "composites": [
        "value_composite",
        "quality_composite",
        "momentum_composite",
        "growth_composite",
        "yield_composite",
        "svqf_composite",
        "vc1_composite",
        "vc2_composite",
        "vc3_composite",
        "trending_value_composite",
        "overall_composite",
        "quality_value_composite",
        "os_score",
        "value_percentile",
        "quality_percentile",
        "momentum_percentile",
        "factor_coverage",
        "signal_confidence",
        "os_score_delta"
      ],
      "strategy_ranks": [
        "cornerstone_value_rank",
        "cornerstone_growth_rank",
        "tiny_titans_rank",
        "all_cap_buyback_rank",
        "small_cap_core_rank",
        "is_cornerstone_value",
        "is_cornerstone_growth",
        "is_tiny_titan",
        "is_all_cap_buyback",
        "is_small_cap_core",
        "trending_value_rank",
        "veiled_value",
        "earnings_consistent_5y"
      ]
    },
    "financial_period": {
      "income_statement": [
        "revenue",
        "cost_of_revenue",
        "gross_profit",
        "ebit",
        "ebitda",
        "pretax_income",
        "tax_provision",
        "net_income",
        "net_income_to_common",
        "eps_basic",
        "eps_diluted",
        "shares_basic",
        "shares_diluted"
      ],
      "balance_sheet": [
        "cash_and_equivalents",
        "total_current_assets",
        "total_assets",
        "short_term_debt",
        "long_term_debt",
        "total_debt",
        "total_liabilities",
        "total_equity",
        "shares_outstanding",
        "goodwill_and_intangibles"
      ],
      "cash_flow": [
        "operating_cash_flow",
        "capital_expenditure",
        "free_cash_flow",
        "dividends_paid",
        "share_repurchases",
        "shares_issued",
        "net_debt_issued"
      ]
    }
  },
  "factor_catalog": {
    "Composite": [
      {
        "key": "os_score",
        "field": "os_score",
        "label": "OS Composite",
        "format": ".3f",
        "description": "Strict O'Shaughnessy blend: 50% value + 25% momentum + 25% quality",
        "sort_direction": "desc"
      },
      {
        "key": "value_pct",
        "field": "value_percentile",
        "label": "Value %ile",
        "format": ".3f",
        "description": "Value percentile rank",
        "sort_direction": "desc"
      },
      {
        "key": "quality_pct",
        "field": "quality_percentile",
        "label": "Quality %ile",
        "format": ".3f",
        "description": "Quality percentile rank",
        "sort_direction": "desc"
      },
      {
        "key": "momentum_pct",
        "field": "momentum_percentile",
        "label": "Momentum %ile",
        "format": ".3f",
        "description": "Momentum percentile rank",
        "sort_direction": "desc"
      },
      {
        "key": "qv_composite",
        "field": "quality_value_composite",
        "label": "QV Composite",
        "format": ".3f",
        "description": "Quality \u00d7 Value geometric mean",
        "sort_direction": "desc"
      }
    ],
    "Value": [
      {
        "key": "pe_ratio",
        "field": "pe_ratio",
        "label": "P/E Ratio",
        "format": ".1f",
        "description": "Price / Earnings",
        "sort_direction": "asc"
      },
      {
        "key": "earnings_yield",
        "field": "earnings_yield",
        "label": "Earnings Yield",
        "format": ".4f",
        "description": "E/P (inverted P/E)",
        "sort_direction": "desc"
      },
      {
        "key": "price_to_sales",
        "field": "price_to_sales",
        "label": "P/S Ratio",
        "format": ".2f",
        "description": "Price / Sales",
        "sort_direction": "asc"
      },
      {
        "key": "price_to_cashflow",
        "field": "price_to_cashflow",
        "label": "P/CF Ratio",
        "format": ".2f",
        "description": "Price / Operating Cash Flow",
        "sort_direction": "asc"
      },
      {
        "key": "sales_yield",
        "field": "sales_yield",
        "label": "Sales Yield",
        "format": ".4f",
        "description": "Revenue / Price",
        "sort_direction": "desc"
      },
      {
        "key": "fcf_yield",
        "field": "fcf_yield",
        "label": "FCF Yield",
        "format": ".4f",
        "description": "Free Cash Flow / Price",
        "sort_direction": "desc"
      },
      {
        "key": "price_to_book",
        "field": "price_to_book",
        "label": "P/B Ratio",
        "format": ".2f",
        "description": "Price / Book Value",
        "sort_direction": "asc"
      },
      {
        "key": "ebitda_to_ev",
        "field": "ebitda_to_ev",
        "label": "EBITDA/EV",
        "format": ".4f",
        "description": "O'Shaughnessy's best value factor",
        "sort_direction": "desc"
      },
      {
        "key": "shareholder_yield",
        "field": "shareholder_yield",
        "label": "SH Yield",
        "format": ".4f",
        "description": "Dividend + net buyback / mktcap",
        "sort_direction": "desc"
      },
      {
        "key": "buyback_yield",
        "field": "buyback_yield",
        "label": "Buyback Yield",
        "format": ".4f",
        "description": "Net share repurchase / mktcap",
        "sort_direction": "desc"
      },
      {
        "key": "dividend_yield",
        "field": "dividend_yield",
        "label": "Div Yield",
        "format": ".4f",
        "description": "Annual dividend / Price",
        "sort_direction": "desc"
      }
    ],
    "Quality": [
      {
        "key": "roe",
        "field": "roe",
        "label": "ROE",
        "format": ".4f",
        "description": "Return on Equity",
        "sort_direction": "desc"
      },
      {
        "key": "roa",
        "field": "roa",
        "label": "ROA",
        "format": ".4f",
        "description": "Return on Assets",
        "sort_direction": "desc"
      },
      {
        "key": "net_margin",
        "field": "net_margin",
        "label": "Net Margin",
        "format": ".4f",
        "description": "Net Income / Revenue",
        "sort_direction": "desc"
      },
      {
        "key": "operating_margin",
        "field": "operating_margin",
        "label": "Op Margin",
        "format": ".4f",
        "description": "Operating Income / Revenue",
        "sort_direction": "desc"
      },
      {
        "key": "gross_profit_to_assets",
        "field": "gross_profit_to_assets",
        "label": "GPA",
        "format": ".4f",
        "description": "Novy-Marx Gross Profit/Assets",
        "sort_direction": "desc"
      },
      {
        "key": "debt_to_equity",
        "field": "debt_to_equity",
        "label": "D/E Ratio",
        "format": ".2f",
        "description": "Total Debt / Equity",
        "sort_direction": "asc"
      },
      {
        "key": "current_ratio",
        "field": "current_ratio",
        "label": "Current Ratio",
        "format": ".2f",
        "description": "Current Assets / Liabilities",
        "sort_direction": "desc"
      },
      {
        "key": "accruals_ratio",
        "field": "accruals_ratio",
        "label": "Accruals",
        "format": ".4f",
        "description": "Lower = higher earnings quality",
        "sort_direction": "asc"
      },
      {
        "key": "external_financing",
        "field": "external_financing",
        "label": "Ext Financing",
        "format": ".4f",
        "description": "Net issuance / assets \u2014 lower=better",
        "sort_direction": "asc"
      },
      {
        "key": "earnings_stability",
        "field": "earnings_stability",
        "label": "Earn Stability",
        "format": ".3f",
        "description": "CV of quarterly NI \u2014 lower=more stable",
        "sort_direction": "asc"
      },
      {
        "key": "revenue_growth",
        "field": "revenue_growth",
        "label": "Rev Growth",
        "format": ".4f",
        "description": "YoY revenue change",
        "sort_direction": "desc"
      },
      {
        "key": "earnings_growth",
        "field": "earnings_growth",
        "label": "Earn Growth",
        "format": ".4f",
        "description": "YoY earnings change",
        "sort_direction": "desc"
      },
      {
        "key": "piotroski_f_score",
        "field": "piotroski_f_score",
        "label": "F-Score",
        "format": "d",
        "description": "Piotroski 0\u20139 (9=best)",
        "sort_direction": "desc"
      },
      {
        "key": "capital_allocation_quality",
        "field": "capital_allocation_quality",
        "label": "Cap Alloc Q",
        "format": ".3f",
        "description": "Capital allocation quality (0-1)",
        "sort_direction": "desc"
      },
      {
        "key": "enhanced_quality",
        "field": "enhanced_quality",
        "label": "Enh Quality",
        "format": ".4f",
        "description": "Quality composite (accrual-adjusted)",
        "sort_direction": "desc"
      }
    ],
    "Momentum": [
      {
        "key": "momentum_6m",
        "field": "momentum_6m",
        "label": "Mom 6M",
        "format": ".4f",
        "description": "6-month price return",
        "sort_direction": "desc"
      },
      {
        "key": "momentum_12m",
        "field": "momentum_12m",
        "label": "Mom 12M",
        "format": ".4f",
        "description": "12-month price return",
        "sort_direction": "desc"
      },
      {
        "key": "momentum_12_1",
        "field": "momentum_12_1",
        "label": "Mom 12-1",
        "format": ".4f",
        "description": "12M return ex. last month",
        "sort_direction": "desc"
      },
      {
        "key": "risk_adj_mom",
        "field": "risk_adjusted_momentum",
        "label": "Risk-Adj Mom",
        "format": ".2f",
        "description": "12-1 Momentum / Volatility",
        "sort_direction": "desc"
      },
      {
        "key": "trending_value_rank",
        "field": "trending_value_rank",
        "label": "TV Rank",
        "format": "d",
        "description": "Trending Value rank",
        "sort_direction": "asc"
      },
      {
        "key": "os_score_delta",
        "field": "os_score_delta",
        "label": "OS \u0394",
        "format": ".4f",
        "description": "OS score change vs prior snapshot",
        "sort_direction": "desc"
      }
    ],
    "Risk": [
      {
        "key": "volatility_252d",
        "field": "volatility_252d",
        "label": "Vol 252d",
        "format": ".4f",
        "description": "Annualised 252-day vol",
        "sort_direction": "asc"
      },
      {
        "key": "volatility_60d",
        "field": "volatility_60d",
        "label": "Vol 60d",
        "format": ".4f",
        "description": "Annualised 60-day vol",
        "sort_direction": "asc"
      },
      {
        "key": "max_drawdown_12m",
        "field": "max_drawdown_12m",
        "label": "Max DD 12M",
        "format": ".4f",
        "description": "Max drawdown in 12 months",
        "sort_direction": "asc"
      }
    ],
    "Value Comp": [
      {
        "key": "vc1_score",
        "field": "vc1_score",
        "label": "VC1",
        "format": "d",
        "description": "Value Composite 1 (1=cheapest)",
        "sort_direction": "asc"
      },
      {
        "key": "vc2_score",
        "field": "vc2_score",
        "label": "VC2",
        "format": "d",
        "description": "VC1 + SH Yield (1=cheapest)",
        "sort_direction": "asc"
      },
      {
        "key": "vc3_score",
        "field": "vc3_score",
        "label": "VC3",
        "format": "d",
        "description": "VC1 + Buyback Yield (1=cheapest)",
        "sort_direction": "asc"
      }
    ],
    "Growth": [
      {
        "key": "earnings_consecutive_years",
        "field": "earnings_consecutive_years",
        "label": "EPS Streak",
        "format": "d",
        "description": "Years of consecutive EPS growth",
        "sort_direction": "desc"
      }
    ],
    "Sector": [
      {
        "key": "sector_pe_zscore",
        "field": "sector_pe_zscore",
        "label": "Sector P/E Z",
        "format": ".2f",
        "description": "P/E z-score within sector (neg=cheap)",
        "sort_direction": "asc"
      },
      {
        "key": "sector_pb_zscore",
        "field": "sector_pb_zscore",
        "label": "Sector P/B Z",
        "format": ".2f",
        "description": "P/B z-score within sector",
        "sort_direction": "asc"
      },
      {
        "key": "sector_value_pct",
        "field": "sector_value_pct",
        "label": "Sector Val%",
        "format": ".3f",
        "description": "Value percentile within sector",
        "sort_direction": "desc"
      },
      {
        "key": "sector_quality_pct",
        "field": "sector_quality_pct",
        "label": "Sector Qual%",
        "format": ".3f",
        "description": "Quality percentile within sector",
        "sort_direction": "desc"
      }
    ],
    "Size": [
      {
        "key": "market_cap",
        "field": "market_cap",
        "label": "Market Cap",
        "format": ".0f",
        "description": "Market capitalisation (local currency)",
        "sort_direction": "desc"
      },
      {
        "key": "price",
        "field": "price",
        "label": "Price",
        "format": ".2f",
        "description": "Share price (local currency)",
        "sort_direction": "desc"
      },
      {
        "key": "enterprise_value",
        "field": "enterprise_value",
        "label": "Ent Value",
        "format": ".0f",
        "description": "Enterprise Value (local currency)",
        "sort_direction": "desc"
      }
    ],
    "Signal": [
      {
        "key": "signal_confidence",
        "field": "signal_confidence",
        "label": "Confidence",
        "format": ".3f",
        "description": "Signal reliability (0\u20131)",
        "sort_direction": "desc"
      },
      {
        "key": "factor_coverage",
        "field": "factor_coverage",
        "label": "Coverage",
        "format": ".3f",
        "description": "Factor completeness (0\u20131)",
        "sort_direction": "desc"
      }
    ]
  },
  "preset_catalog": {
    "os_top": {
      "key": "os_top",
      "name": "OS Top Picks",
      "description": "Highest OS composite \u2014 balanced value, quality, momentum",
      "filters": {
        "os_score__gte": "0.65",
        "signal_confidence__gte": "0.5"
      },
      "sort": "-os_score",
      "screener_url": "https://sharemaestro.com/factors/screener/?preset=os_top",
      "api_url": "https://sharemaestro.com/factors/api/presets/os_top/",
      "screener_api_url": "https://sharemaestro.com/factors/api/screener/?preset=os_top"
    },
    "trending_value_vc2": {
      "key": "trending_value_vc2",
      "name": "Trending Value (VC2)",
      "description": "O'Shaughnessy's #1 strategy \u2014 cheapest VC2 decile + 6M momentum",
      "filters": {
        "vc2_score__lte": "10",
        "trending_value_rank__isnull": false,
        "trending_value_rank__lte": "25"
      },
      "sort": "trending_value_rank",
      "screener_url": "https://sharemaestro.com/factors/screener/?preset=trending_value_vc2",
      "api_url": "https://sharemaestro.com/factors/api/presets/trending_value_vc2/",
      "screener_api_url": "https://sharemaestro.com/factors/api/screener/?preset=trending_value_vc2"
    },
    "deep_value": {
      "key": "deep_value",
      "name": "Deep Value",
      "description": "Low P/E, high earnings yield, strong F-Score",
      "filters": {
        "pe_ratio__lte": "15",
        "pe_ratio__gt": "0",
        "earnings_yield__gte": "0.05",
        "piotroski_f_score__gte": "6"
      },
      "sort": "-earnings_yield",
      "screener_url": "https://sharemaestro.com/factors/screener/?preset=deep_value",
      "api_url": "https://sharemaestro.com/factors/api/presets/deep_value/",
      "screener_api_url": "https://sharemaestro.com/factors/api/screener/?preset=deep_value"
    },
    "vc2_cheapest": {
      "key": "vc2_cheapest",
      "name": "VC2 Cheapest Decile",
      "description": "Top 10% by Value Composite 2 \u2014 O'Shaughnessy multi-factor value",
      "filters": {
        "vc2_score__lte": "10"
      },
      "sort": "vc2_score",
      "screener_url": "https://sharemaestro.com/factors/screener/?preset=vc2_cheapest",
      "api_url": "https://sharemaestro.com/factors/api/presets/vc2_cheapest/",
      "screener_api_url": "https://sharemaestro.com/factors/api/screener/?preset=vc2_cheapest"
    },
    "quality_value": {
      "key": "quality_value",
      "name": "Quality at a Price",
      "description": "High QV composite \u2014 avoids value traps via quality gate",
      "filters": {
        "quality_value_composite__gte": "0.6",
        "piotroski_f_score__gte": "5"
      },
      "sort": "-quality_value_composite",
      "screener_url": "https://sharemaestro.com/factors/screener/?preset=quality_value",
      "api_url": "https://sharemaestro.com/factors/api/presets/quality_value/",
      "screener_api_url": "https://sharemaestro.com/factors/api/screener/?preset=quality_value"
    },
    "cornerstone_value": {
      "key": "cornerstone_value",
      "name": "Cornerstone Value",
      "description": "O'Shaughnessy Market Leaders (ex-utilities) ranked by dividend yield",
      "filters": {
        "is_market_leader": "True",
        "dividend_yield__gt": "0"
      },
      "sort": "-dividend_yield",
      "screener_url": "https://sharemaestro.com/factors/screener/?preset=cornerstone_value",
      "api_url": "https://sharemaestro.com/factors/api/presets/cornerstone_value/",
      "screener_api_url": "https://sharemaestro.com/factors/api/screener/?preset=cornerstone_value"
    },
    "cornerstone_growth": {
      "key": "cornerstone_growth",
      "name": "Cornerstone Growth",
      "description": "All Stocks universe, P/S < 1.5, 5yr earnings consistency, strongest momentum",
      "filters": {
        "cornerstone_growth_rank__isnull": false
      },
      "sort": "cornerstone_growth_rank",
      "screener_url": "https://sharemaestro.com/factors/screener/?preset=cornerstone_growth",
      "api_url": "https://sharemaestro.com/factors/api/presets/cornerstone_growth/",
      "screener_api_url": "https://sharemaestro.com/factors/api/screener/?preset=cornerstone_growth"
    },
    "garp": {
      "key": "garp",
      "name": "GARP",
      "description": "Growth at a reasonable price \u2014 revenue growth + moderate P/E",
      "filters": {
        "revenue_growth__gte": "0.10",
        "pe_ratio__lte": "25",
        "pe_ratio__gt": "0",
        "quality_percentile__gte": "0.4"
      },
      "sort": "-os_score",
      "screener_url": "https://sharemaestro.com/factors/screener/?preset=garp",
      "api_url": "https://sharemaestro.com/factors/api/presets/garp/",
      "screener_api_url": "https://sharemaestro.com/factors/api/screener/?preset=garp"
    },
    "shareholder_yield": {
      "key": "shareholder_yield",
      "name": "Shareholder Yield",
      "description": "Dividends + buybacks + debt paydown \u2014 O'Shaughnessy's total cash return",
      "filters": {},
      "sort": "-shareholder_yield",
      "screener_url": "https://sharemaestro.com/factors/screener/?preset=shareholder_yield",
      "api_url": "https://sharemaestro.com/factors/api/presets/shareholder_yield/",
      "screener_api_url": "https://sharemaestro.com/factors/api/screener/?preset=shareholder_yield"
    },
    "ebitda_ev": {
      "key": "ebitda_ev",
      "name": "EBITDA/EV Value",
      "description": "Highest EBITDA/EV (positive only) \u2014 O'Shaughnessy's strongest value signal",
      "filters": {
        "ebitda_to_ev__gt": "0",
        "signal_confidence__gte": "0.4"
      },
      "sort": "-ebitda_to_ev",
      "screener_url": "https://sharemaestro.com/factors/screener/?preset=ebitda_ev",
      "api_url": "https://sharemaestro.com/factors/api/presets/ebitda_ev/",
      "screener_api_url": "https://sharemaestro.com/factors/api/screener/?preset=ebitda_ev"
    },
    "trending_value": {
      "key": "trending_value",
      "name": "Trending Value (Classic)",
      "description": "Cheapest decile by value + 6M momentum overlay",
      "filters": {
        "vc2_score__lte": "10",
        "trending_value_rank__isnull": false,
        "trending_value_rank__lte": "50"
      },
      "sort": "trending_value_rank",
      "screener_url": "https://sharemaestro.com/factors/screener/?preset=trending_value",
      "api_url": "https://sharemaestro.com/factors/api/presets/trending_value/",
      "screener_api_url": "https://sharemaestro.com/factors/api/screener/?preset=trending_value"
    },
    "quality_compounders": {
      "key": "quality_compounders",
      "name": "Quality Compounders",
      "description": "High ROE, margins, low debt \u2014 long-term compounders",
      "filters": {
        "roe__gte": "0.15",
        "net_margin__gte": "0.10",
        "debt_to_equity__lte": "1.0",
        "revenue_growth__gte": "0.05"
      },
      "sort": "-quality_percentile",
      "screener_url": "https://sharemaestro.com/factors/screener/?preset=quality_compounders",
      "api_url": "https://sharemaestro.com/factors/api/presets/quality_compounders/",
      "screener_api_url": "https://sharemaestro.com/factors/api/screener/?preset=quality_compounders"
    },
    "piotroski_bargains": {
      "key": "piotroski_bargains",
      "name": "Piotroski Bargains",
      "description": "F-Score \u22657 with top-half value",
      "filters": {
        "piotroski_f_score__gte": "7",
        "value_percentile__gte": "0.5"
      },
      "sort": "-value_percentile",
      "screener_url": "https://sharemaestro.com/factors/screener/?preset=piotroski_bargains",
      "api_url": "https://sharemaestro.com/factors/api/presets/piotroski_bargains/",
      "screener_api_url": "https://sharemaestro.com/factors/api/screener/?preset=piotroski_bargains"
    },
    "alpha_within_value": {
      "key": "alpha_within_value",
      "name": "Alpha Within Value",
      "description": "Cheap + internally funded buybacks + good capital allocation",
      "filters": {
        "vc2_score__lte": "40",
        "shareholder_yield__gte": "0.02",
        "ebitda_to_ev__gt": "0"
      },
      "sort": "-shareholder_yield",
      "screener_url": "https://sharemaestro.com/factors/screener/?preset=alpha_within_value",
      "api_url": "https://sharemaestro.com/factors/api/presets/alpha_within_value/",
      "screener_api_url": "https://sharemaestro.com/factors/api/screener/?preset=alpha_within_value"
    },
    "veiled_value": {
      "key": "veiled_value",
      "name": "Veiled Value",
      "description": "OSAM insight: expensive by P/B but cheap by everything else",
      "filters": {
        "veiled_value": "True"
      },
      "sort": "-os_score",
      "screener_url": "https://sharemaestro.com/factors/screener/?preset=veiled_value",
      "api_url": "https://sharemaestro.com/factors/api/presets/veiled_value/",
      "screener_api_url": "https://sharemaestro.com/factors/api/screener/?preset=veiled_value"
    },
    "earnings_consistency": {
      "key": "earnings_consistency",
      "name": "Consistent Earners",
      "description": "5+ years of consecutive EPS growth \u2014 O'Shaughnessy growth signal",
      "filters": {
        "earnings_consistent_5y": "True",
        "eps_growth_5y_cagr__gt": "0",
        "eps_growth_1y__gt": "0",
        "value_percentile__gte": "0.4"
      },
      "sort": "-eps_growth_5y_cagr",
      "screener_url": "https://sharemaestro.com/factors/screener/?preset=earnings_consistency",
      "api_url": "https://sharemaestro.com/factors/api/presets/earnings_consistency/",
      "screener_api_url": "https://sharemaestro.com/factors/api/screener/?preset=earnings_consistency"
    },
    "momentum_leaders": {
      "key": "momentum_leaders",
      "name": "Momentum Leaders",
      "description": "Strongest 12-1 momentum with controlled risk",
      "filters": {
        "momentum_12_1__gte": "0.15",
        "volatility_252d__lte": "0.5"
      },
      "sort": "-risk_adjusted_momentum",
      "screener_url": "https://sharemaestro.com/factors/screener/?preset=momentum_leaders",
      "api_url": "https://sharemaestro.com/factors/api/presets/momentum_leaders/",
      "screener_api_url": "https://sharemaestro.com/factors/api/screener/?preset=momentum_leaders"
    },
    "market_leaders_value": {
      "key": "market_leaders_value",
      "name": "Market Leaders Value",
      "description": "OSAM production strategy \u2014 market leaders + shareholder yield",
      "filters": {
        "is_market_leader": "True",
        "shareholder_yield__gte": "0.03"
      },
      "sort": "-shareholder_yield",
      "screener_url": "https://sharemaestro.com/factors/screener/?preset=market_leaders_value",
      "api_url": "https://sharemaestro.com/factors/api/presets/market_leaders_value/",
      "screener_api_url": "https://sharemaestro.com/factors/api/screener/?preset=market_leaders_value"
    },
    "small_cap_value": {
      "key": "small_cap_value",
      "name": "Small Cap Value",
      "description": "Small/micro caps with strong value \u2014 higher alpha potential",
      "filters": {
        "market_cap_class__in": [
          "small",
          "micro"
        ],
        "value_percentile__gte": "0.6",
        "piotroski_f_score__gte": "5"
      },
      "sort": "-value_percentile",
      "screener_url": "https://sharemaestro.com/factors/screener/?preset=small_cap_value",
      "api_url": "https://sharemaestro.com/factors/api/presets/small_cap_value/",
      "screener_api_url": "https://sharemaestro.com/factors/api/screener/?preset=small_cap_value"
    },
    "tiny_titans": {
      "key": "tiny_titans",
      "name": "Tiny Titans",
      "description": "O'Shaughnessy micro-caps (~25M-250M local currency), low P/S, momentum",
      "filters": {
        "tiny_titans_rank__isnull": false
      },
      "sort": "tiny_titans_rank",
      "screener_url": "https://sharemaestro.com/factors/screener/?preset=tiny_titans",
      "api_url": "https://sharemaestro.com/factors/api/presets/tiny_titans/",
      "screener_api_url": "https://sharemaestro.com/factors/api/screener/?preset=tiny_titans"
    },
    "low_vol": {
      "key": "low_vol",
      "name": "Low Volatility",
      "description": "Defensive picks \u2014 lowest vol with positive momentum",
      "filters": {
        "volatility_252d__lte": "0.25",
        "momentum_12_1__gte": "0"
      },
      "sort": "volatility_252d",
      "screener_url": "https://sharemaestro.com/factors/screener/?preset=low_vol",
      "api_url": "https://sharemaestro.com/factors/api/presets/low_vol/",
      "screener_api_url": "https://sharemaestro.com/factors/api/screener/?preset=low_vol"
    },
    "os_improvers": {
      "key": "os_improvers",
      "name": "OS Score Improvers",
      "description": "Biggest positive change in composite score vs prior snapshot",
      "filters": {
        "os_score_delta__gt": "0",
        "os_score__gte": "0.4"
      },
      "sort": "-os_score_delta",
      "screener_url": "https://sharemaestro.com/factors/screener/?preset=os_improvers",
      "api_url": "https://sharemaestro.com/factors/api/presets/os_improvers/",
      "screener_api_url": "https://sharemaestro.com/factors/api/screener/?preset=os_improvers"
    },
    "sector_value_leaders": {
      "key": "sector_value_leaders",
      "name": "Cheapest in Sector",
      "description": "Sector-relative bargains (fallback: top value cohort when sector score unavailable)",
      "filters": {
        "value_percentile__gte": "0.8",
        "signal_confidence__gte": "0.4"
      },
      "sort": "-value_percentile",
      "screener_url": "https://sharemaestro.com/factors/screener/?preset=sector_value_leaders",
      "api_url": "https://sharemaestro.com/factors/api/presets/sector_value_leaders/",
      "screener_api_url": "https://sharemaestro.com/factors/api/screener/?preset=sector_value_leaders"
    },
    "high_yield": {
      "key": "high_yield",
      "name": "High Yield",
      "description": "Top dividend and FCF yields for income investors",
      "filters": {
        "dividend_yield__gte": "0.03",
        "fcf_yield__gte": "0.04"
      },
      "sort": "-dividend_yield",
      "screener_url": "https://sharemaestro.com/factors/screener/?preset=high_yield",
      "api_url": "https://sharemaestro.com/factors/api/presets/high_yield/",
      "screener_api_url": "https://sharemaestro.com/factors/api/screener/?preset=high_yield"
    }
  },
  "strategy_catalog": [
    {
      "key": "multi_factor",
      "label": "Multi-Factor",
      "description": "Composite strategies blending value, momentum, and quality.",
      "strategies": [
        {
          "key": "os_composite",
          "name": "OS Composite Score",
          "slug": "composite",
          "group": "multi_factor",
          "tagline": "Strict O'Shaughnessy blend: 50% Value + 25% Momentum + 25% Quality",
          "thesis": "Strict O'Shaughnessy composite ranking: 50% value, 25% momentum, and 25% quality. The highest-ranked names combine cheapness, trend support, and business quality in a single disciplined signal.",
          "primary_sort": "-os_score",
          "limit": 50,
          "screener_preset": "os_top",
          "page_url": "https://sharemaestro.com/factors/composite/",
          "api_url": "https://sharemaestro.com/factors/api/strategies/composite/",
          "chart_config": {
            "x": "x",
            "y": "y",
            "xl": "Value Percentile",
            "yl": "Quality Percentile",
            "colour": "mom",
            "cl": "Momentum %",
            "size": "os",
            "sl": "OS Score",
            "quads": [
              "High Quality\nLow Value",
              "Cheap +\nHigh Quality",
              "Cheap +\nLow Quality",
              "Expensive +\nLow Quality"
            ]
          },
          "card_metrics": [
            {
              "label": "OS",
              "field": "os_score",
              "primary": true
            },
            {
              "label": "Val%",
              "field": "value_percentile",
              "primary": false
            },
            {
              "label": "Qual%",
              "field": "quality_percentile",
              "primary": false
            },
            {
              "label": "Mom%",
              "field": "momentum_percentile",
              "primary": false
            },
            {
              "label": "Vol",
              "field": "volatility_252d",
              "primary": false
            },
            {
              "label": "Conf",
              "field": "signal_confidence",
              "primary": false
            },
            {
              "label": "F",
              "field": "piotroski_f_score",
              "primary": false
            },
            {
              "label": "\u0394",
              "field": "os_score_delta",
              "primary": false
            }
          ]
        },
        {
          "key": "trending_value",
          "name": "Trending Value",
          "slug": "trending-value",
          "group": "multi_factor",
          "tagline": "O'Shaughnessy's #1 strategy \u2014 cheapest VC2 decile ranked by 6M momentum",
          "thesis": "The single best-performing strategy in What Works on Wall Street. Take the cheapest decile by Value Composite 2, then rank by 6-month price momentum. Combines deep value with trend confirmation to avoid dead-money traps.",
          "primary_sort": "trending_value_rank",
          "limit": 50,
          "screener_preset": "trending_value_vc2",
          "page_url": "https://sharemaestro.com/factors/trending-value/",
          "api_url": "https://sharemaestro.com/factors/api/strategies/trending-value/",
          "chart_config": {
            "x": "vc2",
            "y": "m6m",
            "xl": "VC2 Rank (lower = cheaper)",
            "yl": "Momentum 6M",
            "colour": "x",
            "cl": "Value %",
            "size": "os",
            "sl": "OS Score",
            "quads": [
              "Strong Mom\nExpensive",
              "Strong Mom\nCheap",
              "Weak Mom\nCheap",
              "Weak Mom\nExpensive"
            ]
          },
          "card_metrics": [
            {
              "label": "OS",
              "field": "os_score",
              "primary": true
            },
            {
              "label": "VC2",
              "field": "vc2_score",
              "primary": false
            },
            {
              "label": "Mom6",
              "field": "momentum_6m",
              "primary": false
            },
            {
              "label": "Val%",
              "field": "value_percentile",
              "primary": false
            },
            {
              "label": "Vol",
              "field": "volatility_252d",
              "primary": false
            },
            {
              "label": "Conf",
              "field": "signal_confidence",
              "primary": false
            },
            {
              "label": "F-Score",
              "field": "piotroski_f_score",
              "primary": false
            },
            {
              "label": "\u0394",
              "field": "os_score_delta",
              "primary": false
            }
          ]
        },
        {
          "key": "quality_value",
          "name": "Quality \u00d7 Value",
          "slug": "quality-value",
          "group": "multi_factor",
          "tagline": "Geometric mean of quality and value percentiles \u2014 avoids value traps",
          "thesis": "The geometric mean penalises extreme weakness in either pillar. A stock that is very cheap but low quality scores poorly, unlike an additive blend. This is the anti-value-trap strategy.",
          "primary_sort": "-quality_value_composite",
          "limit": 50,
          "screener_preset": "quality_value",
          "page_url": "https://sharemaestro.com/factors/quality-value/",
          "api_url": "https://sharemaestro.com/factors/api/strategies/quality-value/",
          "chart_config": {
            "x": "x",
            "y": "y",
            "xl": "Value Percentile",
            "yl": "Quality Percentile",
            "colour": "qv",
            "cl": "QV Composite",
            "size": "os",
            "sl": "OS Score",
            "quads": [
              "High Quality\nLow Value",
              "Cheap +\nHigh Quality",
              "Cheap +\nLow Quality",
              "Expensive +\nLow Quality"
            ]
          },
          "card_metrics": [
            {
              "label": "QV",
              "field": "quality_value_composite",
              "primary": true
            },
            {
              "label": "Val%",
              "field": "value_percentile",
              "primary": false
            },
            {
              "label": "Qual%",
              "field": "quality_percentile",
              "primary": false
            },
            {
              "label": "F-Score",
              "field": "piotroski_f_score",
              "primary": false
            },
            {
              "label": "ROE",
              "field": "roe",
              "primary": false
            },
            {
              "label": "E/Y",
              "field": "earnings_yield",
              "primary": false
            },
            {
              "label": "Vol",
              "field": "volatility_252d",
              "primary": false
            },
            {
              "label": "\u0394",
              "field": "os_score_delta",
              "primary": false
            }
          ]
        }
      ]
    },
    {
      "key": "value",
      "label": "Value",
      "description": "Buying cheap stocks by various measures of intrinsic worth.",
      "strategies": [
        {
          "key": "cornerstone_value",
          "name": "Cornerstone Value",
          "slug": "cornerstone-value",
          "group": "value",
          "tagline": "Market Leaders (ex-utilities) ranked by dividend yield",
          "thesis": "O'Shaughnessy's conservative strategy. Start with Market Leaders (large, profitable, liquid) and select the highest dividend yield. Conservative but consistent \u2014 the pension fund strategy.",
          "primary_sort": "cornerstone_value_rank",
          "limit": 50,
          "screener_preset": "cornerstone_value",
          "page_url": "https://sharemaestro.com/factors/cornerstone-value/",
          "api_url": "https://sharemaestro.com/factors/api/strategies/cornerstone-value/",
          "chart_config": {
            "x": "divy",
            "y": "ey",
            "xl": "Dividend Yield",
            "yl": "Earnings Yield",
            "colour": "fscore",
            "cl": "F-Score",
            "size": "os",
            "sl": "OS Score",
            "quads": [
              "High E/Y\nLow Div",
              "High E/Y\nHigh Div \u2014 Sweet Spot",
              "Low E/Y\nHigh Div \u2014 Yield Trap?",
              "Low E/Y\nLow Div"
            ]
          },
          "card_metrics": [
            {
              "label": "Div%",
              "field": "dividend_yield",
              "primary": true
            },
            {
              "label": "Val%",
              "field": "value_percentile",
              "primary": false
            },
            {
              "label": "Qual%",
              "field": "quality_percentile",
              "primary": false
            },
            {
              "label": "OS",
              "field": "os_score",
              "primary": false
            },
            {
              "label": "P/E",
              "field": "pe_ratio",
              "primary": false
            },
            {
              "label": "ROE",
              "field": "roe",
              "primary": false
            },
            {
              "label": "Vol",
              "field": "volatility_252d",
              "primary": false
            },
            {
              "label": "F-Score",
              "field": "piotroski_f_score",
              "primary": false
            }
          ]
        },
        {
          "key": "deep_value",
          "name": "Deep Value",
          "slug": "deep-value",
          "group": "value",
          "tagline": "Rock-bottom P/E + high earnings yield + strong F-Score",
          "thesis": "The contrarian play. Extremely cheap stocks that pass a Piotroski quality gate. These are names the market has given up on \u2014 the F-Score filter ensures fundamentals haven't actually collapsed.",
          "primary_sort": "-earnings_yield",
          "limit": 50,
          "screener_preset": "deep_value",
          "page_url": "https://sharemaestro.com/factors/deep-value/",
          "api_url": "https://sharemaestro.com/factors/api/strategies/deep-value/",
          "chart_config": {
            "x": "ey",
            "y": "fscore",
            "xl": "Earnings Yield",
            "yl": "Piotroski F-Score",
            "colour": "m12_1",
            "cl": "Momentum 12-1",
            "size": "os",
            "sl": "OS Score",
            "quads": [
              "High F-Score\nLow E/Y",
              "High F-Score\nHigh E/Y \u2014 Sweet Spot",
              "Low F-Score\nHigh E/Y \u2014 Value Trap?",
              "Low F-Score\nLow E/Y"
            ]
          },
          "card_metrics": [
            {
              "label": "E/Y",
              "field": "earnings_yield",
              "primary": true
            },
            {
              "label": "P/E",
              "field": "pe_ratio",
              "primary": false
            },
            {
              "label": "F-Score",
              "field": "piotroski_f_score",
              "primary": false
            },
            {
              "label": "Val%",
              "field": "value_percentile",
              "primary": false
            },
            {
              "label": "ROE",
              "field": "roe",
              "primary": false
            },
            {
              "label": "D/E",
              "field": "debt_to_equity",
              "primary": false
            },
            {
              "label": "Vol",
              "field": "volatility_252d",
              "primary": false
            },
            {
              "label": "Mom%",
              "field": "momentum_percentile",
              "primary": false
            }
          ]
        },
        {
          "key": "vc2_cheapest",
          "name": "VC2 Cheapest Decile",
          "slug": "vc2-cheapest",
          "group": "value",
          "tagline": "Top decile by VC2 with factor-native tie-breaks",
          "thesis": "Value Composite 2 ranks stocks by P/E, P/S, P/B, P/CF, EBITDA/EV, and shareholder yield. The cheapest decile is the feeding pool for Trending Value \u2014 before momentum overlay. Pure multi-metric cheapness.",
          "primary_sort": "vc2_score",
          "limit": 50,
          "screener_preset": "vc2_cheapest",
          "page_url": "https://sharemaestro.com/factors/vc2-cheapest/",
          "api_url": "https://sharemaestro.com/factors/api/strategies/vc2-cheapest/",
          "chart_config": {
            "x": "vc2",
            "y": "ey",
            "xl": "VC2 Rank (lower = cheaper)",
            "yl": "Earnings Yield",
            "colour": "shy",
            "cl": "Shareholder Yield",
            "size": "fscore",
            "sl": "F-Score",
            "quads": [
              "Cheap + Low E/Y",
              "Cheapest + High E/Y \u2014 Best Picks",
              "Less Cheap + High E/Y",
              "Less Cheap + Low E/Y"
            ]
          },
          "card_metrics": [
            {
              "label": "VC2",
              "field": "vc2_score",
              "primary": true
            },
            {
              "label": "Val%",
              "field": "value_percentile",
              "primary": false
            },
            {
              "label": "P/E",
              "field": "pe_ratio",
              "primary": false
            },
            {
              "label": "SHY",
              "field": "shareholder_yield",
              "primary": false
            },
            {
              "label": "F-Score",
              "field": "piotroski_f_score",
              "primary": false
            },
            {
              "label": "Mom%",
              "field": "momentum_percentile",
              "primary": false
            },
            {
              "label": "Vol",
              "field": "volatility_252d",
              "primary": false
            },
            {
              "label": "\u0394",
              "field": "os_score_delta",
              "primary": false
            }
          ]
        },
        {
          "key": "ebitda_ev",
          "name": "EBITDA/EV Value",
          "slug": "ebitda-ev",
          "group": "value",
          "tagline": "O'Shaughnessy's single best value factor",
          "thesis": "Enterprise value normalises for capital structure, making EBITDA/EV comparable across leveraged and unleveraged businesses. O'Shaughnessy found this factor alone beat the market in 96% of rolling 5-year periods.",
          "primary_sort": "-ebitda_to_ev",
          "limit": 50,
          "screener_preset": "ebitda_ev",
          "page_url": "https://sharemaestro.com/factors/ebitda-ev/",
          "api_url": "https://sharemaestro.com/factors/api/strategies/ebitda-ev/",
          "chart_config": {
            "x": "ebitdaev",
            "y": "fscore",
            "xl": "EBITDA/EV",
            "yl": "Piotroski F-Score",
            "colour": "y",
            "cl": "Quality Percentile",
            "size": "os",
            "sl": "OS Score",
            "quads": [
              "High Quality\nLower Yield",
              "High Quality\nHigh Yield \u2014 Best",
              "Low Quality\nHigh Yield \u2014 Risk",
              "Low Quality\nLower Yield"
            ]
          },
          "card_metrics": [
            {
              "label": "EB/EV",
              "field": "ebitda_to_ev",
              "primary": true
            },
            {
              "label": "Val%",
              "field": "value_percentile",
              "primary": false
            },
            {
              "label": "E/Y",
              "field": "earnings_yield",
              "primary": false
            },
            {
              "label": "OS",
              "field": "os_score",
              "primary": false
            },
            {
              "label": "F-Score",
              "field": "piotroski_f_score",
              "primary": false
            },
            {
              "label": "ROE",
              "field": "roe",
              "primary": false
            },
            {
              "label": "Vol",
              "field": "volatility_252d",
              "primary": false
            },
            {
              "label": "\u0394",
              "field": "os_score_delta",
              "primary": false
            }
          ]
        },
        {
          "key": "veiled_value",
          "name": "Veiled Value",
          "slug": "veiled-value",
          "group": "value",
          "tagline": "OSAM insight: expensive by P/B but cheap by everything else",
          "thesis": "Asset-light businesses (tech, healthcare, services) look expensive on book value due to intangible assets and buyback distortion. But they're cheap on earnings, sales, and cash flow. OSAM showed this subset outperforms in 90%+ of periods.",
          "primary_sort": "-os_score",
          "limit": 50,
          "screener_preset": "veiled_value",
          "page_url": "https://sharemaestro.com/factors/veiled-value/",
          "api_url": "https://sharemaestro.com/factors/api/strategies/veiled-value/",
          "chart_config": {
            "x": "pb",
            "y": "ey",
            "xl": "Price/Book (higher = more veiled)",
            "yl": "Earnings Yield",
            "colour": "shy",
            "cl": "Shareholder Yield",
            "size": "os",
            "sl": "OS Score",
            "quads": [
              "Low E/Y\nLess Veiled",
              "High E/Y\nMore Veiled \u2014 Best",
              "High E/Y\nLess Veiled",
              "Low E/Y\nMore Veiled"
            ]
          },
          "card_metrics": [
            {
              "label": "Val%",
              "field": "value_percentile",
              "primary": true
            },
            {
              "label": "P/B",
              "field": "price_to_book",
              "primary": false
            },
            {
              "label": "E/Y",
              "field": "earnings_yield",
              "primary": false
            },
            {
              "label": "Qual%",
              "field": "quality_percentile",
              "primary": false
            },
            {
              "label": "ROE",
              "field": "roe",
              "primary": false
            },
            {
              "label": "F-Score",
              "field": "piotroski_f_score",
              "primary": false
            },
            {
              "label": "Vol",
              "field": "volatility_252d",
              "primary": false
            },
            {
              "label": "\u0394",
              "field": "os_score_delta",
              "primary": false
            }
          ]
        },
        {
          "key": "sector_relative",
          "name": "Cheapest in Sector",
          "slug": "sector-relative",
          "group": "value",
          "tagline": "Best value within each sector \u2014 neutralises cross-sector P/E distortion",
          "thesis": "Comparing tech P/E to utility P/E is meaningless. Sector-relative value finds the cheapest names within their own peer group. This surfaces idiosyncratic mispricing rather than sector-level cheapness.",
          "primary_sort": "-sector_value_pct",
          "limit": 50,
          "screener_preset": "sector_value_leaders",
          "page_url": "https://sharemaestro.com/factors/sector-relative/",
          "api_url": "https://sharemaestro.com/factors/api/strategies/sector-relative/",
          "chart_config": {
            "x": "secval",
            "y": "y",
            "xl": "Sector Relative Value (0..1)",
            "yl": "Quality Percentile",
            "colour": "mom",
            "cl": "Momentum Percentile",
            "size": "os",
            "sl": "OS Score",
            "quads": [
              "High Quality\nLess Sector-Cheap",
              "High Quality\nSector-Cheap \u2014 Best",
              "Low Quality\nSector-Cheap",
              "Low Quality\nLess Sector-Cheap"
            ]
          },
          "card_metrics": [
            {
              "label": "SecVal",
              "field": "sector_value_pct",
              "primary": true
            },
            {
              "label": "OS",
              "field": "os_score",
              "primary": false
            },
            {
              "label": "Val%",
              "field": "value_percentile",
              "primary": false
            },
            {
              "label": "Qual%",
              "field": "quality_percentile",
              "primary": false
            },
            {
              "label": "P/E",
              "field": "pe_ratio",
              "primary": false
            },
            {
              "label": "ROE",
              "field": "roe",
              "primary": false
            },
            {
              "label": "Mom%",
              "field": "momentum_percentile",
              "primary": false
            },
            {
              "label": "Vol",
              "field": "volatility_252d",
              "primary": false
            },
            {
              "label": "F-Score",
              "field": "piotroski_f_score",
              "primary": false
            }
          ]
        }
      ]
    },
    {
      "key": "quality",
      "label": "Quality",
      "description": "Profitable, well-managed businesses with strong fundamentals.",
      "strategies": [
        {
          "key": "piotroski_bargains",
          "name": "Piotroski Bargains",
          "slug": "piotroski-bargains",
          "group": "quality",
          "tagline": "F-Score \u2265 7 with top-half value \u2014 the academic quality screen",
          "thesis": "Joseph Piotroski's 9-point fundamental strength test applied to cheap stocks. Each point tests profitability, leverage, or operating efficiency. A score of 7+ means the business is fundamentally improving.",
          "primary_sort": "-piotroski_f_score",
          "limit": 50,
          "screener_preset": "piotroski_bargains",
          "page_url": "https://sharemaestro.com/factors/piotroski-bargains/",
          "api_url": "https://sharemaestro.com/factors/api/strategies/piotroski-bargains/",
          "chart_config": {
            "x": "x",
            "y": "fscore",
            "xl": "Value Percentile",
            "yl": "F-Score",
            "colour": "y",
            "cl": "Quality %",
            "size": "os",
            "sl": "OS Score",
            "quads": [
              "High F-Score\nLow Value",
              "High F-Score\nCheap",
              "Low F-Score\nCheap",
              "Low F-Score\nLow Value"
            ]
          },
          "card_metrics": [
            {
              "label": "F-Score",
              "field": "piotroski_f_score",
              "primary": true
            },
            {
              "label": "Val%",
              "field": "value_percentile",
              "primary": false
            },
            {
              "label": "E/Y",
              "field": "earnings_yield",
              "primary": false
            },
            {
              "label": "ROE",
              "field": "roe",
              "primary": false
            },
            {
              "label": "D/E",
              "field": "debt_to_equity",
              "primary": false
            },
            {
              "label": "Qual%",
              "field": "quality_percentile",
              "primary": false
            },
            {
              "label": "Vol",
              "field": "volatility_252d",
              "primary": false
            },
            {
              "label": "\u0394",
              "field": "os_score_delta",
              "primary": false
            }
          ]
        },
        {
          "key": "quality_compounders",
          "name": "Quality Compounders",
          "slug": "quality-compounders",
          "group": "quality",
          "tagline": "High ROE, high margins, low debt, growing revenue",
          "thesis": "Long-duration compounders that reinvest at high rates of return. The quality factors here \u2014 ROE > 15%, margins > 10%, D/E < 1.0 \u2014 identify businesses with durable competitive advantages.",
          "primary_sort": "-roe",
          "limit": 50,
          "screener_preset": "quality_compounders",
          "page_url": "https://sharemaestro.com/factors/quality-compounders/",
          "api_url": "https://sharemaestro.com/factors/api/strategies/quality-compounders/",
          "chart_config": {
            "x": "roe",
            "y": "margin",
            "xl": "Return on Equity",
            "yl": "Net Margin",
            "colour": "revg",
            "cl": "Revenue Growth",
            "size": "os",
            "sl": "OS Score",
            "quads": [
              "High Margin\nLow ROE",
              "High Margin\nHigh ROE",
              "Low Margin\nHigh ROE",
              "Low Margin\nLow ROE"
            ]
          },
          "card_metrics": [
            {
              "label": "ROE",
              "field": "roe",
              "primary": true
            },
            {
              "label": "Marg",
              "field": "net_margin",
              "primary": false
            },
            {
              "label": "Qual%",
              "field": "quality_percentile",
              "primary": false
            },
            {
              "label": "RevG",
              "field": "revenue_growth",
              "primary": false
            },
            {
              "label": "F-Score",
              "field": "piotroski_f_score",
              "primary": false
            },
            {
              "label": "OS",
              "field": "os_score",
              "primary": false
            },
            {
              "label": "Vol",
              "field": "volatility_252d",
              "primary": false
            },
            {
              "label": "Val%",
              "field": "value_percentile",
              "primary": false
            }
          ]
        },
        {
          "key": "capital_allocators",
          "name": "Capital Allocators",
          "slug": "capital-allocators",
          "group": "quality",
          "tagline": "Best capital allocation quality \u2014 managers who deploy cash well",
          "thesis": "Not all shareholder yield is created equal. This strategy surfaces companies that fund buybacks internally (not with debt), buy back at attractive valuations, and maintain strong fundamentals.",
          "primary_sort": "-capital_allocation_quality",
          "limit": 50,
          "screener_preset": "alpha_within_value",
          "page_url": "https://sharemaestro.com/factors/capital-allocators/",
          "api_url": "https://sharemaestro.com/factors/api/strategies/capital-allocators/",
          "chart_config": {
            "x": "shy",
            "y": "roe",
            "xl": "Shareholder Yield",
            "yl": "Return on Equity",
            "colour": "fcfy",
            "cl": "FCF Yield",
            "size": "os",
            "sl": "OS Score",
            "quads": [
              "High ROE\nLow SH Yield",
              "High ROE\nHigh SH Yield",
              "Low ROE\nHigh SH Yield",
              "Low ROE\nLow SH Yield"
            ]
          },
          "card_metrics": [
            {
              "label": "SHY",
              "field": "shareholder_yield",
              "primary": true
            },
            {
              "label": "FCF%",
              "field": "fcf_yield",
              "primary": false
            },
            {
              "label": "ROE",
              "field": "roe",
              "primary": false
            },
            {
              "label": "Qual%",
              "field": "quality_percentile",
              "primary": false
            },
            {
              "label": "BBK",
              "field": "buyback_yield",
              "primary": false
            },
            {
              "label": "F-Score",
              "field": "piotroski_f_score",
              "primary": false
            },
            {
              "label": "Vol",
              "field": "volatility_252d",
              "primary": false
            },
            {
              "label": "\u0394",
              "field": "os_score_delta",
              "primary": false
            }
          ]
        },
        {
          "key": "consistent_earners",
          "name": "Consistent Earners",
          "slug": "consistent-earners",
          "group": "quality",
          "tagline": "5+ years of consecutive EPS growth + value overlay",
          "thesis": "O'Shaughnessy's growth signal. Companies that have grown earnings every year for 5+ years demonstrate execution consistency. Combined with a value floor, this avoids overpaying for growth.",
          "primary_sort": "-eps_growth_5y_cagr",
          "limit": 50,
          "screener_preset": "earnings_consistency",
          "page_url": "https://sharemaestro.com/factors/consistent-earners/",
          "api_url": "https://sharemaestro.com/factors/api/strategies/consistent-earners/",
          "chart_config": {
            "x": "x",
            "y": "eg5",
            "xl": "Value Percentile",
            "yl": "EPS Growth 5Y CAGR",
            "colour": "eg1",
            "cl": "EPS Growth 1Y",
            "size": "os",
            "sl": "OS Score",
            "quads": [
              "Strong 5Y Growth\nExpensive",
              "Strong 5Y Growth\nCheap",
              "Weak 5Y Growth\nCheap",
              "Weak 5Y Growth\nExpensive"
            ]
          },
          "card_metrics": [
            {
              "label": "EPS 5Y",
              "field": "eps_growth_5y_cagr",
              "primary": true
            },
            {
              "label": "EPS 1Y",
              "field": "eps_growth_1y",
              "primary": false
            },
            {
              "label": "Stab5Y",
              "field": "earnings_stability_5y",
              "primary": false
            },
            {
              "label": "ROE",
              "field": "roe",
              "primary": false
            },
            {
              "label": "OS",
              "field": "os_score",
              "primary": false
            },
            {
              "label": "Val%",
              "field": "value_percentile",
              "primary": false
            },
            {
              "label": "F-Score",
              "field": "piotroski_f_score",
              "primary": false
            },
            {
              "label": "Mom12",
              "field": "momentum_12_1",
              "primary": false
            }
          ]
        }
      ]
    },
    {
      "key": "growth",
      "label": "Growth",
      "description": "Revenue and earnings growth at reasonable prices.",
      "strategies": [
        {
          "key": "cornerstone_growth",
          "name": "Cornerstone Growth",
          "slug": "cornerstone-growth",
          "group": "growth",
          "tagline": "P/S < 1.5, 5yr earnings consistency, strongest momentum",
          "thesis": "O'Shaughnessy's growth strategy. Start with consistent earners, filter for reasonable sales multiples (P/S < 1.5), then rank by 12-1 momentum. Growth at a reasonable price with trend confirmation.",
          "primary_sort": "cornerstone_growth_rank",
          "limit": 50,
          "screener_preset": "cornerstone_growth",
          "page_url": "https://sharemaestro.com/factors/cornerstone-growth/",
          "api_url": "https://sharemaestro.com/factors/api/strategies/cornerstone-growth/",
          "chart_config": {
            "x": "ps",
            "y": "m12_1",
            "xl": "Price/Sales",
            "yl": "Momentum 12-1",
            "colour": "revg",
            "cl": "Revenue Growth",
            "size": "os",
            "sl": "OS Score",
            "quads": [
              "Strong Mom\nExpensive",
              "Strong Mom\nCheap P/S",
              "Weak Mom\nCheap P/S",
              "Weak Mom\nExpensive"
            ]
          },
          "card_metrics": [
            {
              "label": "RevG",
              "field": "revenue_growth",
              "primary": true
            },
            {
              "label": "Mom%",
              "field": "momentum_percentile",
              "primary": false
            },
            {
              "label": "E/Y",
              "field": "earnings_yield",
              "primary": false
            },
            {
              "label": "OS",
              "field": "os_score",
              "primary": false
            },
            {
              "label": "ROE",
              "field": "roe",
              "primary": false
            },
            {
              "label": "Qual%",
              "field": "quality_percentile",
              "primary": false
            },
            {
              "label": "Vol",
              "field": "volatility_252d",
              "primary": false
            },
            {
              "label": "F-Score",
              "field": "piotroski_f_score",
              "primary": false
            }
          ]
        },
        {
          "key": "garp",
          "name": "GARP",
          "slug": "garp",
          "group": "growth",
          "tagline": "Growth at a Reasonable Price \u2014 revenue growth + moderate P/E",
          "thesis": "The balanced approach: find companies growing revenue at 10%+ per year but still trading at reasonable P/E (\u226425). The quality gate ensures we're buying real growth, not accounting tricks.",
          "primary_sort": "-revenue_growth",
          "limit": 50,
          "screener_preset": "garp",
          "page_url": "https://sharemaestro.com/factors/garp/",
          "api_url": "https://sharemaestro.com/factors/api/strategies/garp/",
          "chart_config": {
            "x": "revg",
            "y": "pe",
            "xl": "Revenue Growth",
            "yl": "P/E Ratio",
            "colour": "y",
            "cl": "Quality %",
            "size": "mom",
            "sl": "Momentum %",
            "quads": [
              "High P/E\nLow Growth \u2014 Overpriced",
              "High P/E\nHigh Growth \u2014 Priced In?",
              "Low P/E\nHigh Growth \u2014 GARP Sweet Spot",
              "Low P/E\nLow Growth \u2014 Stale"
            ]
          },
          "card_metrics": [
            {
              "label": "RevG",
              "field": "revenue_growth",
              "primary": true
            },
            {
              "label": "P/E",
              "field": "pe_ratio",
              "primary": false
            },
            {
              "label": "Qual%",
              "field": "quality_percentile",
              "primary": false
            },
            {
              "label": "Mom%",
              "field": "momentum_percentile",
              "primary": false
            },
            {
              "label": "ROE",
              "field": "roe",
              "primary": false
            },
            {
              "label": "F-Score",
              "field": "piotroski_f_score",
              "primary": false
            },
            {
              "label": "Vol",
              "field": "volatility_252d",
              "primary": false
            },
            {
              "label": "\u0394",
              "field": "os_score_delta",
              "primary": false
            }
          ]
        }
      ]
    },
    {
      "key": "momentum",
      "label": "Momentum",
      "description": "Riding price trends with risk controls.",
      "strategies": [
        {
          "key": "risk_adj_momentum",
          "name": "Risk-Adjusted Momentum",
          "slug": "risk-adj-momentum",
          "group": "momentum",
          "tagline": "Momentum 12-1 \u00f7 Volatility \u2014 a Sharpe-like momentum score",
          "thesis": "Raw momentum rewards volatile stocks. Dividing by volatility penalises erratic returns and rewards smooth, consistent trends. This is the Sharpe ratio applied to price momentum.",
          "primary_sort": "-risk_adjusted_momentum",
          "limit": 50,
          "screener_preset": "momentum_leaders",
          "page_url": "https://sharemaestro.com/factors/risk-adj-momentum/",
          "api_url": "https://sharemaestro.com/factors/api/strategies/risk-adj-momentum/",
          "chart_config": {
            "x": "vol",
            "y": "m12_1",
            "xl": "Volatility 252d",
            "yl": "Momentum 12-1",
            "colour": "y",
            "cl": "Quality %",
            "size": "os",
            "sl": "OS Score",
            "quads": [
              "Strong Mom\nHigh Vol \u2014 Risky",
              "Strong Mom\nLow Vol \u2014 Sweet Spot",
              "Weak Mom\nLow Vol \u2014 Sleepy",
              "Weak Mom\nHigh Vol \u2014 Avoid"
            ]
          },
          "card_metrics": [
            {
              "label": "RAM",
              "field": "risk_adjusted_momentum",
              "primary": true
            },
            {
              "label": "Mom12",
              "field": "momentum_12_1",
              "primary": false
            },
            {
              "label": "Vol",
              "field": "volatility_252d",
              "primary": false
            },
            {
              "label": "Qual%",
              "field": "quality_percentile",
              "primary": false
            },
            {
              "label": "F-Score",
              "field": "piotroski_f_score",
              "primary": false
            },
            {
              "label": "OS",
              "field": "os_score",
              "primary": false
            },
            {
              "label": "Val%",
              "field": "value_percentile",
              "primary": false
            },
            {
              "label": "\u0394",
              "field": "os_score_delta",
              "primary": false
            }
          ]
        },
        {
          "key": "momentum_leaders",
          "name": "Momentum Leaders",
          "slug": "momentum-leaders",
          "group": "momentum",
          "tagline": "Strongest 12-1 momentum with controlled risk",
          "thesis": "Pure price trend. Select names with 12-1 momentum \u2265 15% and volatility \u2264 50%. The volatility cap prevents chasing speculative spikes.",
          "primary_sort": "-risk_adjusted_momentum",
          "limit": 50,
          "screener_preset": "momentum_leaders",
          "page_url": "https://sharemaestro.com/factors/momentum-leaders/",
          "api_url": "https://sharemaestro.com/factors/api/strategies/momentum-leaders/",
          "chart_config": {
            "x": "m12_1",
            "y": "vol",
            "xl": "Momentum 12-1",
            "yl": "Volatility 252d",
            "colour": "ram",
            "cl": "Risk-Adj Mom",
            "size": "x",
            "sl": "Value %",
            "quads": [
              "High Vol\nWeak Mom",
              "High Vol\nStrong Mom",
              "Low Vol\nStrong Mom",
              "Low Vol\nWeak Mom"
            ]
          },
          "card_metrics": [
            {
              "label": "Mom12",
              "field": "momentum_12_1",
              "primary": true
            },
            {
              "label": "Mom6",
              "field": "momentum_6m",
              "primary": false
            },
            {
              "label": "Vol",
              "field": "volatility_252d",
              "primary": false
            },
            {
              "label": "OS",
              "field": "os_score",
              "primary": false
            },
            {
              "label": "Val%",
              "field": "value_percentile",
              "primary": false
            },
            {
              "label": "Qual%",
              "field": "quality_percentile",
              "primary": false
            },
            {
              "label": "F-Score",
              "field": "piotroski_f_score",
              "primary": false
            },
            {
              "label": "\u0394",
              "field": "os_score_delta",
              "primary": false
            }
          ]
        }
      ]
    },
    {
      "key": "income",
      "label": "Income",
      "description": "Dividend yield and total shareholder return.",
      "strategies": [
        {
          "key": "shareholder_yield",
          "name": "Shareholder Yield",
          "slug": "shareholder-yield",
          "group": "income",
          "tagline": "Dividends + buybacks + debt paydown \u2014 O'Shaughnessy's total cash return",
          "thesis": "Dividends alone miss half the picture. Shareholder yield adds net buybacks and debt reduction. O'Shaughnessy found total shareholder yield a better predictor of future returns than dividends alone. Pure ranking by yield \u2014 no quality gate \u2014 as in the original book.",
          "primary_sort": "-shareholder_yield",
          "limit": 50,
          "screener_preset": "shareholder_yield",
          "page_url": "https://sharemaestro.com/factors/shareholder-yield/",
          "api_url": "https://sharemaestro.com/factors/api/strategies/shareholder-yield/",
          "chart_config": {
            "x": "shy",
            "y": "fcfy",
            "xl": "Shareholder Yield",
            "yl": "FCF Yield",
            "colour": "fscore",
            "cl": "F-Score",
            "size": "os",
            "sl": "OS Score",
            "quads": [
              "High FCF\nLow SH Yield",
              "High FCF\nHigh SH Yield",
              "Low FCF\nHigh SH Yield",
              "Low FCF\nLow SH Yield"
            ]
          },
          "card_metrics": [
            {
              "label": "SHY",
              "field": "shareholder_yield",
              "primary": true
            },
            {
              "label": "Div%",
              "field": "dividend_yield",
              "primary": false
            },
            {
              "label": "BBK",
              "field": "buyback_yield",
              "primary": false
            },
            {
              "label": "FCF%",
              "field": "fcf_yield",
              "primary": false
            },
            {
              "label": "F-Score",
              "field": "piotroski_f_score",
              "primary": false
            },
            {
              "label": "Qual%",
              "field": "quality_percentile",
              "primary": false
            },
            {
              "label": "Vol",
              "field": "volatility_252d",
              "primary": false
            },
            {
              "label": "\u0394",
              "field": "os_score_delta",
              "primary": false
            }
          ]
        },
        {
          "key": "high_yield",
          "name": "High Yield",
          "slug": "high-yield",
          "group": "income",
          "tagline": "Top dividend and FCF yields for income investors",
          "thesis": "Pure income screen. Dividend yield \u2265 3% backed by FCF yield \u2265 4%. The FCF floor ensures dividends are covered by cash generation, not funded by debt.",
          "primary_sort": "-dividend_yield",
          "limit": 50,
          "screener_preset": "high_yield",
          "page_url": "https://sharemaestro.com/factors/high-yield/",
          "api_url": "https://sharemaestro.com/factors/api/strategies/high-yield/",
          "chart_config": {
            "x": "divy",
            "y": "fcfy",
            "xl": "Dividend Yield",
            "yl": "FCF Yield",
            "colour": "fscore",
            "cl": "F-Score",
            "size": "de",
            "sl": "Debt/Equity",
            "quads": [
              "High FCF\nLow Div \u2014 Cash Hoarder",
              "High FCF\nHigh Div \u2014 Well Covered",
              "Low FCF\nHigh Div \u2014 Yield Trap?",
              "Low FCF\nLow Div"
            ]
          },
          "card_metrics": [
            {
              "label": "Div%",
              "field": "dividend_yield",
              "primary": true
            },
            {
              "label": "FCF%",
              "field": "fcf_yield",
              "primary": false
            },
            {
              "label": "F-Score",
              "field": "piotroski_f_score",
              "primary": false
            },
            {
              "label": "D/E",
              "field": "debt_to_equity",
              "primary": false
            },
            {
              "label": "Qual%",
              "field": "quality_percentile",
              "primary": false
            },
            {
              "label": "Val%",
              "field": "value_percentile",
              "primary": false
            },
            {
              "label": "Vol",
              "field": "volatility_252d",
              "primary": false
            },
            {
              "label": "\u0394",
              "field": "os_score_delta",
              "primary": false
            }
          ]
        }
      ]
    },
    {
      "key": "universe",
      "label": "Universe",
      "description": "Strategies defined by market-cap universe membership.",
      "strategies": [
        {
          "key": "market_leaders",
          "name": "Market Leaders",
          "slug": "market-leaders",
          "group": "universe",
          "tagline": "O'Shaughnessy large-cap quality universe",
          "thesis": "Market Leaders: above-average market cap, shares outstanding, cash flow per share, and revenue. Non-utility. This is the quality large-cap universe that feeds Cornerstone Value and other conservative strategies.",
          "primary_sort": "-os_score",
          "limit": 50,
          "screener_preset": "market_leaders_value",
          "page_url": "https://sharemaestro.com/factors/market-leaders/",
          "api_url": "https://sharemaestro.com/factors/api/strategies/market-leaders/",
          "chart_config": {
            "x": "x",
            "y": "y",
            "xl": "Value Percentile",
            "yl": "Quality Percentile",
            "colour": "mom",
            "cl": "Momentum %",
            "size": "os",
            "sl": "OS Score",
            "quads": [
              "High Quality\nExpensive",
              "Cheap +\nHigh Quality",
              "Cheap +\nLow Quality",
              "Expensive +\nLow Quality"
            ]
          },
          "card_metrics": [
            {
              "label": "OS",
              "field": "os_score",
              "primary": true
            },
            {
              "label": "Val%",
              "field": "value_percentile",
              "primary": false
            },
            {
              "label": "Qual%",
              "field": "quality_percentile",
              "primary": false
            },
            {
              "label": "Mom%",
              "field": "momentum_percentile",
              "primary": false
            },
            {
              "label": "ROE",
              "field": "roe",
              "primary": false
            },
            {
              "label": "F-Score",
              "field": "piotroski_f_score",
              "primary": false
            },
            {
              "label": "Vol",
              "field": "volatility_252d",
              "primary": false
            },
            {
              "label": "\u0394",
              "field": "os_score_delta",
              "primary": false
            }
          ]
        },
        {
          "key": "tiny_titans",
          "name": "Tiny Titans",
          "slug": "tiny-titans",
          "group": "universe",
          "tagline": "O'Shaughnessy micro-caps: $25M\u2013$250M, low P/S, momentum",
          "thesis": "The highest-alpha, highest-risk strategy. Micro-cap stocks are less covered, less liquid, and more volatile \u2014 but the size premium combined with value and momentum has historically produced outsized returns.",
          "primary_sort": "tiny_titans_rank",
          "limit": 50,
          "screener_preset": "tiny_titans",
          "page_url": "https://sharemaestro.com/factors/tiny-titans/",
          "api_url": "https://sharemaestro.com/factors/api/strategies/tiny-titans/",
          "chart_config": {
            "x": "ps",
            "y": "m12_1",
            "xl": "Price/Sales",
            "yl": "Momentum 12-1",
            "colour": "vol",
            "cl": "Volatility",
            "size": "os",
            "sl": "OS Score",
            "quads": [
              "Strong Mom\nExpensive",
              "Strong Mom\nCheap P/S",
              "Weak Mom\nCheap P/S",
              "Weak Mom\nExpensive"
            ]
          },
          "card_metrics": [
            {
              "label": "OS",
              "field": "os_score",
              "primary": true
            },
            {
              "label": "Val%",
              "field": "value_percentile",
              "primary": false
            },
            {
              "label": "Qual%",
              "field": "quality_percentile",
              "primary": false
            },
            {
              "label": "Mom%",
              "field": "momentum_percentile",
              "primary": false
            },
            {
              "label": "Vol",
              "field": "volatility_252d",
              "primary": false
            },
            {
              "label": "Conf",
              "field": "signal_confidence",
              "primary": false
            },
            {
              "label": "F",
              "field": "piotroski_f_score",
              "primary": false
            },
            {
              "label": "\u0394",
              "field": "os_score_delta",
              "primary": false
            }
          ]
        },
        {
          "key": "small_cap_value",
          "name": "Small Cap Value",
          "slug": "small-cap-value",
          "group": "universe",
          "tagline": "Small/micro caps with strong value \u2014 size + value premium",
          "thesis": "The academic double premium: small size + deep value. Higher alpha potential but requires the F-Score quality gate to avoid the elevated bankruptcy risk in small-cap value.",
          "primary_sort": "-value_percentile",
          "limit": 50,
          "screener_preset": "small_cap_value",
          "page_url": "https://sharemaestro.com/factors/small-cap-value/",
          "api_url": "https://sharemaestro.com/factors/api/strategies/small-cap-value/",
          "chart_config": {
            "x": "x",
            "y": "fscore",
            "xl": "Value Percentile",
            "yl": "F-Score",
            "colour": "mom",
            "cl": "Momentum %",
            "size": "os",
            "sl": "OS Score",
            "quads": [
              "High F-Score\nExpensive",
              "High F-Score\nCheap",
              "Low F-Score\nCheap",
              "Low F-Score\nExpensive"
            ]
          },
          "card_metrics": [
            {
              "label": "Val%",
              "field": "value_percentile",
              "primary": true
            },
            {
              "label": "P/E",
              "field": "pe_ratio",
              "primary": false
            },
            {
              "label": "P/B",
              "field": "price_to_book",
              "primary": false
            },
            {
              "label": "F-Score",
              "field": "piotroski_f_score",
              "primary": false
            },
            {
              "label": "E/Y",
              "field": "earnings_yield",
              "primary": false
            },
            {
              "label": "Qual%",
              "field": "quality_percentile",
              "primary": false
            },
            {
              "label": "Vol",
              "field": "volatility_252d",
              "primary": false
            },
            {
              "label": "\u0394",
              "field": "os_score_delta",
              "primary": false
            }
          ]
        }
      ]
    },
    {
      "key": "defensive",
      "label": "Defensive",
      "description": "Low-volatility and capital preservation.",
      "strategies": [
        {
          "key": "low_volatility",
          "name": "Low Volatility",
          "slug": "low-volatility",
          "group": "defensive",
          "tagline": "Lowest volatility with positive momentum \u2014 the defensive allocation",
          "thesis": "The low-volatility anomaly: less volatile stocks have historically delivered better risk-adjusted returns than the market. Adding a positive momentum floor avoids catching falling knives.",
          "primary_sort": "volatility_252d",
          "limit": 50,
          "screener_preset": "low_vol",
          "page_url": "https://sharemaestro.com/factors/low-volatility/",
          "api_url": "https://sharemaestro.com/factors/api/strategies/low-volatility/",
          "chart_config": {
            "x": "vol",
            "y": "m12_1",
            "xl": "Volatility 252d",
            "yl": "Momentum 12-1",
            "colour": "divy",
            "cl": "Div Yield",
            "size": "y",
            "sl": "Quality %",
            "quads": [
              "Strong Mom\nHigh Vol",
              "Strong Mom\nLow Vol \u2014 Sweet Spot",
              "Weak Mom\nLow Vol",
              "Weak Mom\nHigh Vol"
            ]
          },
          "card_metrics": [
            {
              "label": "Vol",
              "field": "volatility_252d",
              "primary": true
            },
            {
              "label": "Mom12",
              "field": "momentum_12_1",
              "primary": false
            },
            {
              "label": "Div%",
              "field": "dividend_yield",
              "primary": false
            },
            {
              "label": "Qual%",
              "field": "quality_percentile",
              "primary": false
            },
            {
              "label": "F-Score",
              "field": "piotroski_f_score",
              "primary": false
            },
            {
              "label": "OS",
              "field": "os_score",
              "primary": false
            },
            {
              "label": "Val%",
              "field": "value_percentile",
              "primary": false
            },
            {
              "label": "\u0394",
              "field": "os_score_delta",
              "primary": false
            }
          ]
        }
      ]
    }
  ],
  "chart_fields": {
    "x": {
      "label": "Value %",
      "fmt": ".1%"
    },
    "y": {
      "label": "Quality %",
      "fmt": ".1%"
    },
    "mom": {
      "label": "Momentum %",
      "fmt": ".1%"
    },
    "os": {
      "label": "OS Score",
      "fmt": ".3f"
    },
    "pe": {
      "label": "P/E",
      "fmt": ".1f"
    },
    "ey": {
      "label": "E/Y",
      "fmt": ".2%"
    },
    "roe": {
      "label": "ROE",
      "fmt": ".1%"
    },
    "de": {
      "label": "D/E",
      "fmt": ".2f"
    },
    "margin": {
      "label": "Net Margin",
      "fmt": ".1%"
    },
    "m12": {
      "label": "Mom 12M",
      "fmt": ".1%"
    },
    "m12_1": {
      "label": "Mom 12-1",
      "fmt": ".1%"
    },
    "m6m": {
      "label": "Mom 6M",
      "fmt": ".1%"
    },
    "divy": {
      "label": "Div Yield",
      "fmt": ".2%"
    },
    "vol": {
      "label": "Volatility",
      "fmt": ".1%"
    },
    "pb": {
      "label": "P/B",
      "fmt": ".1f"
    },
    "ps": {
      "label": "P/S",
      "fmt": ".1f"
    },
    "vc2": {
      "label": "VC2 Rank",
      "fmt": ".0f"
    },
    "fscore": {
      "label": "F-Score",
      "fmt": ".0f"
    },
    "shy": {
      "label": "SH Yield",
      "fmt": ".1%"
    },
    "fcfy": {
      "label": "FCF Yield",
      "fmt": ".1%"
    },
    "ebitdaev": {
      "label": "EBITDA/EV",
      "fmt": ".1%"
    },
    "ram": {
      "label": "Risk-Adj Mom",
      "fmt": ".3f"
    },
    "revg": {
      "label": "Rev Growth",
      "fmt": ".1%"
    },
    "qv": {
      "label": "QV Score",
      "fmt": ".3f"
    },
    "capalloc": {
      "label": "Cap Alloc",
      "fmt": ".3f"
    },
    "secval": {
      "label": "Sector Value %",
      "fmt": ".1%"
    },
    "epsyrs": {
      "label": "EPS Streak",
      "fmt": ".0f"
    },
    "eg1": {
      "label": "EPS Growth 1Y",
      "fmt": ".1%"
    },
    "eg5": {
      "label": "EPS CAGR 5Y",
      "fmt": ".1%"
    },
    "bbk": {
      "label": "Buyback Yield",
      "fmt": ".1%"
    },
    "mcap": {
      "label": "Cap Class",
      "fmt": "s"
    }
  },
  "api_endpoints": {
    "index": "https://sharemaestro.com/factors/api/",
    "preset_detail": "https://sharemaestro.com/factors/api/presets/%7Bpreset%7D/",
    "screener": "https://sharemaestro.com/factors/api/screener/",
    "ticker_detail": "https://sharemaestro.com/factors/api/tickers/%7Buuid%7D/"
  }
}