Finance
Fetch completed earnings-call transcripts, follow a live call, and turn supported earnings-mention contracts into validated resolution fields. Every transcript row identifies its source and when the text became available.
Install
Section titled “Install”The meta packages include Finance:
pip install mostlyrightmdpnpm add mostlyrightInstall only the domain package when you do not need the other packages:
pip install mostlyrightmd-financepnpm add @mostlyrightmd/financePublic surface
Section titled “Public surface”| Runtime | Namespace | Methods |
| --- | --- | --- |
| Python | mostlyright.finance.transcripts | resolve() and derive() |
| TypeScript | @mostlyrightmd/finance | transcripts.get(), transcripts.stream(), transcripts.resolve(), and transcripts.derive() |
Finance does not expose a general price or fundamentals series. The current package is limited to earnings-call transcripts and earnings-mention resolution.
Resolve a Kalshi contract
Section titled “Resolve a Kalshi contract”resolve() validates the contract root, ticker, event date, and target phrase. It returns an immutable resolution tuple.
from datetime import datefrom mostlyright.finance import transcripts
resolution = transcripts.resolve( "KXEARNINGSMENTIONNKE", date(2026, 6, 25), target_word="tariffs",)
print(resolution.ticker)print(resolution.target_word)print(resolution.resolution_rule)Unknown contract roots, unsupported tickers, time-bearing dates, and empty target phrases raise an error. The resolver does not guess missing contract fields.
The TypeScript package exposes the same operation:
import { transcripts } from "@mostlyrightmd/finance";
const resolution = transcripts.resolve( "KXEARNINGSMENTIONNKE", "2026-06-25", { targetWord: "tariffs" },);Derive a Polymarket resolution
Section titled “Derive a Polymarket resolution”derive() validates an untrusted event payload before returning resolution fields. It returns null when the event is not an earnings-mention market, the ticker or date is missing, or a supplied webcast host is not allowlisted.
import { transcripts } from "@mostlyrightmd/finance";
const resolution = transcripts.derive({ title: "Will Nike say tariffs on its earnings call?", slug: "will-nike-say-tariffs-on-its-earnings-call", ticker: "NKE", targetWord: "tariffs", eventDate: "2026-06-25", webcastUrl: "https://events.q4inc.com/example",});Read hosted transcripts
Section titled “Read hosted transcripts”TypeScript can fetch the authoritative hosted rows for a ticker and event date:
import { transcripts } from "@mostlyrightmd/finance";
const result = await transcripts.get("NKE", "2026-06-25", { hostedUrl: process.env.MOSTLYRIGHT_FINANCE_HOSTED_URL!,});
for (const row of result.rows) { console.log(row.segment, row.speakerRole, row.text);}hostedUrl is required. The package does not ship a default hosted endpoint. Transport failures and exhausted retries raise HttpError. A malformed response raises SchemaValidationError, and a valid response with no transcript rows raises NoDataError. An aborted request still propagates the caller’s AbortSignal.
Follow a live call
Section titled “Follow a live call”The TypeScript stream reconnects with the last event id after a connection ends. Iteration stops when the call ends, the supplied signal is aborted, or reconnection attempts are exhausted.
import { transcripts } from "@mostlyrightmd/finance";
for await (const row of transcripts.stream({ hostedUrl: process.env.MOSTLYRIGHT_FINANCE_HOSTED_URL!, apiKey: process.env.MOSTLYRIGHT_API_KEY!, ticker: "NKE", callId: "NKE-2026-06-25",})) { console.log(row.event, row.text);}transcripts.stream() emits live transcript segments and fact deltas over SSE. These rows use source="earnings.hosted.stream" and resolution_status="provisional". Do not use them as settlement truth or historical labels.
Authoritative post-call rows use transcript availability as their knowledge time. The call date or spoken time cannot substitute for the time the transcript became available.
Schemas
Section titled “Schemas”| Schema | One row represents |
| --- | --- |
| schema.finance.transcript.v1 | One attributed transcript segment |
| schema.finance.fact.v1 | One counted mention occurrence with venue-specific counting fields |
Fact rows retain the matched phrase, mention count, speaker role, call segment, source, delivery path, and resolution status. This lets consumers audit why an occurrence counts for a venue.
Configuration
Section titled “Configuration”Hosted transcript reads use MOSTLYRIGHT_FINANCE_HOSTED_URL. Live SSE streaming also requires MOSTLYRIGHT_API_KEY. See Credentials for the configuration matrix.
See also
Section titled “See also”- Markets: contract parsing and settlement
- Trade history: venue prices, fills, and order books
- Temporal safety: event time, knowledge time, and cutoffs
- Sources & provenance: source identity and delivery metadata
- Python Finance API
- TypeScript Finance API