Skip to content
Algo Trade Analytics Docs

Metrics & Analysis

The Metrics & Analysis section helps you understand your execution quality through quantitative measurements. This guide explains each metric and how to interpret your results.


Definition: Percentage of alert signals that resulted in successful broker fills.

Match Rate = (Matched Alerts / Total Alerts) × 100
Match RateInterpretation
98%+Excellent — rare misses
95-98%Good — occasional issues
90-95%Acceptable — investigate outliers
<90%Concerning — audit required

Definition: Mean time from alert generation to broker fill.

Avg Latency = Sum(fill_time - alert_time) / matched_count
LatencyInterpretation
<200msExcellent — near real-time
200-500msGood — typical for retail
500ms-2sAcceptable — some delay
>2sConcerning — significant delay

Latency components:

  • Network (alert → platform): ~50-100ms
  • Platform processing: ~10-50ms
  • Network (order → broker): ~50-100ms
  • Broker processing: ~10-50ms
  • Exchange execution: varies by order type

Definition: Mean price difference between intended (alert) and actual (fill) prices.

Avg Slippage = Sum(fill_price - alert_price) / matched_count
SlippageInterpretation
<0.05%Excellent — minimal impact
0.05-0.1%Good — acceptable costs
0.1-0.5%Moderate — notable impact
>0.5%High — significant erosion

Definition: Cumulative dollar impact of slippage across all matched trades.

Total Slippage = Sum((fill_price - alert_price) × quantity)

This represents the real-world cost of execution imperfection.

Definition: How much of your intended profit you actually captured.

Retention = (Actual P&L / Intended P&L) × 100
RetentionInterpretation
>99%Excellent execution
97-99%Good — minor leakage
95-97%Acceptable — some costs
<95%Concerning — significant erosion

Breaks down the latency into phases:

PhaseDescriptionTypical Time
SignalAlert generated in TradingView0ms (baseline)
WebhookAlert received by platform50-200ms
ProcessingOrder generated and submitted10-100ms
SubmissionOrder sent to broker50-100ms
ExecutionOrder filled by exchange10ms-∞

Histogram showing distribution of latencies:

What to look for:

  • Tight cluster — Consistent execution (good)
  • Long tail — Occasional delays (investigate)
  • Bimodal — Two distinct behaviors (systematic issue)

The system grades your execution (A-F) based on:

  • Match rate weighting: 40%
  • Latency weighting: 30%
  • Slippage weighting: 30%
GradeMeaning
AExcellent execution across all metrics
BGood with minor improvement areas
CAcceptable but optimization recommended
DConcerns that should be addressed
FSignificant issues requiring immediate attention

The detailed grid shows every alert-fill pair:

ColumnDescription
StatusMatch type badge
Alert TimeWhen signal was generated
Alert PriceIntended execution price
Fill TimeWhen broker executed
Fill PriceActual execution price
LatencyTime difference (ms or seconds)
SlippagePrice difference ($ and %)
FilterPurpose
Show Only ProblemsHide fully matched trades
Match TypeFilter by Full/Entry Only/Exit Only/Unmatched
Latency ThresholdShow only high-latency trades
Slippage ThresholdShow only high-slippage trades
Quick FilterSearch across all columns

Click column headers to sort:

  • By time (chronological analysis)
  • By latency (find slowest)
  • By slippage (find costliest)
  • By status (group by type)

You can select and remove individual trades from your analysis to focus on specific subsets or exclude outliers.

In Comparison Grid:

  • Check the box next to any trade row
  • Select multiple rows by checking multiple boxes
  • Use “Select All” to choose all visible trades

In Alpaca Fills Grid:

  • Check boxes next to fills you want to exclude
  • Select multiple fills at once
  • Selected rows are highlighted

In TradingView Alerts Grid:

  • Check boxes next to alerts you want to exclude
  • Select multiple alerts at once
  • Selected rows are highlighted
  1. Select trades you want to exclude from analysis
  2. Click “Remove selected” button
  3. Selected trades are hidden from calculations
  4. Analysis automatically recalculates without removed trades

What happens:

  • Removed trades disappear from grids
  • Metrics recalculate without excluded trades
  • Charts update to exclude removed markers
  • Comparison data excludes removed pairs

To restore all removed trades:

  1. Click the “Reset” button (appears when trades are removed)
  2. All previously removed trades reappear
  3. Analysis recalculates with full dataset
  4. Metrics return to original values

Use cases:

  • Compare analysis with/without specific trades
  • Test impact of outliers
  • Filter out test or manual trades
  • Focus on specific time periods

Export your complete analysis data for external analysis, record-keeping, or sharing.

The export is a comprehensive JSON file containing:

Metadata:

  • Export timestamp
  • Export version
  • Configuration used

Configuration:

  • Symbol(s) analyzed
  • Date range
  • Comparison settings (time/price tolerances)
  • Selected API key
  • Layout mode
  • Timeframe

Trade Data:

  • Alpaca trade summaries
  • TradingView trade summaries
  • Full comparison pairs with details
  • Unmatched alerts
  • Unmatched fills

Analysis Results:

  • Match statistics
  • Difference summaries (latency, slippage)
  • Portfolio balances (start/end)
  • Portfolio history
  • Removed trade IDs (for reference)
  • File type: JSON (JavaScript Object Notation)
  • Structure: Hierarchical, well-organized
  • Size: Varies based on number of trades
  • Compatibility: Can be imported into Excel, Python, R, or other analysis tools
  1. Complete your alerts vs fills analysis
  2. Click the “Export” button in the page header
  3. File downloads automatically
  4. Save the file for future reference

External Analysis:

  • Import into Excel for custom calculations
  • Analyze in Python/R for statistical analysis
  • Create custom visualizations
  • Perform advanced data mining

Record Keeping:

  • Save analysis results for compliance
  • Maintain audit trail
  • Document execution quality over time
  • Create reports for stakeholders

Sharing:

  • Share data with team members
  • Send to advisors or consultants
  • Provide to broker for review
  • Archive for historical reference

Backup:

  • Keep local copies of important analyses
  • Preserve data before making changes
  • Create snapshots for comparison

✅ Match Rate: 97%

Most alerts executed successfully.

✅ Avg Latency: 320ms

Within normal retail range.

✅ Avg Slippage: 0.08%

Minimal price impact.

✅ Retention: 98.5%

Keeping most intended profits.

Action: Monitor periodically, no immediate changes needed.

⚠️ Match Rate: 88%

12% of signals not executing.

⚠️ Avg Latency: 1.8s

Delays may cause price movement.

⚠️ Avg Slippage: 0.35%

Notable execution costs.

⚠️ Retention: 94%

Losing 6% to execution issues.

Action: Investigate unmatched alerts, review infrastructure, consider order type changes.


Interpretation: Orders are slow but price impact is minimal.

Likely causes:

  • Limit orders (intentionally wait for price)
  • Network delays without market movement
  • Low-volatility instruments

Interpretation: Fast execution but at poor prices.

Likely causes:

  • Market orders during volatility
  • Low liquidity
  • Wide bid-ask spreads

Interpretation: When orders execute, they’re fine — but many don’t execute.

Likely causes:

  • Order rejections
  • Insufficient buying power
  • Alert failures

Interpretation: Execution quality degrading.

Likely causes:

  • Infrastructure issues
  • Market condition changes
  • Account limitations

  1. Check alert configuration — Ensure all signals fire alerts
  2. Verify buying power — Sufficient margin/cash
  3. Review order types — Market vs limit behavior
  4. Check Alpaca status — API health
  1. Network optimization — Stable, fast connection
  2. Reduce processing — Simplify alert payloads
  3. Geographic proximity — Server location matters
  4. Order type selection — Market orders execute faster
  1. Use limit orders — Control execution price
  2. Trade liquid assets — Tighter spreads
  3. Avoid volatility — Don’t trade at market open
  4. Size positions — Smaller orders fill better