Skip to content
Hussh
SearchRecent🔌 Connect

1024bets ETF — Composite Scoring

Reference Python composite-scoring function for the 1024bets ETF universe. Four sub-scores (FCF, reinvestment ROIIC, indispensability, options-eligibility) → 0–1024 composite → AKQJ tier.

reference

TL;DR: Reference Python composite-scoring function for the 1024bets ETF universe. Four sub-scores (FCF, reinvestment ROIIC, indispensability, options-eligibility) → 0–1024 composite → AKQJ tier.

Summary

Reference Python composite-scoring function for the 1024bets ETF universe. Four sub-scores (FCF, reinvestment ROIIC, indispensability, options-eligibility) → 0–1024 composite → AKQJ tier.

Preview

"""
1024bets ETF — Composite Scoring (reference)

Illustrative scoring function for the 1024bets index/ETF candidate filter. Maps
an equity onto a 0–1024 score from four sub-scores corresponding to the Alpha
Bets 27 triple filter + an Aloha Flywheel readiness factor.

NOT a live index. NOT a registered ETF. Reference math; thresholds and weights
illuminate the model only.
"""
from dataclasses import dataclass


@dataclass
class CandidateMetrics:
    fcf_billions_ttm: float          # absolute FCF, $B
    reinvestment_roic_pct: float     # 5-yr avg ROIIC on reinvested capital
    structural_indispensability: int  # 0..10 qualitative score
    options_eligibility_score: int    # 0..10, IV / liquidity / weekly


WEIGHTS = {
    "fcf": 0.30,
    "reinvest": 0.30,
    "indispensability": 0.25,
    "options": 0.15,
}

SCORE_MAX = 1024


def _normalize_fcf(fcf_b: float) -> float:
    """Map absolute FCF $B to 0..1. $50B is the gate; $200B saturates."""
    if fcf_b < 50.0:
        return max(0.0, fcf_b / 50.0) * 0.5  # below-gate, partial credit
    return min(1.0, 0.5 + (fcf_b - 50.0) / 300.0)


def _normalize_roic(roic_pct: float) -> float:
    """Map reinvestment ROIIC % to 0..1. 12% is mediocre, 25% is great."""
    return min(1.0, max(0.0, (roic_pct - 8.0) / 22.0))


def composite_score(m: CandidateMetrics) -> int:
    fcf_n = _normalize_fcf(m.fcf_billions_ttm)
    roic_n = _normalize_roic(m.reinvestment_roic_pct)
    indis_n = m.structural_indispensability / 10.0
    opt_n = m.options_eligibility_score / 10.0

    weighted = (
        WEIGHTS["fcf"] * fcf_n
        + WEIGHTS["reinvest"] * roic_n
        + WEIGHTS["indispensability"] * indis_n
        + WEIGHTS["options"] * opt_n
    )
    return int(round(weighted * SCORE_MAX))


def tier(score: int) -> str:
    if score >= 880:
        return "Ace"
    if score >= 720:
        return "King"
    if score >= 560:
        return "Queen"
    if score >= 400:
        return "Jack"
    return "below threshold"


if __name__ == "__main__":
    examples = [
        ("BRK.B", CandidateMetrics(45, 18, 9, 6)),
        ("AAPL", CandidateMetrics(110, 32, 9, 9)),
        ("MSFT", CandidateMetrics(80, 28, 9, 9)),
        ("COST", CandidateMetrics(8, 22, 7, 5)),
    ]
    for tkr, m in examples:
        s = composite_score(m)
        print(f"{tkr:6} score={s:4d}  tier={tier(s)}")

… (1 more lines in Drive)

Full artifact

Stored in Google Drive (husshone): view · download.

Cross-referenced from

Drive shortcuts pointing back to this artifact live in:

  • husshtech / wiki/concepts/alpha-bets-27/code/1024bets-etf-composite-scoring.py (open) — relates to wiki/concepts/alpha-bets-27.md
  • husshtech / wiki/concepts/aces-kings-queens-jacks/code/1024bets-etf-composite-scoring.py (open) — relates to wiki/concepts/aces-kings-queens-jacks.md
  • husshtech / wiki/concepts/iron-rules/code/1024bets-etf-composite-scoring.py (open) — relates to wiki/concepts/iron-rules.md

Relations

  • wiki/concepts/alpha-bets-27.md
  • wiki/concepts/aces-kings-queens-jacks.md
  • wiki/concepts/iron-rules.md