Skip to main content

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.

Release files for binomial-marks 0.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for binomial-marks 0.1.2
File Size Uploaded
binomial_marks-0.1.2.tar.gz 5.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for binomial-marks 0.1.2
File Interpreter ABI Platform
binomial_marks-0.1.2-py3-none-any.whl Python 3 none any Details

Total release size: 11.9 kB

Release files / binomial_marks-0.1.2.tar.gz

Download URL binomial_marks-0.1.2.tar.gz
Size 5.7 kB
Tags Source
SHA-256 checksum
How to use checksums
a1fcfc5f936f43bd83cc241816dfcb61339d2287b8e4c5f135d78b6b293f5c04
BLAKE2b-256 checksum
How to use checksums
e0b40101f1edc3a9c1d0b1aa8012af4be4397050bc0bc27779b3f8713f44ecc3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 27, 2026.

Transparency log

Release files / binomial_marks-0.1.2-py3-none-any.whl

Download URL binomial_marks-0.1.2-py3-none-any.whl
Size 6.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
eb73a93d78cb407227584da21f4a701060d386ece0cf74b444ee567ea5663748
BLAKE2b-256 checksum
How to use checksums
e489c1eb062553ecd3a8f386bb77cd21bd821aff0e8de105eca92a56d697f069
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 27, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.2 This release

2 release files

0.1.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page