Skip to content
vp.Ven Petrov
WorkWritingAboutAt a glance
Projects/Financial review lab
Explore the full report How the Python/FastAPI service works
Public-report finance prototype

Why did operating income rise?

Follow the change in Novartis operating income from the published figures to a reconciled explanation. Inspect the numbers, their sources and the checks behind the result.

Calculated only0 model calls

$0.00 inference cost

Financial arithmetic runs in Python. This version uses a fixed, checked brief.
NovartisData period: Q4 2025 vs Q4 2024
IFRS reported · USD millionReport, page 17
Operating-income change+86 USDm

3,530 → 3,616

Net-sales growth+1.4%

Reported USD, versus the prior-year quarter

Operating margin27.1%

26.8% prior year · +0.28 percentage points

Saved calculation
Operating-income bridge

Seven changes. $86 million higher.

Residual: 0

Each bar shows how a reported line contributed to the change. Expense reductions add to income; expense increases subtract from it.

Seven changes reconcile the 86 million US dollar increase in operating income.Operating income increases from 3,530 to 3,616 million US dollars. The vertical scale begins at 3100 million. Select a named movement below the chart for exact figures and its source.3,1003,4003,7004,0003,530Q4 2024income+183Netsales+119Otherrevenues−287Cost ofgoods sold+61Selling &admin−321Research &development+119Otherincome+212Otherexpense3,616Q4 2025incomeUSD million · vertical scale starts at 3,100
Inspect a movement
Selected movement

Research and development

Q4 2024(2,842)
→
Q4 2025(3,163)
Income contribution−321

The expense became larger, reducing operating income by this amount. Figures are in USD million.

Report, page 17
The review brief

A small net increase, with larger movements underneath.

Calculated from the statement

Reported operating income moved from USD 3,530 million to USD 3,616 million. The seven signed contributions reconcile to the USD 86 million increase.

Calculated from the statement

The largest negative contribution was Research and development, at USD 321 million. Lower other expenses contributed USD 212 million in the opposite direction.

What the company says

The company attributes the operating-income increase to higher government grant income and lower SG&A expenses, partly offset by higher R&D expenses.

Report, page 5

The bridge reconciles the arithmetic. It does not prove why the business changed. The company explanation is attributed to its report.

From source to review

A visible process

Arithmetic and checks happen before the brief. The evidence available to the brief is limited to the relevant report extract.

  1. 01Read source

    Reviewed public report extract, with page references.

    Checked
  2. 02Normalize facts

    Validate period, units, signs, metric IDs and source references.

    Checked
  3. 03Reconcile movement

    Calculate seven signed contributions and check both income totals.

    Checked
  4. 04Select evidence

    Select bounded report summaries by relevant metric IDs.

    Checked
  5. 05Build brief

    Render a deterministic brief; no model has been called.

    No model used
  6. 06Check failures

    Run real validation and deliberately corrupted-input checks.

    Checked
Saved calculation ready to inspect

Showing the saved calculation. You can inspect every figure and check below.

Independent portfolio prototype using a public report. This is not work performed for Novartis.

How this prototype is built
Ven PetrovSoftware engineer · Barcelona
GitHub ↗LinkedIn ↗Email ↗

Find a project or a note

17 results

Transfutur ERP · ExperienceERP for transport and logisticsAs the sole engineer, I built an ERP from zero for transport and logistics. It supported roughly €5–6 million in annual invoicing across two offices, and I kept it running for about a year.Financial review lab · Project storyExploring a financial report with Python and FastAPII started with one income change, then opened up the same 54-page report: products, regions, cash flow, core adjustments and a dataset whose figures lead back to the source.Crude-oil narrative tracker · Project storyCrude-oil research from global news and market dataI wanted help following global events that could matter for crude oil. The prototype combines news research with calculated market and position values, while keeping recent assessments separate from the longer numeric history.MNQ time-series research · ExperimentTime-series prediction experimentsAn exploration of high-resolution market data: choosing what to acquire, checking its limits, comparing time intervals and testing whether a prediction survived later data and the cost of acting on it.NQ/MNQ backtest engine · Technical noteA missing closing bar left the simulator’s short position openThe strategy reset for a new day while a shared counter still counted yesterday’s short. A small replay shows why closing the position has to happen before clearing its state.Small-cap edge research · Project storyTurning small-cap trading ideas into repeatable researchI asked Claude Code for a fresh research system that could test named price patterns, compare later periods and carry its methodology into new sessions. One candidate shows how features, entry timing and costs fit together.Gadgeon Europe applications · ExperienceConnected-device dashboards and mobile apps at Gadgeon EuropeI worked on Ionic and Angular applications that brought several APIs into dashboards for energy monitoring and connected-device control, with releases and maintenance across multiple client versions.ctxforge · Project storyctxforge: discovering what to build before codingA context discovery framework that asks an LLM to act like a senior engineering interviewer: understand the idea, uncover requirements and agree the scope before an agent starts building.Sociedades Inactivas enquiries · Technical noteSaving an enquiry before trying to send its emailOn the Sociedades Inactivas catalogue, a visitor can ask about a company or send a general enquiry. The form separates saving that request from delivering its notification, including when the visitor retries.Astro local-services website · Project storyA local-services site assembled from city, service and FAQ recordsThe Astro site describes flooring and other local services across different cities. Shared templates check availability, read the matching content and select one FAQ set for both visitors and structured data.3D Spaces website migration · Project storyMoving 3D Spaces to Next.js while its email stayed on the old serverI rebuilt the virtual-tour website with AI coding collaborators, preserving its content and URLs. The cutover also had to protect the mailbox, enquiry flow and existing analytics history.Capture CRM · Project storyConnecting classified listings to contacts in a small CRMA Chrome extension and Next.js dashboard bring classified listings, platform profiles and contact history together. Saving a listing again can add the person who was missing from an earlier import.Product-description comparison bench · ExperimentComparing one model call with separate vision and writing stepsA small product-description tool lets me inspect the visual analysis before the copy is written, change the model used for each step and compare request measurements.Between Us · Project storyBetween Us: why I kept the first take and widened the shotI compared dialogue takes, asked for wider shots and more physical acting, then changed the workflow when its studio limited the scenes I wanted to make.Restaurant-service voice agent · ExperimentDesigning a restaurant-service call around the real offerI worked through a Spanish outbound agent prompt, corrected a free visit to the actual paid service and compared how two drafts handled transfers and bookings.Vapi and Telnyx voice integration · Technical noteThe Vapi agent could speak, but it could not hear me clearlyMy Telnyx number connected to the assistant, but the caller audio was distorted. Three codec tests recovered the connection without fixing that original problem.Warloop: Echoes of Solmara · Project storyWarloop: turning generated character art into a playable prototypeGood-looking character images became tiny figures, a backwards walk and misplaced bosses in the game. I worked through the gap between generated art and playable behavior.
esc to close · Tab to move through results