Check Whether EPS Estimates and Actuals Are Comparable With Claude and FMP

Before you use an earnings history to judge analyst forecasts, check that the estimates and actuals describe the same thing. An estimate beside an actual EPS figure can look like a ready-made comparison, even when the actuals switch accounting basis or the estimate's recording time is unclear. Averaging those differences can hide the problem rather than resolve it.

This workflow uses Claude and Financial Modeling Prep's MCP server to check EPS comparability before you assess forecast accuracy. The first prompt retrieves an annual consensus record and eight quarterly earnings events, checks completeness and maps each event to its fiscal quarter. The second compares the actual EPS with the company's GAAP and non-GAAP disclosures, checks what is known about the estimates, and produces a findings-and-actions table. You finish with a documented explanation of which comparisons are supported, which are unverified and what evidence would make a stronger analysis possible.

Microsoft (MSFT) shows what that process can uncover. Four FY2025 actuals match GAAP EPS, while three FY2026 actuals match non-GAAP EPS; another matches both. Five of the eight observations therefore share the selected GAAP actual basis. None of the returned historical estimates establishes its own accounting basis or pre-announcement recording time.

The diagnostic result is a mixed actual-EPS series with unverified estimate comparability. The next action is specific: obtain historical estimates with a documented pre-release timestamp and an EPS definition matching each actual before measuring forecast accuracy. Adding more quarters can enlarge the sample, but it cannot supply those missing definitions or timestamps.

Key takeaways

  • Check fiscal periods, actual EPS basis, estimate EPS basis and estimate timing separately. Passing one check does not establish overall comparability.
  • Microsoft's returned actuals switch between GAAP and non-GAAP. Five match the selected GAAP reference; three match non-GAAP only.
  • The historical estimates' accounting basis and recording time are not established. None of the eight observations is verified as a like-for-like pre-release forecast comparison.
  • Microsoft's FY2027 annual consensus has a 7.5% normalized high-low range across 31 analysts. That range is separate context and does not show that the quarterly history validates the annual forecast.
  • The workflow ends with a concrete finding and a matching action: document the mismatch, retain the source records, and obtain the evidence needed for the intended analysis.

What the comparability check produces

The primary output is a comparability assessment rather than an earnings forecast. It distinguishes complete records from verified comparisons and links each finding to the evidence needed next. Record-level calculations help you inspect the data, while the annual consensus range remains separate context.

Input

What it contains

Interpretation limit

FY2027 annual consensus

Average, highest and lowest EPS estimates for the year ending June 30, 2027, plus analyst count

Does not show the distribution inside the range or establish the estimates' accounting basis

Quarterly earnings events

epsEstimated and epsActual for each completed quarter

Does not establish forecast accuracy without estimate-basis and timing evidence

Microsoft's fiscal year ends June 30. At the retrieval date, FY2027 was the first annual period that had not ended, and the eight completed quarterly events covered FY2025 Q1 through FY2026 Q4. The annual record therefore looks ahead, while the quarterly series looks back over individual reporting events.

For a broader explanation of how ranges differ from uncertainty measures, review analyst estimate dispersion. Here, the practical task is narrower: calculate the returned range and differences while checking the comparability of the records.

Calculations

Measure

Calculation

Purpose

Annual high-low range

epsHigh − epsLow

Distance between the highest and lowest annual estimates

Normalized annual range

(epsHigh − epsLow) ÷ absolute epsAvg × 100

Range relative to the consensus average

Absolute quarterly difference

Absolute value of epsActual − epsEstimated

Size of a difference in dollars per share

Normalized quarterly difference

Absolute difference ÷ absolute epsEstimated × 100

Difference relative to the returned estimate

Apply all rules to unrounded values. Round EPS and dollar differences to two decimal places and percentages to one decimal place for display. An average or estimate below $0.10 in absolute value is too small to use as a normalization denominator in this screen.

The annual range uses just the highest and lowest estimates. One outlier can widen it, and the same range can appear with very different analyst counts. Show coverage alongside the range, without treating a larger count as proof that the forecast is accurate.

Check the accounting basis before summarizing history

The earnings records used here do not label EPS as GAAP or non-GAAP, and returning an estimate and an actual in one record does not establish that they share an accounting basis. To check the actual side, compare epsActual with diluted EPS in Microsoft's earnings releases.

Actual-basis label

Condition

GAAP

Returned actual matches GAAP diluted EPS as originally reported and differs from non-GAAP EPS

Non-GAAP

Returned actual matches non-GAAP diluted EPS and differs from GAAP EPS

Both

GAAP and non-GAAP EPS are equal and the returned actual matches them

Not matched

Returned actual matches neither reference figure

Use GAAP as originally reported as the reference for this example because it exists for all eight quarters. The FY2025 non-GAAP comparatives come from Microsoft's later FY2026 releases. Selecting non-GAAP instead would leave four matching actuals, including the quarter where both figures are equal. Neither choice establishes the accounting basis of the estimates.

Record estimate basis as Not established for every quarterly observation. Matching five actuals to the GAAP reference describes the actual side only; it does not verify any estimate-actual pair as a like-for-like comparison.

What the estimate timestamps establish

The FMP Earnings Report API describes estimates available ahead of earnings announcements. The returned records do not establish a specific pre-release cutoff or EPS basis for each historical estimate, and their lastUpdated values cannot substitute for those details.

For example, the FY2026 Q4 event is dated July 29, 2026 but has lastUpdated October 23, 2026, the retrieval date, and the FY2025 Q1 event is dated October 30, 2024 but has lastUpdated April 24, 2025. Update dates like these do not tell you when the estimate was originally captured or what changed later, so these observations are described as estimate-to-actual differences, not forecast errors.

Turn each finding into an action

Complete the diagnostic even when a check finds a problem. Leave unsupported calculations unreported, identify the affected records and state what would resolve the issue. A data limitation is one of this workflow's outputs.

Check

Finding to report

Action

Record completeness and period mapping

Missing values, duplicate events or ambiguous fiscal quarters

Resolve the named record or mapping before interpreting its difference

Actual EPS basis

GAAP, non-GAAP, Both or Not matched for each quarter

Select a consistent actual definition and retain the issuer reconciliation

Estimate EPS basis

Documented definition or Not established

Obtain the estimate definition and confirm it matches the chosen actual

Estimate timing

Documented pre-release timestamp and forecast horizon, or Not established

Obtain a dated pre-announcement snapshot; do not substitute lastUpdated

Normalization denominator

Estimate below $0.10 in absolute value

Retain the dollar difference and omit its normalized percentage

Annual consensus context

Numeric range, analyst count and unresolved basis

Report the range separately; do not use quarterly differences to calibrate it

The eight-quarter sample also contains only five GAAP-matched observations, below the six-observation minimum selected for a descriptive historical average. That is an additional sample limitation rather than the main diagnostic: even a larger sample would remain unsuitable for a forecast-accuracy assessment until estimate basis and timing are established. No historical average is reported here.

FMP data and Microsoft EPS references

Use three FMP datasets: Financial Estimates, Earnings Report and Income Statement. The connector operation selects the dataset within each Claude tool.

Connector tool and operation

REST path

Parameters

Fields used

analyst / financial-estimates

/stable/analyst-estimates

symbol=MSFT; period=annual; page=0; limit=10

symbol, date, epsAvg, epsHigh, epsLow, numAnalystsEps

calendar / earnings-company

/stable/earnings

symbol=MSFT; limit=20

symbol, date, epsEstimated, epsActual, lastUpdated

statements / income-statement

/stable/income-statement

symbol=MSFT; period=quarter; limit=10

date, fiscalYear, period, filingDate

The annual estimate's date is its period end, so the retained date, June 30, 2027, maps to Microsoft's FY2027, and the completed FY2026 estimate record is excluded. Earnings-event dates are announcement dates instead: each retained event is matched to the quarterly statement whose filingDate has the same date, then assigned that record's fiscalYear, period and period end. For another issuer, resolve earnings-date and fiscal-quarter alignment before calculating the screen.

Diluted EPS reference figures

The reference figures below come from Microsoft's releases, separately from the FMP retrieval. The FY2025 Q1 GAAP value is in its original release; its non-GAAP comparative appears in the FY2026 Q1 reconciliation. The remaining FY2025 non-GAAP values appear in the corresponding FY2026 releases.

Fiscal quarter

GAAP EPS as originally reported

Non-GAAP EPS

Release reference

FY2025 Q1

$3.30

$3.37

FY2026 Q1 release

FY2025 Q2

$3.23

$3.35

FY2026 Q2 release

FY2025 Q3

$3.46

$3.54

FY2026 Q3 release

FY2025 Q4

$3.65

$3.86

FY2026 Q4 release

FY2026 Q1

$3.72

$4.13

FY2026 Q1 release

FY2026 Q2

$5.16

$4.14

FY2026 Q2 release

FY2026 Q3

$4.27

$4.27

FY2026 Q3 release

FY2026 Q4

$4.81

$4.74

FY2026 Q4 release

Microsoft began presenting non-GAAP EPS excluding the impact of its OpenAI investments in FY2026, with adjusted prior-year comparatives.

The quarterly income-statement dataset supplies only period mapping in this workflow. Its FY2026 Q4 diluted EPS of $4.80 differs from the release's $4.81 GAAP EPS. The returned net income divided by diluted shares, $35,766 million ÷ 7,453 million shares, rounds to $4.80, but that arithmetic does not establish the cause of the discrepancy. The screen uses the release's EPS reference figures and does not substitute the income-statement EPS into the earnings records.

All three calls were made on October 23, 2026, and the run recorded 04:18:28 UTC immediately after they completed. Consensus values, coverage and record metadata can change, so retain the dated responses when checking financial inputs supplied to an AI workflow rather than expecting later retrievals to reproduce the same snapshot.

Connect FMP to Claude

You need an active FMP API key and access to custom connectors. Follow the FMP MCP connection instructions: open Claude's Settings, select Connectors, choose Add custom connector and enter this URL with your own key:

https://financialmodelingprep.com/mcp?apikey=YOUR_FMP_API_KEY

Start a new conversation after saving the connector. Use Prompt 1 to retrieve the records, review the fiscal-quarter mapping and release references, then run Prompt 2 in the same conversation.

Prompt 1: Retrieve and map the EPS records

Prompt 1 retrieves a dated snapshot and runs the checks that identify incomplete records and ambiguous fiscal periods before any calculation.

Objective

Retrieve the FMP records for a dated snapshot of Microsoft (MSFT) EPS

estimates: the FY2027 annual consensus and the eight quarterly earnings

events from FY2025 Q1 to FY2026 Q4. Validate them and return the values

exactly as FMP returned them. Do not calculate ranges, differences or

classifications in this step.


Data rules

- Use the FMP connector only. Make each of these calls once:

1. analyst tool, endpoint=financial-estimates, symbol=MSFT,

period=annual, page=0, limit=10

2. calendar tool, endpoint=earnings-company, symbol=MSFT, limit=20

3. statements tool, endpoint=income-statement, symbol=MSFT,

period=quarter, limit=10

- Record the retrieval date and the time in UTC. If no clock is

available, record the date and write "time unavailable".

- Forward record: keep the annual record whose date is 2027-06-30. Take

epsAvg, epsHigh, epsLow and numAnalystsEps from that record only.

- Historical events: keep the records dated 2024-10-30, 2025-01-29,

2025-04-30, 2025-07-30, 2025-10-29, 2026-01-28, 2026-04-29 and

2026-07-29. Ignore any record whose epsActual is null.

- Quarter mapping: match each event date to the quarterly

income-statement record whose filingDate is the same date, and take

fiscalYear, period and date (period end) from it. If no filingDate

matches, or more than one record matches, mark the event

"Mapping unresolved: missing or ambiguous match".

- Keep every value at the precision FMP returned. Do not round.

- If a call fails, or a required field is missing or non-numeric, repeat

that call once. If the problem remains, mark the affected record

"Input unavailable" and leave the value blank. Never treat a missing

value as zero.


Validation checks

1. The forward record's date is 2027-06-30 and is after the retrieval

date.

2. epsHigh >= epsAvg >= epsLow, and numAnalystsEps is a number above 0.

3. Each of the eight event dates appears exactly once with numeric

epsEstimated and epsActual.

4. Each event maps to exactly one fiscal quarter.


Output

Table 1. Retrieval log

Columns: Item | Result

Rows: Retrieval date and time | Calls made | Records returned per call |

Forward record kept | Historical records kept | Records not used |

Missing or non-numeric fields | Retries


Table 2. FY2027 annual consensus record

Columns: Field | Value as returned

Rows: symbol | date | epsAvg | epsHigh | epsLow | numAnalystsEps


Table 3. Quarterly earnings events and fiscal-quarter mapping

Columns: Event date | Fiscal quarter | Period end | epsEstimated |

epsActual | lastUpdated | Input status

Oldest first. Input status = Complete only when both EPS fields are

numeric, the target event occurs exactly once, and the quarter mapping

is unique. Otherwise state the specific input or mapping issue. Retain a

placeholder row for a missing target event. Report failed checks in

Table 1 and the affected input status; do not silently drop them.


Response excerpts

For each retained event, give one JSON line with date, epsActual,

epsEstimated and lastUpdated as returned, then one JSON line for each

matched income-statement record with date, fiscalYear, period and

filingDate as returned. Omit all other fields.


After the tables, state in one sentence whether all four checks passed.

Do not interpret the figures.

Retrieval results

The three calls returned ten annual estimate records, twenty earnings records and ten quarterly statements. Claude kept one forward record and eight completed events, with no retries and no missing numeric fields, and reported that all four validation checks passed.

Table 1. Retrieval log

Item

Result

Retrieval date and time

2026-10-23 04:18:28 UTC (container clock, read immediately after the three calls completed)

Calls made

3: analyst / financial-estimates (MSFT, annual, page 0, limit 10); calendar / earnings-company (MSFT, limit 20); statements / income-statement (MSFT, quarter, limit 10)

Records returned per call

10 annual records, 2022-06-30 to 2031-06-30; 20 earnings records, 2022-01-25 to 2026-10-28; 10 quarterly records, period ends 2024-03-31 to 2026-06-30

Forward record kept

1: date 2027-06-30

Historical records kept

8 earnings events (2024-10-30 to 2026-07-29); 8 matched income-statement records

Records not used

9 other annual records; 12 earnings records (the 2026-10-28 event with epsActual null, and 11 events dated 2022-01-25 to 2024-07-30); 2 income-statement records with no target event

Missing or non-numeric fields

None in kept records

Retries

0

Table 2. FY2027 annual consensus record

Field

Value as returned

symbol

MSFT

date

2027-06-30

epsAvg

19.74255

epsHigh

20.49608

epsLow

19.00911

numAnalystsEps

31

Table 3. Quarterly earnings events and fiscal-quarter mapping

Event date

Fiscal quarter

Period end

epsEstimated

epsActual

lastUpdated

Input status

2024-10-30

FY2025 Q1

2024-09-30

3.1

3.3

2025-04-24

Complete

2025-01-29

FY2025 Q2

2024-12-31

3.15

3.23

2025-04-29

Complete

2025-04-30

FY2025 Q3

2025-03-31

3.22

3.46

2025-07-30

Complete

2025-07-30

FY2025 Q4

2025-06-30

3.37

3.65

2025-10-30

Complete

2025-10-29

FY2026 Q1

2025-09-30

3.67

4.13

2026-01-29

Complete

2026-01-28

FY2026 Q2

2025-12-31

3.9

4.14

2026-04-28

Complete

2026-04-29

FY2026 Q3

2026-03-31

4.06

4.27

2026-07-29

Complete

2026-07-29

FY2026 Q4

2026-06-30

4.24

4.74

2026-10-23

Complete

All eight events contain numeric estimates and actuals, occur once in the selected set and map uniquely to a fiscal quarter. Completeness does not establish that an estimate and actual share an accounting basis.

The response excerpts below are the fields Claude returned for the retained events and their matched statement records:

{"date":"2024-10-30","epsActual":3.3,"epsEstimated":3.1,"lastUpdated":"2025-04-24"}

{"date":"2025-01-29","epsActual":3.23,"epsEstimated":3.15,"lastUpdated":"2025-04-29"}

{"date":"2025-04-30","epsActual":3.46,"epsEstimated":3.22,"lastUpdated":"2025-07-30"}

{"date":"2025-07-30","epsActual":3.65,"epsEstimated":3.37,"lastUpdated":"2025-10-30"}

{"date":"2025-10-29","epsActual":4.13,"epsEstimated":3.67,"lastUpdated":"2026-01-29"}

{"date":"2026-01-28","epsActual":4.14,"epsEstimated":3.9,"lastUpdated":"2026-04-28"}

{"date":"2026-04-29","epsActual":4.27,"epsEstimated":4.06,"lastUpdated":"2026-07-29"}

{"date":"2026-07-29","epsActual":4.74,"epsEstimated":4.24,"lastUpdated":"2026-10-23"}


{"date":"2024-09-30","fiscalYear":"2025","period":"Q1","filingDate":"2024-10-30"}

{"date":"2024-12-31","fiscalYear":"2025","period":"Q2","filingDate":"2025-01-29"}

{"date":"2025-03-31","fiscalYear":"2025","period":"Q3","filingDate":"2025-04-30"}

{"date":"2025-06-30","fiscalYear":"2025","period":"Q4","filingDate":"2025-07-30"}

{"date":"2025-09-30","fiscalYear":"2026","period":"Q1","filingDate":"2025-10-29"}

{"date":"2025-12-31","fiscalYear":"2026","period":"Q2","filingDate":"2026-01-28"}

{"date":"2026-03-31","fiscalYear":"2026","period":"Q3","filingDate":"2026-04-29"}

{"date":"2026-06-30","fiscalYear":"2026","period":"Q4","filingDate":"2026-07-29"}

Prompt 2: Diagnose comparability and specify the next action

Prompt 2 uses all three tables from Prompt 1 with the release figures below. It completes the diagnostic by identifying the issues and the action each requires, and it makes no additional FMP call.

Objective

Using Tables 1, 2 and 3 from Prompt 1, determine what can and cannot be

established about the comparability of Microsoft's EPS estimates and

actuals. Calculate record-level differences for inspection and the

annual consensus range as separate context. Finish with specific

findings and actions that identify the evidence needed next. Do not

assess forecast accuracy or predict an earnings result.


Reference figures: diluted EPS from Microsoft's earnings releases

Fiscal quarter | GAAP as originally reported | Non-GAAP

FY2025 Q1 | 3.30 | 3.37

FY2025 Q2 | 3.23 | 3.35

FY2025 Q3 | 3.46 | 3.54

FY2025 Q4 | 3.65 | 3.86

FY2026 Q1 | 3.72 | 4.13

FY2026 Q2 | 5.16 | 4.14

FY2026 Q3 | 4.27 | 4.27

FY2026 Q4 | 4.81 | 4.74


Data rules

- Use the supplied FMP tables and issuer EPS references. Do not call FMP

again, invent metadata or replace a returned actual with another EPS.

- Keep annual consensus and quarterly history separate.

- Apply calculations to unrounded values. Display EPS and dollar

differences to two decimals and percentages to one decimal.

- Complete the findings table even if a record has an input problem.

Leave unsupported calculations blank and identify the reason.


Step 1. Record and period checks

Read Table 1's validation results. Check each target event for numeric

estimate and actual values, uniqueness, and a unique fiscal-quarter map.

Report each missing, duplicate or unresolved item by event date.

Complete does not mean comparable.


Step 2. Actual-basis check

For each quarter, classify epsActual:

- GAAP: matches issuer GAAP diluted EPS and differs from non-GAAP.

- Non-GAAP: matches issuer non-GAAP diluted EPS and differs from GAAP.

- Both: the issuer figures are equal and epsActual matches both.

- Not matched: matches neither; do not infer a basis.

Use GAAP as originally reported as the selected reference. Count actuals

matching GAAP or Both separately from actuals matching non-GAAP only. A

non-GAAP figure is not inherently invalid; it differs from the selected

reference for this series.


Step 3. Estimate-basis and timing checks

For every observation, record the estimate's stated EPS definition and

pre-announcement as-of time only if supplied by a documented source.

Otherwise record Not established. In these inputs, both are Not

established for every quarterly estimate. lastUpdated is not evidence of

a pre-release estimate cutoff.

A verified forecast comparison requires a complete, uniquely mapped

record, matching documented estimate/actual definitions, and a

documented estimate timestamp preceding the release. Report how many

observations have this evidence. Do not equate GAAP-matched actuals with

verified pairs.


Step 4. Inspect record-level differences

For each complete, uniquely mapped record:

Absolute difference = |epsActual - epsEstimated|.

Normalized difference (%) = absolute difference / |epsEstimated| x 100.

If |epsEstimated| < 0.10, omit the normalized percentage and retain the

dollar difference. Retain the actual-basis label alongside every result.

These are differences between returned records, not verified errors. Do

not calculate a historical average or label forecast reliability.

For context, count observations with GAAP-matched actuals and valid

normalization denominators against the six-observation minimum selected

for this example's descriptive summary. State that meeting this count

would not establish estimate basis or timing.


Step 5. Annual range as separate context

If the annual fields are numeric, epsHigh >= epsAvg >= epsLow,

numAnalystsEps >= 5, and |epsAvg| >= 0.10:

High-low range = epsHigh - epsLow.

Normalized high-low range (%) = range / |epsAvg| x 100.

Otherwise report the specific field or condition preventing calculation.

Illustrative range labels: Narrow <= 10%; Moderate > 10% through 20%;

Wide > 20%. Coverage: Broad >= 10 analysts; Limited 5 through 9.

Record annual estimate basis as Not established unless documented. Do

not call the range a confidence interval, distribution or probability.


Step 6. Findings and actions

Always complete the diagnostic. Report separately:

- The actual-basis pattern and affected quarters.

- Whether estimate basis and pre-release timing are established.

- Complete records, GAAP-matched actuals, and verified forecast pairs.

- The sample count against the descriptive six-observation minimum.

- What the annual range supports on its own.

For every unresolved item, state the evidence needed and why it matters.

For mixed actuals, retain issuer reconciliations and choose a consistent

actual definition. For unverified estimates, obtain historical snapshots

with documented pre-release timestamps and matching EPS definitions.

Adding quarters cannot by itself resolve unknown estimate metadata.


Output

Table 4. Actual EPS basis check

Columns: Fiscal quarter | Returned actual | GAAP EPS | Non-GAAP EPS |

Actual match | Estimate basis | Estimate timing | Verified forecast pair

Table 5. Annual consensus context

Columns: Measure | Result

Include period, returned average/high/low, dollar and normalized range,

range label, analyst count, coverage and unresolved accounting basis.

Table 6. Record-level differences

Columns: Fiscal quarter | Absolute difference | Normalized difference |

Actual match | Interpretation

Table 7. Comparability findings and actions

Columns: Check | Finding | Required action or supported use

Include input checks, actual basis, estimate basis, estimate timing,

verified pair count, descriptive sample size and annual context.

End with a direct diagnostic finding and the evidence needed next.

Diagnostic results

Claude first confirmed that all eight events are complete, unique and uniquely mapped, then ran the basis, timing and difference checks.

Table 4. Actual EPS basis check

Fiscal quarter

Returned actual

GAAP EPS

Non-GAAP EPS

Actual match

Estimate basis

Estimate timing

Verified forecast pair

FY2025 Q1

3.30

3.30

3.37

GAAP

Not established

Not established

No

FY2025 Q2

3.23

3.23

3.35

GAAP

Not established

Not established

No

FY2025 Q3

3.46

3.46

3.54

GAAP

Not established

Not established

No

FY2025 Q4

3.65

3.65

3.86

GAAP

Not established

Not established

No

FY2026 Q1

4.13

3.72

4.13

Non-GAAP

Not established

Not established

No

FY2026 Q2

4.14

5.16

4.14

Non-GAAP

Not established

Not established

No

FY2026 Q3

4.27

4.27

4.27

Both

Not established

Not established

No

FY2026 Q4

4.74

4.81

4.74

Non-GAAP

Not established

Not established

No

Five actuals match the selected GAAP reference (four GAAP, one Both), three match non-GAAP only, and none is unmatched. No observation is a verified forecast pair. In FY2026 Q2, Microsoft's GAAP EPS of $5.16 and non-GAAP EPS of $4.14 differ by $1.02 because of the OpenAI adjustment, more than four times the $0.24 estimate-to-actual difference in the FMP record, which is why the basis check comes before any reading of the differences.

Table 5. Annual consensus context

Measure

Result

Period

FY2027 (fiscal year ending 2027-06-30)

Returned epsAvg

19.74255

Returned epsHigh

20.49608

Returned epsLow

19.00911

Preconditions

Fields numeric; epsHigh ≥ epsAvg ≥ epsLow; numAnalystsEps ≥ 5; absolute epsAvg ≥ 0.10. All met

High-low range

1.49 (unrounded 1.48697)

Normalized high-low range

7.5% of absolute epsAvg

Range label (illustrative)

Narrow (≤ 10%)

Analyst count

31

Coverage (illustrative)

Broad (≥ 10 analysts)

Accounting basis of estimate

Not established

The calculation uses the unrounded returned values: 20.49608 − 19.00911 = 1.48697, divided by the 19.74255 average. The highest and lowest of 31 estimates are 7.5% apart relative to the average; the record does not show where the other estimates sit inside that range.

Table 6. Record-level differences

Fiscal quarter

Absolute difference

Normalized difference

Actual match

Interpretation

FY2025 Q1

0.20

6.5%

GAAP

Difference between returned records; estimate basis and timing unknown

FY2025 Q2

0.08

2.5%

GAAP

Difference between returned records; estimate basis and timing unknown

FY2025 Q3

0.24

7.5%

GAAP

Difference between returned records; estimate basis and timing unknown

FY2025 Q4

0.28

8.3%

GAAP

Difference between returned records; estimate basis and timing unknown

FY2026 Q1

0.46

12.5%

Non-GAAP

Actual differs from selected GAAP reference; not comparable to the GAAP-matched rows

FY2026 Q2

0.24

6.2%

Non-GAAP

Actual differs from selected GAAP reference; not comparable to the GAAP-matched rows

FY2026 Q3

0.21

5.2%

Both

Issuer GAAP and non-GAAP equal; estimate basis and timing unknown

FY2026 Q4

0.50

11.8%

Non-GAAP

Actual differs from selected GAAP reference; not comparable to the GAAP-matched rows

All eight estimates are above the $0.10 denominator floor. The two largest normalized differences, FY2026 Q1 and Q4, occur on actuals that match non-GAAP rather than the selected GAAP reference. The figures help inspect the returned records, but they do not measure how far a documented pre-release forecast was from a comparable actual, and no average is calculated.

Table 7. Comparability findings and actions

Check

Finding

Required action or supported use

Input checks

8 of 8 records complete, unique and uniquely mapped

Supports record-level inspection only; completeness does not establish comparability

Actual basis

Mixed. FY2025 Q1 to Q4 match GAAP; FY2026 Q3 matches both; FY2026 Q1, Q2 and Q4 match non-GAAP only

Retain issuer GAAP to non-GAAP reconciliations for FY2026 Q1, Q2 and Q4 and choose one consistent actual definition. Without this, differences across the series mix two EPS definitions

Estimate basis

Not established for any quarterly or annual estimate

Obtain documentation of the EPS definition behind FMP epsEstimated and epsAvg. A difference is only meaningful if estimate and actual share a definition

Estimate timing

Not established for any quarter; lastUpdated postdates each event (e.g., 2026-07-29 event, lastUpdated 2026-10-23) and is not a cutoff

Obtain historical estimate snapshots with documented pre-release timestamps. A post-release estimate cannot test a forecast

Verified pair count

0 of 8

No forecast comparison is supported. GAAP-matched actuals are not verified pairs

Descriptive sample size

5 GAAP-matched observations with valid denominators against a 6-observation minimum. Not met

Adding a quarter could meet the count but would not establish estimate basis or timing

Annual context

FY2027 range 1.49, 7.5% of epsAvg (Narrow), 31 analysts (Broad); basis not established

Supports a statement about dispersion among returned FY2027 estimates at retrieval. Does not support comparison with any quarterly difference or a GAAP vs non-GAAP conclusion

Claude's closing diagnostic: the FMP records are complete and correctly mapped, but they do not support a forecast comparison. The actual series switches from GAAP-matched to non-GAAP-matched values in three FY2026 quarters, and no estimate has a documented EPS definition or pre-release timestamp, leaving zero verified forecast pairs. The evidence needed next is Microsoft's GAAP to non-GAAP reconciliations for FY2026 Q1, Q2 and Q4, to fix one actual definition, and dated pre-release consensus snapshots with a documented EPS basis for each quarter.

What to do when the check finds a mismatch

Start by deciding which EPS definition your research needs. GAAP and non-GAAP can both be useful, but their differences must be explicit. In this example, Microsoft's OpenAI adjustments change actual EPS materially in several quarters. Preserve those reconciliations rather than treating every returned actual as the same measure or replacing figures without documenting the change.

Next, obtain the estimate-side evidence. Ask for the EPS definition and the time at which the historical estimate snapshot was recorded. Confirm that the snapshot precedes the earnings release and uses the same definition as the actual you intend to compare. If you plan to summarize observations across quarters, also specify the forecast horizon consistently. Those checks answer a different question from whether two numeric fields are present.

Adding an earlier quarter might meet the selected six-observation count for a descriptive average, but it would not establish the basis or timing of any existing estimate. The useful response to this diagnostic is therefore to resolve the missing comparability evidence before relying on a larger sample.

The annual consensus remains separate. Annual estimates are revised as quarters are reported, and their current high-low range is not calibrated by differences from quarterly estimates at unknown horizons. Microsoft's 7.5% range describes analyst estimates at the retrieval date; it is not a probability that annual EPS will land within it.

Reuse the workflow across a coverage list

For another company, change the symbol, forward period and historical event dates in Prompt 1. Supply that company's diluted GAAP and non-GAAP EPS references in Prompt 2, and confirm that each event maps uniquely to its fiscal period. A consistent actual basis alone is not enough: completeness, valid denominators, estimate definitions and pre-release timestamps still need to be checked.

Keep those checks inside your financial-data validation process. A post-earnings refresh can add the newest event and its basis check, while workflows that combine transcripts, guidance and reported results can retain the accounting-basis label with each record.

For Microsoft, the next quarterly update should repeat the release comparison before adding a new actual to the series. The diagnostic gives you a concrete decision: use the current figures for descriptive context, and obtain matching, dated estimate snapshots before treating their differences as evidence of forecast accuracy.

About the Author
Pranjal Saxena

Financial APIs, Claude MCP, and AI-driven research workflows

Pranjal Saxena writes technical content focused on financial data APIs, Claude MCP workflows, AI-driven research systems, and Python-based market analysis. For FMP, his work centers on turning structured financial data into practical, workflow-driven content for developers, analysts, and fintech teams. He combines experience in data science, NLP, generative AI, and financial API workflows to show how APIs, automation, and AI-assisted systems can support modern financial research and analysis.

Financial data for every need

Real-time quotes and 30+ years of historical data, including prices, fundamentals, and insider transactions — all accessible via API.

Create Free Account