Freeze the input before comparing it

One saved file can make global markets look simultaneous. The input examined here contains eleven instruments, one collection timestamp and a separate observation time for every quote. Reading all the green and red figures as one event would give that file more precision than it contains. This workbook instead treats each row as a dated observation, then performs a small set of reproducible calculations. The input is FinMarket’s saved Yahoo Finance snapshot dated November 5, 2026. It is linked as a frozen file so the examples remain checkable after the website’s current market strip changes.

One file contains several clocks

The file-level updatedAt value is 2026-11-05T02:30:20.579Z. The earliest individual quote is FTSE 100, dated 2026-11-04T16:35:29.000Z; the latest is ETHEREUM, dated 2026-11-05T02:30:24.000Z. Subtracting the earliest timestamp from the latest gives 35,695 seconds, or nine hours, fifty-four minutes and fifty-five seconds. That span comes directly from the stored fields. It does not measure a data outage or an exchange session’s official duration. It describes how far apart these particular observations were recorded.

There is a smaller discrepancy worth retaining. The latest individual timestamp is 3.421 seconds later than the file-level timestamp. Rewriting either value to make the presentation tidier would discard information. The data file alone does not establish why the difference exists. Collection scheduling, clock handling and provider timing require additional evidence. For the relative-time table below, the reference is the latest individual observation. This produces nonnegative offsets and keeps the method separate from an unsupported claim that every quote was already available at the file-level time.

The quoteType field labels 3 rows as close and the remaining 8 as last. These labels help identify what the provider supplied, but they do not by themselves prove that a market is currently open, that a price is executable or that every last quote has the same delay. The FTSE row, for example, retains its own recorded time despite a last label. The defensible comparison is between the stored labels and times. An official trading-hours explanation would require exchange-calendar evidence beyond this input.

Use UTC when reconstructing the ordering. A date displayed in another time zone can change at midnight without any new observation being added. The stored exchange-time-zone field is useful context, but the arithmetic here converts every asOf value to the same UTC timeline before subtracting. It does not mix a locally formatted date with a UTC time string. The visible table preserves the original timestamps, making the ordering inspectable rather than asking a reader to infer freshness from the position of a card.

Keep the denominator attached

The percentage calculation has two inputs: the stored price and the stored previousClose. Subtract previousClose from price, divide the difference by previousClose, then multiply by one hundred. This standardizes the size of a move relative to that row’s own baseline. It does not standardize the time interval represented by every baseline. The file supplies a previous-close label but no observation timestamp for each previousClose value. A common return window therefore cannot be demonstrated from these two fields alone.

For the S&P 500 example, the stored price is 7688.62 and the baseline is 7568.9199. The difference is approximately 119.7001 index points. Dividing that difference by the baseline gives 1.5815%, displayed as 1.58%. The additional decimals in previousClose are part of the source input, not evidence that the displayed current price is accurate to the same number of decimal places. Rounding is postponed until after the calculation.

The Dow Jones row gains approximately 1569.4013 points, while the NASDAQ row gains 364.5042. Their calculated percentage moves are 3.03% and 1.44%, respectively. A point has a different scale in each index. Comparing raw point changes as if they were dollars earned on equal investments would be a unit error. The percentage calculation corrects for each row’s starting level; it still does not create a common observation window or turn either index into a directly held portfolio.

Different scales, different rankings

Small-looking foreign-exchange decimals present the same issue from another direction. The GBP/USD row moves from 1.343418 to 1.3488, a difference of roughly 0.005382. Relative to its own baseline, that is 0.40%. Dismissing the move because its absolute numerical change is close to zero would confuse the quote’s scale with its relative change. The snapshot does not include a customer spread, transaction fee or executable dealing size, so the calculation stops at the recorded comparison.

Crypto prices offer a contrasting example. Bitcoin’s raw difference is approximately 3251.14, versus 155.31 for Ethereum. Ethereum nevertheless has the larger relative move in this file: 6.83%, compared with Bitcoin’s 4.20%. Neither statement requires a forecast. The reversal in the ranking is entirely a denominator effect. It also shows why a table should identify whether it ranks absolute price changes, percentage changes or a separately specified exposure calculation.

The commodity rows are explicitly futures references. A change in their displayed quote is not a calculated cash profit for a contract holder. The dataset does not provide a contract multiplier, position size, fees, financing costs or the exact instrument a reader can trade. Applying an assumed multiplier would introduce an input that this workbook has not verified. The rows remain useful as source-linked market observations, with the futures label intact, while the derived table reports only the numerical change relative to each stored baseline.

A count is not a global market index

The signs supply a simple count: 9 rows are positive and 2 are negative. That makes positive rows 81.8% of this selected list. It is not a measure of the share of worldwide assets that rose. The selection is small, mixes instruments with different economic meanings and assigns one vote to each row. Changing the list changes the count. No market-capitalization, traded-volume or portfolio weight is present in that calculation.

An arithmetic average of the percentage moves would add another choice: equal weighting. Equal weighting is a specification, not a neutral discovery hidden in the data. It would give a currency pair and a stock index the same numerical influence, despite their different units, uses and recorded times. Without a clearly defined objective, the resulting number would be difficult to interpret. This workbook therefore does not label an average as global performance or imply that a tradable portfolio achieved it.

The previous-close denominator deserves the same attention as the current quote. A percentage comparison can be reproduced perfectly and still answer a different question from the one a reader intended. The stored baseline is suitable for verifying the website’s displayed change formula. It does not establish total return, income received, transaction costs or the price at which a particular investor entered. Those questions require additional fields. A transparent method names the question its inputs support instead of extending the calculation into an unsupported performance claim.

Chart windows and rounding

Recorded history adds a second layer of timing. Each instrument has series grouped under the website’s period labels. Before comparing lines, inspect the actual observation dates, interval labels and coverage in those arrays. A shared 1M label does not establish that two arrays begin and end at identical instants. Drawing equally wide charts can conceal that difference. Read the dates of the first and last observations and the source interval before interpreting a steeper line as a stronger comparable return.

Rebasing lines to a common numerical starting value changes their scale, not their sampling. A rebased chart can help compare cumulative relative movement over an explicitly matched window. It cannot repair an unmatched window by itself. Interpolated points would be estimates, not source observations, and should never appear as though the provider recorded them. This workbook creates no replacement history or synthetic intraday points. Its table calculations use only the quote records already present in the frozen input.

Display rounding introduces a smaller, avoidable source of disagreement. Recalculating a change from two rounded screen labels can produce a slightly different result from calculating with the stored values. Keep the original numeric inputs for the arithmetic, then state the precision used for presentation. The tables here round displayed changes and relative offsets, while the provenance records the formulas and inputs. A discrepancy caused by rounding should be distinguished from an unexplained source change or an invalid denominator.

Check the records and reproduce the method

The stale flag answers another limited question. In this frozen file all rows carry a false value, but that flag does not convert a saved quote into a live feed. It is separate from the observation time, the provider’s quote type and the availability of a fresh trade. Readers still need the asOf field. A retained prior observation should keep its original time, and a missing baseline should produce an unavailable calculation instead of an invented percentage. The absence of an error label is not a substitute for checking the record.

A second validation checks arithmetic rather than market direction. Recompute every percentage from the stored price and baseline, then compare it with changePercent. In this snapshot, all eleven comparisons agree to six decimal places. That is a consistency result inside the file, not independent confirmation that each provider quote is correct. A record can contain an internally consistent price and baseline while carrying an inappropriate instrument label or observation time. Keeping arithmetic validation separate from source validation prevents a successful formula check from becoming a blanket assurance about data quality. The reproducible result belongs beside the inputs and tolerance used to assess it.

Choose the reference clock before attaching freshness labels. The table uses minutes before the latest individual quote. Using the earliest quote as a zero point would instead express elapsed minutes since that observation. The labels and numerical offsets would change, while the ordering and total timestamp span would remain the same. A midpoint chosen between the endpoints would be another administrative reference; it would not create an observation at that instant. This distinction is especially relevant when a page presents one collection time above multiple providers or instruments. A clear label tells readers what was subtracted, instead of encouraging them to interpret any convenient reference as the time of a simultaneous global trade.

To reproduce the workbook, download the frozen JSON and verify its SHA-256 fingerprint against the provenance entry. Read price, previousClose and asOf for each row; reject missing or nonpositive denominators; calculate changes without rounding the inputs; and sort timestamps after converting them to the same UTC representation. Comparing a refreshed file to this article requires retaining both fingerprints. A silent replacement of the input would make a correct old calculation appear to be an arithmetic mistake.

The practical output is a set of comparisons with named limits: a timestamp span, relative observation offsets, point differences and baseline-relative percentage changes. None identifies the cause of a market move or predicts its continuation. A reader who carries the time and denominator alongside each number can inspect the global strip without treating it as a simultaneous auction or an investment recommendation. When the input changes materially, the calculations and explanation should be reviewed together before a new version is published.