Define an equivalent observation before comparing numbers
Two feeds can report different numbers while each follows its own documented rules. Before deciding that one is wrong, define what an equivalent observation would be: the same instrument, event window, session, currency, price field, coverage, and adjustment basis. Without that definition, a comparison may reward whichever feed happens to match an unstated expectation.
Alpaca's market-data FAQ distinguishes IEX coverage from consolidated SIP data and illustrates differences in eligible trades and volume. This is a concrete example of coverage affecting output, not an endorsement of a provider. The comparison workflow below is an original research framework, not a validated investment strategy. Its goal is to make disagreements explainable and to identify which source can support a particular research question under stated constraints.
Primary-source context: Alpaca: Market Data FAQ.
Build a comparison contract
Create a short specification before downloading test data. Name the instrument identifiers, date range, session boundaries, timezone, fields, adjustment settings, and treatment of corrections. Record whether each source uses the same coverage definition. If they do not, classify which fields can be compared directly and which require a qualified interpretation.
Select cases that exercise the intended workflow: an ordinary session, a corporate-action date where relevant, a quiet instrument, and a session near a calendar boundary. The set need not be large to reveal basic definition problems, but it should not consist only of convenient examples already known to agree. Decide in advance what an unexplained discrepancy would block. A comparison that is merely descriptive has a different standard from one used to justify substituting a production data source.
Investigate discrepancies in a fixed order
Check identity first. Matching ticker strings do not always establish matching instruments across histories, venues, or share classes. Then check units, currency, timestamp conventions, session inclusion, adjustment settings, and coverage. This order is a proposed troubleshooting habit: resolve broad definition mismatches before spending time on tiny numerical differences.
For each discrepancy, preserve both values and the metadata needed to reproduce the requests. Add a classification such as expected coverage difference, timing mismatch, adjustment mismatch, or unresolved. Do not average disagreeing values unless your research design explicitly justifies that transformation. An average can hide the cause without making the result more accurate. If a provider corrects a record, retain the correction note so the comparison remains understandable after a later download changes the evidence.
Worked example: a volume discrepancy
Imagine two hypothetical feeds for the same fictional company and session. Feed A reports 80,000 shares of volume, while Feed B reports 1,000,000. A researcher initially treats the difference as a missing-data error. The metadata show that A covers a limited venue set and B covers a broader consolidated set. The raw totals therefore represent different populations of eligible events.
The researcher does not multiply A's history by 12.5 to make it resemble B. The coverage ratio in one session is not established as stable across time or instruments. Instead, the study records the mismatch and decides that a cross-market activity comparison requires consistently broader coverage. Feed A may still serve a clearly labeled question about its own covered events.
In a separate invented case, closing prices differ by 0.10. The same coverage explanation is considered, but not assumed. The researcher checks session definitions and eligible closing events before classifying the difference. One explained discrepancy does not automatically explain every field in the dataset.
Take this question further: Adjusted vs Unadjusted Stock Prices: Which Series Answers Your Question? Then read Look-Ahead Bias: Keep Future Information Out of Historical Decisions.
Reusable feed comparison checklist
Write the task and equivalent-observation definition. Record identifiers, coverage, session, timezone, units, adjustment policy, correction policy, and request parameters. Select test cases before inspecting the results. Preserve original responses when permitted and keep a log of values that do not reconcile.
For each disagreement, check the comparison contract before calculating an error percentage. Classify explained differences separately from unresolved ones. If an error percentage is useful, define its denominator and how zeros or missing values are treated. Do not convert unavailable observations into zeros simply to make a summary table complete.
Review operational and permitted-use requirements separately from numerical agreement. A feed that matches another on a sample may still lack the delivery reliability, historical depth, or usage permission needed for a proposed task. A technical comparison is not a substitute for checking the applicable documentation and terms.
Create matched observation pairs before measuring differences
Imagine a hypothetical comparison of two feeds for a fictional security identified as Instrument R. The intended observation is the regular-session closing price in one currency, on one date, using the same adjustment convention. Feed A returns 40.10 for that definition. Feed B returns 40.30 but includes a later trading interval. The two numbers can be placed in adjacent cells, yet they are not a matched pair for the stated task. Calculating an error percentage at this stage gives precision to a comparison whose target is still undefined.
Construct a matching worksheet with stable instrument identity, date, session, event definition, currency, units, adjustment basis, and version time. Mark each candidate pair comparable, conditionally comparable, or unmatched, with a reason. Only the first category belongs in a straightforward numerical-agreement summary. Conditional cases may still be informative, but their qualification should remain visible. If one feed cannot supply the requested definition, record that capability gap instead of transforming its output by an improvised factor merely to fill the comparison table. The absent match is itself a relevant finding about task suitability.
Set the matching rules before looking at which source agrees with a preferred chart. A useful exercise includes one deliberate wrong-currency pair, one session mismatch, and one correctly aligned pair with a small rounding difference. Predict their classifications in advance. This separates the ability to identify equivalent observations from the later question of how closely those observations agree. The final report should state the number of candidate pairs, the number successfully aligned, and the reasons others were excluded, so a high agreement percentage cannot conceal that only a convenient fraction of the requested history was actually comparable.
Use denominators that preserve the meaning of a discrepancy
Consider a hypothetical matched closing-price pair of 100.00 and 100.02. The absolute difference is 0.02. Relative to a declared reference of 100.00, it is 0.02%, or two basis points. Another pair differs by the same 0.02 but has a reference of 0.50; its relative difference is 4%. The identical absolute gap has a different proportional meaning. Neither measure alone determines whether the discrepancy matters for the research task, which may depend on rounding, tick conventions, or a derived calculation rather than a universal percentage threshold.
Write the denominator explicitly. Treating Feed A as the denominator does not establish that A is ground truth. If neither source is a reference, label the metric as pairwise disagreement. A symmetric measure can be defined as the absolute difference divided by the average absolute magnitude, provided the denominator is nonzero. That is a chosen descriptive calculation, not a certificate of accuracy. Missing values require a separate category. When a denominator is zero, use an absolute comparison or an explicit undefined state instead of manufacturing a percentage that appears comparable with ordinary observations.
A reusable discrepancy worksheet includes both values, absolute difference, selected relative formula, zero handling, rounding precision, and interpretation. Keep tolerances tied to the intended use. For a display rounded to whole units, a small difference may not change the displayed result; for a threshold rule, the same difference may change classification. Report that downstream effect separately from raw numerical size. Avoid selecting a tolerance after seeing which boundary makes most rows pass. The objective is to explain whether the observed disagreement changes the named calculation, not to maximize a matching-cell score that has no defined analytical consequence.
Distinguish a missing record from a reported zero
Suppose a hypothetical volume comparison has ten expected instrument-date pairs. Feed A returns ten rows, while Feed B returns eight. Of B's eight rows, one explicitly reports zero volume. The two absent rows and the reported zero are different observations. Filling the absent rows with zero would create apparent evidence of no activity where the comparison actually has no record. It would also distort both the coverage summary and the numerical comparison. Keep presence, reported value, and eligibility status as separate fields in the reconciliation.
Build a coverage bridge from expected pairs to requested pairs, returned rows, valid observations, and matched observations. Explain reductions at each stage. A malformed response, unsupported instrument, and session outside the request are different causes that should not collapse into a generic missing label. For this invented example, B has returned rows for 80% of expected pairs, but that statistic alone says nothing about whether the zero is valid or whether the missing rows matter disproportionately. If the absent rows are the exact corporate-action cases needed by the research, the gap may block the task despite otherwise high coverage.
The worksheet should include an expected-record identifier, presence flag for each feed, reported value, missing reason, and follow-up action. Do not assume the feed with more rows is more complete until duplicates and out-of-scope records are separated. A recovery request that returns the same row twice should not increase coverage. Report unmatched observations alongside disagreement statistics rather than removing them from the headline without explanation. This makes the assessment useful for a researcher deciding whether the feed can support a particular study, including whether missingness affects specific dates, instruments, or event types instead of appearing randomly scattered across the sample.
Compare derived outputs as well as individual cells
An original hypothetical study measures distance from a twenty-session closing high. Two feeds agree on nineteen closing values but differ on the remaining value, which happens to be the maximum. A cell-agreement summary reports 95% matching observations. Yet the single disagreement changes the reference high used in every subsequent distance calculation until it leaves the window. This is why the location and role of a discrepancy can matter more than the number of cells involved. Trace disagreements through the actual formulas the proposed research intends to use.
For a simple invented example, the current close is 99 in both feeds. Feed A's historical maximum is 100, giving a distance of negative 1% under the formula current divided by maximum minus one. Feed B's maximum is 102, giving approximately negative 2.94%. If an illustrative screen uses a negative 2% boundary, the two feeds produce different classifications. The boundary is only a demonstration, not a recommended screen. The appropriate investigation is to reconcile the discrepant historical observation and its definition, not to average the two resulting signals into a third unexplained answer.
Create an impact worksheet linking the disagreeing source row to affected windows, calculations, and classifications. Distinguish expected differences caused by scope from unresolved differences among equivalent observations. Preserve a stable method specification while comparing feeds; changing the rule for each source would obscure the substitution question. A feed may be adequate for a broad descriptive chart yet unsuitable as a drop-in replacement for a calculation sensitive to a particular event definition. Reporting that conditional compatibility is more informative than giving the provider an overall quality grade based on many ordinary rows that do not exercise the study's important edge cases.
Write a substitution decision with conditions and stop points
A feed-comparison report should culminate in a decision for a named task. Imagine a hypothetical research project that needs completed daily close observations, split-event handling, and a reproducible historical download. Its sample comparison finds ordinary sessions aligned, one explained session-definition difference, and two unresolved event dates. A defensible conclusion might permit exploratory charts while withholding the claim that the replacement reproduces the established historical calculation. This is a proposed decision framework, not a judgment about any actual vendor. The unresolved cases should remain attached to the task they prevent.
Use a decision worksheet containing required capabilities, observed evidence, unresolved questions, acceptable scope, and conditions for broader substitution. Numerical agreement, operational availability, and permitted use belong in distinct fields because they answer different questions. Do not infer permission to redistribute data from technical access or from matching another provider's values. If the intended use requires contractual confirmation, record its status separately without making legal conclusions from a numerical test. Likewise, a successful small download establishes that request's result, not the reliability of every future request or the historical completeness of every instrument.
Define stop points before switching the data input. An unexplained identity mismatch, missing required event treatment, or unavailable historical definition may justify keeping the existing scope until evidence is obtained. A harmless documented rounding difference may need only a note. Keep the original responses and request specifications where permitted so a later revision can be traced. The final assessment should make clear what can be reproduced, what differs for an understood reason, and what remains unknown. That gives a future researcher a concrete basis for revisiting the decision without mistaking a limited comparison for a universal ranking of data providers.
What agreement and disagreement do not establish
Agreement between two feeds does not prove independent confirmation if they share an upstream source. A small test sample also cannot establish that all instruments, dates, or corporate actions are correct. Conversely, a documented difference in coverage does not make either dataset defective; it limits which conclusions can be drawn from comparing them.
Avoid awarding a universal quality score based on the percentage of matching cells. A few systematic definition errors can matter more than many harmless rounding differences. The useful result is a compatibility assessment for a named task, with explained differences and unresolved limitations. That assessment can justify further testing or a narrower research scope without implying that one provider is always best or that numerical agreement validates an investment hypothesis.
Sources and editorial approach
Sources consulted on 2026-09-19. Examples and checklists are Momentu’s editorial frameworks, not validated strategies for generating returns.
General education, not personalised investment advice. Investing involves risk, including loss of capital. Read our editorial standards.