TL;DR
Microsoft's FY2025 operating income rose to $128.528 billion and operating margin reached 45.62%, but operating cash flow minus PPE purchases fell from $74.071 billion to $71.611 billion. Operating cash flow grew 14.86% while PPE spending grew 45.13%. Use VS Code Copilot to reconcile matching fiscal periods and source definitions. This cash bridge shows the investment burden; it does not measure the return on new data centers or isolate all company spending as AI investment.
How much of Microsoft's profit growth survived the infrastructure spend?
Operating cash flow rose, but PPE purchases rose faster. The original table retains the residual cash calculation.
- FY2025 operating cash flow
- $136.162B
- FY2025 PPE purchases
- $64.551B
Show the table · 3 rows, 4 columns
Scroll sideways to compare all columns. Select a heading to sort.
| CFO | 87.582 | 118.548 | 136.162 |
| PPE purchases | 28.107 | 44.477 | 64.551 |
| CFO − PPE | 59.475 | 74.071 | 71.611 |
No matching rows. Clear the filter to see all records.
FY2025 operating income grew to $128.528B, but CFO minus PPE purchases declined to $71.611B. Capital expenditure grew faster than operating cash flow.
Reproduce this evidence in VS Code Copilot
Inspect the request
This worked comparison was checked in NexusTrade and against the original statements. It is not an execution receipt from your external client. Use the connected client capability described in the setup guide, or supply the public statements directly when a tool is unavailable.
Compare three full fiscal periods
Operating margin = operating income ÷ revenue. Not returned means missing, never zero. Source FCF definitions require the reconciliation below.
Show the table · 3 rows, 5 columns
Scroll sideways to compare all columns. Select a heading to sort.
| MSFT · 2023-06-30 | $211.915B | $88.523B / 41.77% | $72.361B | $59.475B |
| MSFT · 2024-06-30 | $245.122B | $109.433B / 44.64% | $88.136B | $74.071B |
| MSFT · 2025-06-30 | $281.724B | $128.528B / 45.62% | $101.832B | $71.611B |
No matching rows. Clear the filter to see all records.
Operating margin = operating income ÷ revenue. Not returned means missing, never zero. Source FCF definitions require the reconciliation below.
Read-only NexusTrade sec_edgar fundamentals retrieved October 12, 2026 and checked against the original annual statements. Amounts below are USD billions; the retained raw response uses USD. These are historical fiscal periods, not a live quote or a forecast.
Follow the calculation into the business
Evidence 1
FY2023 → FY2024 → FY2025 CFO: $87.582B → $118.548B → $136.162B.
Evidence 2
PPE purchases: $28.107B → $44.477B → $64.551B. FY2024 → FY2025 CFO growth was 14.86%; PPE growth was 45.13%.
Evidence 3
Operating margin improved from 41.77% to 44.64% to 45.62%. A stronger operating margin can coexist with lower residual cash after investment.
What this result leaves unanswered
Accounting explanation
PPE is cash expenditure, while depreciation reaches profit over time. Neither the operating margin nor this cash bridge measures the return on new data centers.
Business and investment limits
Microsoft's reporting segments and recast comparative columns require matching definitions. Do not treat all capital spending or company revenue as isolated AI revenue.
Check fiscal periods and public availability
Inspect every input period, publication date and source
Select FY rows by periodEnd instead of assuming the array is latest first. Source statements may present comparative years in one filing. Their later publication does not prove those exact restated values were available at the earlier historical date.
Scroll sideways to compare all columns. Select a heading to sort.
| MSFT | 2023 | 2023-06-30 | 2023-07-27 | Annual FY, USD |
| MSFT | 2024 | 2024-06-30 | 2024-07-30 | Annual FY, USD |
| MSFT | 2025 | 2025-06-30 | 2025-07-30 | Annual FY, USD |
No matching rows. Clear the filter to see all records.
Finish with a claim you can audit
Show the table · 3 rows, 3 columns
Scroll sideways to compare all columns. Select a heading to sort.
| The reported business improved | Same-period revenue and operating income | Source definitions and segment mix |
| Profit turned into cash | CFO reconciliation and PPE scope | Working capital and noncash items |
| The stock is attractive | Not established by these statements | Price, valuation assumptions and competing outcomes |
No matching rows. Clear the filter to see all records.
MSFT: FY2026 reported result
Inspect the original msft: fy2026 reported result
NexusTrade sec_edgar read recorded October 10, 2026. The reporting period ended 2026-06-30; the filing date was 2026-07-29.
- Revenue
- $331.839B331,839,000,000 USD
- Operating income
- $155.237B155,237,000,000 USD
- Operating margin
- 46.78%Calculated as operating income ÷ revenue.
Interpret the reported figures
Inspect the original interpret the reported figures
Operating margin describes this reported period. Keep annual and quarterly values separate, select the matching period explicitly, and retain the source filing. The fundamentals array includes older observations and is not ordered latest first.
Choose a separate next task
Inspect the original choose a separate next task
These guides are independent choices after this research brief. Review any proposed paid research, historical test or portfolio change before authorizing it.
Retrieve filings before interpreting the company
Inspect the original retrieve filings before interpreting the company
Expected output is dated filing rows or annual metric records, rather than a generic stock recommendation. If the source has no matching fiscal period, leave the comparison unresolved and follow the issuer link below.
Start the current company brief with the latest filed annual and quarterly periods returned by the tool. The historical worked example below checks your reconciliation method; it does not replace that current filing review.
Call sec_edgar with each argument object below. The first requests filing rows; the second requests inline annual XBRL metrics. Keep filing dates, accession identifiers and links returned by the tool. Do not use ingest_filings for this read-only check.
{
"ticker": "MSFT",
"action": "list_filings",
"forms": [
"10-K",
"10-Q"
],
"since": "2025-01-01",
"limit": 10
}
{
"ticker": "MSFT",
"action": "fundamentals",
"periods": "annual"
}Worked source check: Microsoft FY2025
Inspect the original worked source check: microsoft fy2025
The Microsoft release published 2025-07-30 reports the fiscal year ended 2025-06-30. The statement values below are USD millions. This is a fixed historical source example, not the newest company report.
Dividing operating cash flow by revenue gives 48.33% for this annual period. That cash conversion ratio measures operating cash flow relative to reported sales. It is not free cash flow, a stock-return forecast or a reason to buy. A later release may restate an earlier value; retain the original source and explain any mismatch.
Scroll sideways to compare all columns. Select a heading to sort.
| Net sales / revenue | 281,724 | 2025-06-30 |
| Operating cash flow | 136,162 | 2025-06-30 |
No matching rows. Clear the filter to see all records.
Historical issuer-reported values, not trading performance.
Reconcile the tool values with the actual statement
Inspect the original reconcile the tool values with the actual statement
Check the cash-flow statement period: a nine-month year-to-date value cannot be compared with a twelve-month revenue value. Normalize millions versus dollars before computing a ratio. Do not add a company metric to a price rule unless its historical availability is represented.
Use the returned MSFT filing rows and annual XBRL metrics. Reconcile FY2025 revenue 281,724 and operating cash flow 136,162, both USD millions, for the year ended 2025-06-30, against this source: https://www.microsoft.com/en-us/Investor/earnings/FY-2025-Q4/press-release-webcast. Build a table with metric, raw value, unit, start/end dates, fiscal period, source publication date and source URL. Separate any quarterly, year-to-date, annual and restated records. Explain mismatches rather than choosing the most favorable number. Return research/MSFT.md, strategies/msft-sma-v1.json and experiments/msft-sma-v1.md in your workspace. Do not create, backtest, deploy or trade a portfolio.Resolve one remaining question without duplicate research
Inspect the original resolve one remaining question without duplicate research
If the brief needs broader evidence, review a specific research_topic message before submitting it. Preserve researchJobId from the accepted response and poll get_research_status with research_job_id set to that exact returned value. PROCESSING means poll the same job; COMPLETED supplies report/citations; FAILED supplies an error. Another research_topic call starts another billed run.
From a question to evidence
Read filings
NexusTrade toolsec_edgar
Output to inspectIssuer, accession, reporting period and publication date
Read relevant news
NexusTrade toolsearch_stock_news
Output to inspectDated publisher links; distinguish news from filings
Submit bounded research
NexusTrade toolresearch_topic
Output to inspectresearchJobId and source-backed question
Poll the accepted job
NexusTrade toolget_research_status
Output to inspectSame research_job_id, completed report and citations
Inspect the original from a question to evidence
Scroll sideways to compare all columns. Select a heading to sort.
| Read filings | sec_edgar | Issuer, accession, reporting period and publication date |
| Read relevant news | search_stock_news | Dated publisher links; distinguish news from filings |
| Submit bounded research | research_topic | researchJobId and source-backed question |
| Poll the accepted job | get_research_status | Same research_job_id, completed report and citations |
No matching rows. Clear the filter to see all records.
research_topic is asynchronous. Poll get_research_status with the same job ID instead of launching another billed research run for the same question.
Actual NexusTrade filing-tool output
Inspect the exact returned fields and original requests
On October 10, 2026, we called sec_edgar with the two separate request objects below. The product returned a MSFT 10-K filed 2026-07-29, for the fiscal year ended 2026-06-30, and the FY2026 metric row shown here. We selected that row by fiscal year and period end, rather than assuming the first array entry was latest.
The amounts below are USD, while the linked issuer statement displays them in millions. Revenue and operating income answer different questions from operating cash flow. The compact fundamentals row does not supply operating cash flow; do not relabel freeCashFlow as that metric.
This receipt records a NexusTrade filing read on October 10, 2026. Optional historical exercises retain their own periods and units.
| Returned field | Observed value |
|---|---|
| Ticker | MSFT |
| Period | FY2026 |
| Period end | 2026-06-30 |
| Filed | 2026-07-29 |
| totalRevenue | 331,839,000,000 USD |
| operatingIncome | 155,237,000,000 USD |
No matching rows. Clear the filter to see all records.
{
"ticker": "MSFT",
"action": "list_filings",
"forms": [
"10-K"
],
"limit": 1
}
{
"ticker": "MSFT",
"action": "fundamentals",
"periods": "annual"
}Connect Visual Studio Code in the intended environment
Connect Visual Studio Code in the intended environment
- Configuration format
- The full guide distinguishes portable .mcp.json from the supported VS Code profile format. Preserve other servers when merging configuration.
In VS Code’s Command Palette, run MCP: Add Server. Follow the remote HTTP setup with name nexustrade and URL https://nexustrade.io/api/mcp. Choose the intended workspace or global scope. Run MCP: List Servers, start NexusTrade, complete browser sign-in and enable the needed tools in Copilot chat.
What you should see: The server is started and its tools are available to the intended Copilot chat. A trusted server still needs the account read in the next step.
Optional: check the account before owned-record changes
Optional: check the account before owned-record changes
Skip this step if you only want to inspect the public filing in the next step. Before reading or changing an owned portfolio, ask for a read-only list, inspect one returned ID with get_portfolio and compare its name, strategies and deployment type. An authenticated empty list is valid for a new account.
What you should see: For owned records, you have the intended account response or an authenticated empty response. Resolve an account mismatch before saving anything. Public filing inspection does not require an owned-portfolio read.
- Identity boundary
- A server list or public filing read does not verify access to your owned portfolios.
Use only NexusTrade read tools. Call fetch_portfolios, then get_portfolio with one returned portfolio ID. Report the ID, name, strategies and deployment type. If the authenticated list is empty, report that result. Do not create, edit, backtest, deploy or place orders.
No comments yet.