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.1.tar.gz (5.6 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.1-py3-none-any.whl (6.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: binomial_marks-0.1.1.tar.gz
  • Upload date:
  • Size: 5.6 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.1.tar.gz
Algorithm Hash digest
SHA256 07b39c189f3678c52775e9cfb9dc7e3c3c766dfdf589d97755995a0eb9956269
MD5 597a4339d61a8bd65ec48a4a4119ae0c
BLAKE2b-256 4c61c780748880bbd75bfeae25ccc29c7fdc8b8beb1dab55c014912e0deb2ad9

See more details on using hashes here.

Provenance

The following attestation bundles were made for binomial_marks-0.1.1.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.1-py3-none-any.whl.

File metadata

  • Download URL: binomial_marks-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 6.2 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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 760c33666d9b5bf213a908aff80b9bd537efed5c1e90d783f4057626cea0fa6d
MD5 4b7af91f8659c95ce903ca1b92ec11a1
BLAKE2b-256 09c8797d145fbf4dae4f9118a7ee5ab3b9144bea5cac3f2c356b905c9b840c60

See more details on using hashes here.

Provenance

The following attestation bundles were made for binomial_marks-0.1.1-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