Orcaset: Building Trustworthy Financial Models with Agents

Orcaset is a Python framework for building financial models as code. It is a tool for agents to run financial analysis using typing and structural design to guardagainst invalid models.
Orcaset is still pre-version 1.0, but early benchmarks show higher accuracy and 40%+ greater token efficiency on small models (fewer than 100 line items) compared to spreadsheet automation (Claude, Codex). The token efficiency flows through to similar speed and cost efficiency gains. The performance gap should increase with model size due to better interpretability and greater code reusability.
Spreadsheet automation will continue to improve, but spreadsheets were built for humans to use through a user interface. Building models as code lets agents rely on stronger programming fundamentals.
Semantic References
Spreadsheet values assume meaning based on their surroundings, which can be ambiguous. Calculations are intrinsically tied to the presentation layout. LLMs suffer from off-by-one errors and extended workbook searches as a result.
The image below is from Apple’s June 2026 filing. If we want to retrieve the June 2026 quarterly beginning balance for additional paid-in capital (APIC), we have to scan over three different positional axes (three-month/nine-month, 2025/2026, beginning/ending balance) to determine that C18 holds the applicable value. Semantic meaning can be hidden in (mis)aligned columns, rows, cell formatting, tab names, or other locations.
Similarly, you don’t get any meaning from examining the formula in C26 (=SUM(C21:C25)) without scanning the surrounding cells.

References in orcaset are named values that have semantic meaning. Instead of C18, you would find the June 2026 quarterly beginning APIC by calling something like get_at(apic, date(2026, 3, 29)) (note that the reporting period started on 3/29). Similarly, the formulas are easy to interpret because they use named values. A profit line item might simply be defined as profit = revenue – cost.
Typing Guardrails
Spreadsheets happily coerce and combine things they should not. Dates to numbers, Euros to Yen, flows to point-in-time balances. Adding rows/columns and other modifications can silently break models. It is particularly risky when updating large models where the full model doesn’t fit or isn’t included in the context passed to the LLM.
Orcaset uses typing and structural design to prevent these kinds of issues. It is type-safe, raises type-checking errors at write time, and encourages loud runtime errorsfor incompatible model definitions.
The units example shows how types can prevent accidental sums across currencies at both the type checking and runtime levels.

Data Integration
Orcaset is just plain Python. That means you use it with Python’s vast ecosystem to ingest, manipulate, model, and export to almost any data source using best practices to securely manage access.
Other than copy-paste, the only real secure way to bring data into a workbook is through an add-in. Power Query, VBA, and other workarounds don’t have good API key or authentication management. Even if you’re able to import raw data into a workbook, it’s difficult to build robust cleansing or restructuring flows. Split-apply-combine operations just don’t work well in a spreadsheet’s two-dimensional grid.
Since Orcaset just runs in Python, secrets can be securely stored outside the model. There are high-quality libraries to import data from almost any format or service from web APIs to databases to flat files to parquet files and beyond. Libraries like pydantic make it easy to validate data inputs which you can manipulate in data frame.
Orcaset allows you to work with any type of data, even if it doesn’t fit in a two-by-two grid. For example, the capex example shows how you can create nested model structures. In this case, cohort-level depreciation schedules are built dynamically creating a sequence of cohort-level depreciation sequences.
Versioning & Audit
Institutional processes need version and audit controls. Not just for compliance, but also for efficient, reproducible workflows. “xxxx_v24_final_revised.xlsx” is not a real versioning system.
Orcaset works natively with Git, the software industry’s free standard for version control. That means you can easily pull up prior versions and track who made which changes. It also makes it easy to fork models and explore different scenarios then recombine them and reconcile parallel updates.
Spreadsheets do not work well with Git because files are not text-based. Even if you unzip an Excel file to access the underlying XML text, there is too much noise to use it effectively (e.g., stale values, user info, etc). Some file types, like xlsb, are binary formats that don’t have an underlying text representation at all.
Observability
Model calculations are fully transparent in Orcaset.
Orcaset tracks every calculation step which can be inspected and replayed. The traces form a dependency graph that allows agents and end usersto examine the relationships between values. Orcaset focuses on making sure calculations can be easily traced, knowing how important interpretability is to resolve the “this number doesn’t look right” allegations.

There are plenty of reasons Orcaset should help agents run financial analysis faster and with fewer errors. The proof lies in whether investment firms are actually able to exploit more data for deeper insight, underwrite more quickly, or identify risks earlier.
Copy the prompt below into your favorite agent to set up a new environment with Orcaset, install the Orcaset skill, and begin building a new model!
Requires Python 3.14 or later, or the ability for the agent to install it.