Skip to content
vp.Ven Petrov
WorkWritingAboutAt a glance
Projects/Financial review lab/Report explorer
A public report, opened up

Novartis 2025.
Follow the numbers.

What sold, what became profit, where the cash went. Explore the same financial report from several angles, then go back to the page behind any figure.

54 pages reviewedQ4 & full year 2025

Condensed Financial Report
Supplementary Data

Open the original report
Full year 2025 vs Full year 2024 · USD millions unless statedSaved calculation
Net sales54,532USDm

+8.38% vs prior year

p. 18
Operating income17,644USDm

+3,100 million movement

p. 18
Operating cash flow19,144USDm

+1,525 million movement

p. 24
Free cash flow17,596USDm

Company-defined non-IFRS measure

p. 24p. 50
Start with the income statement

Trace the full-year change in operating income.

The movements below reconcile the change between two reported periods. They show which financial lines changed; they do not establish the operational cause.

Year-on-year reported operating-income movement

Residual 0 USD million
Year-on-year reported operating-income movement: 2024-FY 14,544 to 2025-FY 17,644 USD million. Exact component values follow in the expandable table.2024-FY: 14,544 USD million14,5442024-FYNet sales: +4,215 USD million+4,215Net salesOther revenues: +737 USD million+737Other revenuesCost of goods sold: −872 USD million−872Cost of goods soldSelling, general and administration: −682 USD million−682Selling, general and administrationResearch and development: −1,178 USD million−1,178Research and developmentOther income: +285 USD million+285Other incomeOther expense: +595 USD million+595Other expense2025-FY: 17,644 USD million17,6442025-FYUSD million · positive movements in orange, negative in blue

Seven non-overlapping signed P&L changes; gross-profit subtotal is excluded. Arithmetic contributions do not establish operational causes.

p. 18
Exact movements and calculation

current − prior = sum of signed contributions

Bridge components, with signed change
Line itemFrom / priorTo / currentChangeUnit / basisSource
Net sales50,31754,532+4,215USD millionIFRS reportedp. 18
Other revenues1,4052,142+737USD millionIFRS reportedp. 18
Cost of goods sold-12,827-13,699−872USD millionIFRS reportedp. 18
Selling, general and administration-12,566-13,248−682USD millionIFRS reportedp. 18
Research and development-10,022-11,200−1,178USD millionIFRS reportedp. 18
Other income1,1751,460+285USD millionIFRS reportedp. 18
Other expense-2,938-2,343+595USD millionIFRS reportedp. 18
Gross margin78.81 %

Prior: 77.3 %

Calculation

gross_profit / net_sales × 100

p. 18
Operating margin32.36 %

Prior: 28.9 %

Calculation

operating_income / net_sales × 100

p. 18
Net margin25.61 %

Prior: 23.73 %

Calculation

net_income / net_sales × 100

p. 18
R&D expense / net sales20.54 %

Prior: 19.92 %

Calculation

research_and_development / net_sales × -100

p. 18
Effective tax rate14.59 %

Prior: 12.47 %

Calculation

income_taxes / income_before_taxes × -100

p. 18
What makes up other revenues?
Other revenues include profit sharing, royalties and milestone income. They are separate from net sales.
Line itemFull year 2024Full year 2025ChangeUnit / basisSource
Profit sharing income1,0631,341+278USD millionIFRS reportedp. 41
Royalty income37379+342USD millionIFRS reportedp. 41
Milestone income28117+89USD millionIFRS reportedp. 41
Other revenue277305+28USD millionIFRS reportedp. 41
Total other revenues1,4052,142+737USD millionIFRS reportedp. 41
Full income statement, including EPS and share counts
Reported IFRS income statement. Units differ for earnings per share and share counts.
Line itemFull year 2024Full year 2025ChangeUnit / basisSource
Net sales50,31754,532+4,215USD millionIFRS reportedp. 18
Other revenues1,4052,142+737USD millionIFRS reportedp. 18
Cost of goods sold-12,827-13,699−872USD millionIFRS reportedp. 18
Gross profit38,89542,975+4,080USD millionIFRS reportedp. 18
Selling, general and administration-12,566-13,248−682USD millionIFRS reportedp. 18
Research and development-10,022-11,200−1,178USD millionIFRS reportedp. 18
Other income1,1751,460+285USD millionIFRS reportedp. 18
Other expense-2,938-2,343+595USD millionIFRS reportedp. 18
Operating income14,54417,644+3,100USD millionIFRS reportedp. 18
Loss from associated companies-38-12+26USD millionIFRS reportedp. 18
Interest expense-1,006-1,144−138USD millionIFRS reportedp. 18
Other financial income and expense140-136−276USD millionIFRS reportedp. 18
Income before taxes13,64016,352+2,712USD millionIFRS reportedp. 18
Income taxes-1,701-2,385−684USD millionIFRS reportedp. 18
Net income11,93913,967+2,028USD millionIFRS reportedp. 18
Net income attributable to Novartis AG shareholders11,94113,984+2,043USD millionIFRS reportedp. 18
Net income attributable to non-controlling interests-2-17−15USD millionIFRS reportedp. 18
Weighted average basic shares2,0181,939−79million sharesIFRS reportedp. 18
Basic earnings per share5.927.21+1.29USD per shareIFRS reportedp. 18
Weighted average diluted shares2,0351,955−80million sharesIFRS reportedp. 18
Diluted earnings per share5.877.15+1.28USD per shareIFRS reportedp. 18
Reviewed data. Reproducible calculations.

Showing the saved calculation. Refresh to ask the Python service to calculate it again.

How the Python/FastAPI service works Download dataset JSONSource facts CSV

Independent portfolio experiment built with Codex using a public report. Figures were manually reviewed and transcribed. No private Novartis data, paid model calls or claimed employment connection.

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