Pull() kept whichever row for a period arrived first in the array returned by
CalendarValueHistoryByEvent. The terminal does return them oldest first, but
nothing in the API promises that, so the first-print rule quietly depended on
the ordering and would have been wrong without ever failing visibly. It now
keeps the row carrying the lowest revision index, breaking a tie on the
earlier stamp.
Re-running the study produces byte-identical output across all 176 event by
symbol by horizon cells, so no published number changes.
The rows were bare chart labels relying on a monospace font and hand
padded strings to fake alignment. The panel now has a body, a title
strip, ruled bands and alternating row tints, and each row is laid out
as real columns whose widths are measured from the text being shown,
so the table stays aligned at any font size and with any event name.
Filled shapes are all created before any text, because chart objects
paint in creation order and a later row tint would otherwise cover the
row above it. The footer reports the recovered clock offset and its
agreement, and a release due within the hour is called out.
Standardises economic calendar surprises by each indicator's own
dispersion, recovers the broker's daylight saving schedule from price so
each release is anchored to the bar that moved, and regresses the signed
move on the standardised surprise to measure the per-event response.
Includes the study script that reproduces the article's numbers and the
two indicators built on the same engine.