Skip to content
Algo Trade Analytics Docs

Configure Alerts vs Fills Matching

Basic or Professional

Matching settings define which records are eligible to pair. They are an investigation boundary, not a quality score. Record them with every saved result.

In Alerts vs Fills:

  1. Select one Alpaca connection.
  2. Enter one symbol. The page starts with TSLA, so replace it when reviewing a different instrument.
  3. Choose a date and time range that contains both alert and fill records.
  4. Choose Webhook or CSV as the TradingView source.
  5. For a CSV with timestamps that do not include a timezone, select the timezone that produced those timestamps. local means the browser timezone.

Start with a single trading session when diagnosing a new mismatch. A smaller scope makes timezone errors, missing legs, and duplicate records easier to see.

SourceUse it whenCheck before matching
WebhookAlgo Trade Analytics captured the live alert payloadsThe endpoint was active and the selected window contains those records
CSVYou are reviewing an exported TradingView trade listThe header row parsed, timestamps use the selected timezone, and the symbol matches the Alpaca records

CSV import preserves the source columns. Use a TradingView export rather than a hand-authored five-column example; see the TradingView CSV workflow.

The page resets matching controls when it opens:

SettingStarting valueMeaning
Maximum Time Difference200 secondsThe latest eligible broker record after the TradingView event
Max Price Diff5%Maximum absolute percentage difference between alert and broker prices
Time unitSecondsThe time control can also be expressed in milliseconds

CSV timestamps can have minute-level precision. The matcher therefore applies at least a 60-second window to CSV input, even if the visible time setting is lower.

These values are neutral product defaults, not recommended limits for a market, strategy, or order type.

For each TradingView row, the matcher:

  1. Uses the selected Alpaca symbol. If the TradingView row names a different symbol, that row is rejected; rows without a symbol inherit the loaded symbol.

  2. Maps the TradingView entry or exit and long or short direction to the corresponding broker position intent.

  3. Rejects broker candidates whose matching timestamp is before the TradingView event.

  4. Chooses the closest remaining candidate by time within the configured window.

  5. Accepts the pair only if its type, direction, time difference, and price difference satisfy the configured boundary. A broker record is consumed once it is successfully paired.

The matcher uses the broker submission timestamp when it exists and otherwise the fill timestamp. The page also reports fill timing and quantity differences, but quantity is not currently a match criterion.

  1. Pick one alert and broker record that you can verify outside the aggregate metrics.

  2. Correct the symbol, timestamp timezone, and entry/exit direction before changing tolerances.

  3. Use the smallest time and price boundaries that include the explainable pair.

  4. Widen one dimension at a time. After each change, inspect whether unrelated records began pairing.

  5. Repeat with several records from the same execution context. Save the chosen settings and window with the result.

If everything remains unmatched, do not keep widening indefinitely. Compare raw source rows for missing alerts, missing fills, symbol aliases, reversed direction, or records outside the selected range.

GroupWhat it establishes
Full MatchBoth entry and exit rows for the trade number paired successfully
Entry OnlyAn entry paired; no paired exit is present in the comparison
Exit OnlyAn exit paired; no paired entry is present in the comparison
Unmatched alertA TradingView row did not find an eligible broker record
Unmatched fillA broker record remained after TradingView rows were processed

These groups identify records to investigate. They do not by themselves prove why an order was absent, delayed, or filled at a different price.