Skip to main content

Binomial's earnings-call NLP scorer — 23 structured signals per transcript.

Project description

binomial-marks

Binomial's earnings-call NLP scorer — 23 structured signals per transcript, in ~50ms on CPU.

Part of Binomial AI Research's specialist zoo — small, deployable models for quantitative finance. Named after Howard Marks (Oaktree), whose memos parse market sentiment and tone.

Model card: BinomialTechnologies/binomial-marks-1.

Install

pip install binomial-marks

Pulls in torch, transformers>=4.48, huggingface-hub. Weights (~1.6 GB) are downloaded from HuggingFace on first use.

One-shot

from binomial_marks import score

result = score(
    transcript="Operator: Welcome to NVIDIA's Q4 2025 earnings call...",
    ticker="NVDA", sector="Technology", country="US",
    year=2025, quarter=4,
)

Returns:

{
  "topics": {
    "guidance":       {"mentioned": True, "mention_prob": 0.94, "score":  1.7},
    "revenue_growth": {"mentioned": True, "mention_prob": 0.97, "score":  1.5},
    "margins":        {"mentioned": True, "mention_prob": 0.91, "score":  0.8},
    # ... 7 more topics
  },
  "mgmt_confidence":    4.6,   # 1 = uncertain "we hope" → 5 = "we will deliver X"
  "mgmt_defensiveness": 1.4,   # 1 = open Q&A → 5 = pivots, refuses to commit
  "analyst_skepticism": 1.8,   # 1 = congratulatory → 5 = re-asking same question
}

Batched

from binomial_marks import MarksScorer

scorer = MarksScorer()                       # loads model once
results = scorer.score_batch([
    {"transcript": "...", "ticker": "NVDA", "sector": "Technology", "year": 2025, "quarter": 4},
    {"transcript": "...", "ticker": "AAPL", "sector": "Technology", "year": 2025, "quarter": 1},
])

Configuration

MarksScorer(
    model_id="BinomialTechnologies/binomial-marks-1",  # or local path / pinned version
    device="cuda",                # auto-detect: cuda > mps > cpu
    dtype=torch.bfloat16,         # default: bf16 on GPU, fp32 on CPU
    max_length=16384,             # tokenizer truncation cap
    mention_threshold=0.5,        # sigmoid threshold for the topic_mentioned heads
)

What it returns

10 topic-direction scores (each: was the topic discussed? if so, what direction in [-2, +2]?):

Topic What −2 / +2 mean
guidance lowered hard / raised significantly
revenue_growth decelerating / accelerating
margins compressing / expanding
demand softening / strong
buybacks paused or reduced / new or upsized
dividends cut or skipped / raised or initiated
m_and_a divestiture / strategic acquisition
headcount layoffs / aggressive hiring
macro_exposure clear headwind / clear tailwind
competition losing share / gaining share

3 tone scores (1 to 5): mgmt_confidence, mgmt_defensiveness, analyst_skepticism.

When mentioned=False, score is forced to 0 — the topic wasn't discussed, so direction is undefined.

Hardware

  • CPU: ~50ms/call on a modern laptop.
  • GPU: ~10ms/call on A100/H100/B200, ~12 calls/sec batched.
  • Memory: ~1.6 GB weights, ~3 GB peak with a 16k-token context.

Limitations

The model card has the full picture. In short:

  1. headcount is the weakest dimension (Spearman 0.39 vs. frontier — half the others).
  2. Tone has rank-order signal but absolute levels drift; normalize cross-sectionally.
  3. English transcripts only.
  4. Truncates at 16,384 tokens (~50k characters; covers ~p99 of calls).
  5. Pure NLP scorer — outputs are features, not trades. The trading rule is yours.

License

Apache 2.0. If you build on this, a citation is appreciated.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

binomial_marks-0.1.2.tar.gz (5.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

binomial_marks-0.1.2-py3-none-any.whl (6.3 kB view details)

Uploaded Python 3

File details

Details for the file binomial_marks-0.1.2.tar.gz.

File metadata

  • Download URL: binomial_marks-0.1.2.tar.gz
  • Upload date:
  • Size: 5.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for binomial_marks-0.1.2.tar.gz
Algorithm Hash digest
SHA256 a1fcfc5f936f43bd83cc241816dfcb61339d2287b8e4c5f135d78b6b293f5c04
MD5 32c449075f7b497bc0b643c722a52c9d
BLAKE2b-256 e0b40101f1edc3a9c1d0b1aa8012af4be4397050bc0bc27779b3f8713f44ecc3

See more details on using hashes here.

Provenance

The following attestation bundles were made for binomial_marks-0.1.2.tar.gz:

Publisher: publish.yml on Binomial-Capital-Management/binomial-ai-research

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file binomial_marks-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: binomial_marks-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 6.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for binomial_marks-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 eb73a93d78cb407227584da21f4a701060d386ece0cf74b444ee567ea5663748
MD5 d2612c41a5446e368a856cea1b62aa54
BLAKE2b-256 e489c1eb062553ecd3a8f386bb77cd21bd821aff0e8de105eca92a56d697f069

See more details on using hashes here.

Provenance

The following attestation bundles were made for binomial_marks-0.1.2-py3-none-any.whl:

Publisher: publish.yml on Binomial-Capital-Management/binomial-ai-research

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page