Run two separate screens with explicit rules
The following example covers U.S. common stocks quoted in USD. Its thresholds are illustrative research choices, not a tested strategy. Define T as the decision time in UTC and retain the exchange time zone. Use the same security, fiscal quarter, EPS basis and currency throughout. Review all rules together in a saved worksheet; these are not advertised as one native Pineify filter.
- The 24-hour estimate-age rule is a chosen freshness limit. It does not prove that the consensus changed recently or that every analyst has updated a forecast.
- A daily bar ending after T is unavailable. At an intraday cutoff, use the preceding completed regular session, even when the screener already displays a live daily value.
- Apply an independent spread, depth and order-size check before any trade. Price and RSI thresholds do not measure execution liquidity.
| Rule | Upcoming candidates | Reported candidates |
|---|
| Event window | Confirmed release time > T and ≤ T + 120 hours. | Actual release time > T - 24 hours and ≤ T. |
| Disclosure status | No release found in a fresh issuer check by T. An empty vendor actual is insufficient. | Issuer release exists and its relevant figures were observed by T. |
| Estimate | Comparable EPS estimate > 0, captured by T and no more than 24 hours old. | Comparable EPS estimate > 0, captured strictly before release and no more than 24 hours before release. |
| Actual EPS and surprise | Do not use either as a selection input. | Actual and estimate available by T; EPS surprise ≥ 10%. |
| Technical review | Latest completed regular daily close ≥ USD 5 and RSI (14) ≥ 50. | Use the same completed-bar conditions; record whether the bar precedes the release. |
| Missing or ambiguous input | Defer the row, record the missing field and check again. | Defer rather than interpreting missing actual EPS as zero. |
Use TradingView dates to seed the list
In TradingView Stock Screener, choose the stock market and add Upcoming earnings date or Recent earnings date. Upcoming Current trading day plus Next 5 days can seed the future window above; Recent Current trading day plus Previous day can seed the reported window. Collect both sets, deduplicate symbols, then check exact timestamps. TradingView defines these date buckets in the symbol exchange time zone, including extended sessions, rather than your local zone. Calendar buckets do not implement a rolling 120-hour or 24-hour test.
- Use the issuer investor-relations announcement to confirm the date and release timing. TradingView marks an approximate chart earnings date with ≈; keep it in a separate provisional list until confirmed.
- A before-market or after-market label is a session category, not an exact publication time. If the event could fall on either side of a cutoff, defer it until the release or timing evidence resolves the ambiguity.
- Record the time-zone name and UTC offset for the event date. For example, October 16, 2026 at 16:30 America/New_York is 20:30 UTC and October 17 at 04:30 Asia/Shanghai. Do not assign it to October 17 in a New York exchange-date filter.
- Keep the fiscal period ending date separate from the announcement date, conference-call time and filing acceptance time. They can describe different events.
The as-of table: what was actually knowable?
These invented observations describe company A, not a real issuer or a provider latency test. The decision cutoff is October 16, 2026 at 15:00 America/New_York (19:00 UTC). The confirmed release is scheduled for 16:30. Each row records both its source timing and when the researcher obtained it. A date printed on a later download does not prove the value was in an earlier decision record.
- Keep source URL or captured document, captured value, unit, fiscal period, GAAP or adjusted basis, source update timestamp, observation timestamp and decision timestamp. Preserve original snapshots when values change.
- For this workflow, usable information must have been public and observed by the decision cutoff. If historical provider-arrival times are unknown, a reconstructed immediate reaction cannot be certified by a current download.
- Provider lastUpdated fields describe an update record. They do not by themselves supply an exact public-release time, the history of estimate revisions or a guaranteed point-in-time consensus.
| Input or event | Source time (New York) | Observed time (New York) | Value | Usable at 15:00? |
|---|
| Fiscal period end | September 30 | October 15, 14:00 | Quarter ending September 30 | Period identifier only; not a disclosure timestamp. |
| Issuer schedule notice | October 14, 09:00 | October 14, 09:05 | October 16, 16:30 release | Yes, confirmed schedule. |
| Earlier consensus snapshot | October 15, 13:55 | October 15, 14:00 | Adjusted EPS USD 1.20 | Archived, but 25 hours old at T; fails our freshness rule. |
| Updated consensus snapshot | October 16, 14:25 | October 16, 14:30 | Same quarter and basis: USD 1.25 | Yes, latest observed version before T. |
| Completed daily bar | October 15, 16:00 close | October 15, 16:05 | Close USD 20; RSI (14) 55 | Yes; October 16 daily bar is still open. |
| Issuer disclosure check | October 16, 14:59 | October 16, 14:59 | No release found; schedule unchanged | Yes, evidence of the checked status at T. |
| Actual earnings release | October 16, 16:30 | October 16, 16:34 | Comparable actual EPS USD 1.50 | No; both publication and observation follow T. |
| Calculated surprise | Inputs complete at 16:34 | October 16, 16:34 | 20% against the USD 1.25 estimate | No; a post-release result. |
Apply the rules to a small candidate set
Keep the same T: October 16 at 15:00 New York. The upper future boundary is October 21 at 15:00. All times below are New York time. Unless stated otherwise, these fictional rows have confirmed timing, fresh comparable positive estimates, a fresh disclosure check, and completed close/RSI values of USD 20/55. Reported rows use an estimate captured one hour before release. No row represents a live stock recommendation.
- The result is A and E for upcoming research, B for reported research, C/D/G for review and F outside the window. Keep these outcomes instead of silently dropping incomplete records.
- A release exactly at T belongs to the reported window only if the required information has also arrived by T. A release exactly 24 hours before T falls outside this example because the lower reported boundary is strict.
- Compare unrounded values: a 9.96% surprise displayed as 10.0%, a USD 4.999 close or RSI 49.99 each fails its respective rule.
| Row | Release or scheduled time | Evidence at T | Decision |
|---|
| A | October 16, 16:30 | Upcoming; latest saved estimate USD 1.25; actual unknown. | Keep in upcoming list; no surprise input. |
| B | October 16, 14:00 | Released; observed at 14:10; estimate 1.00, actual 1.10. | Keep in reported list: exactly 10% surprise. |
| C | Approximately October 19 | Time unconfirmed, despite a positive estimate. | Defer: cannot apply the timestamp rule. |
| D | October 20, 07:00 | Confirmed upcoming; EPS estimate missing. | Defer: required estimate unavailable. |
| E | October 21, 15:00 | Upcoming; close USD 5; RSI 50. | Keep: exactly 120 hours away and at both technical boundaries. |
| F | October 21, 15:01 | Upcoming; all other conditions pass. | Reject: one minute beyond the future window. |
| G | October 16, 14:59 | Released, but actual figures reach this workflow at 15:02. | Defer at T; neither an upcoming row nor an actionable reported match. |
Calculate surprise without moving it backward in time
Define dollar surprise as actual EPS minus the saved pre-release EPS estimate. For this page, percentage surprise = 100 × (actual - estimate) / abs(estimate), provided the estimate is nonzero. Confirm the same fiscal period, currency, split basis and EPS methodology before comparing. TradingView distinguishes As reported EPS from standardized diluted GAAP EPS; an adjusted consensus should not be compared with a different GAAP figure merely because both are called EPS.
- For A, the valid post-release calculation is 100 × (1.50 - 1.25) / 1.25 = 20%. The dollar difference is USD 0.25 per share. Substituting the older 1.20 estimate produces 25%, a different comparison.
- Leakage counterexample: downloading the completed earnings row the next day and selecting A at the 15:00 cutoff because surprise ≥ 10% uses the 16:30 release before it existed. The later price chart cannot repair that invalid selection.
- The estimate revision from 1.20 to 1.25 is 100 × (1.25 - 1.20) / 1.20 = 4.1667%. Both archived snapshots are necessary to establish that change. A current analyst estimate alone cannot prove the previous value.
- With estimate -0.30 and actual -0.20, this absolute-denominator convention gives +33.3333%, meaning a smaller loss. Our sample screen still rejects nonpositive estimates. A zero estimate makes percentage surprise undefined; a missing estimate stays unknown.
- Near-zero estimates can produce large percentages from small dollar differences. Keep the dollar difference beside the percentage, and do not assume another provider uses this page's denominator convention.
Map each step to the fields Pineify actually provides
Pineify Market Screener supports symbol collections and technical columns including Close and RSI 14. Choose the daily interval and verify the completed bar on TradingView before applying this example. The current Market Screener catalog does not supply an earnings-date, disclosure-status, consensus-revision or EPS-surprise filter. Maintain those conditions in your dated research record.
- The earningsReport tool currently permits a cached response for 24 hours. The active Market Screener refresh interval is 60 seconds, but that is a UI retrieval interval, not a guarantee of fresh exchange or earnings data. Check publication, provider update and actual observation times separately.
- A missing report can reflect delayed ingestion, incomplete coverage or an unsuccessful request. For time-sensitive classification, verify the issuer release rather than repeatedly treating an empty response as evidence that nothing happened.
- Research prompt: For these exchange-qualified tickers, identify the fiscal quarter, issuer-confirmed release date and time zone, actual publication timestamp if released, and comparable EPS estimate and actual. Link original releases, report retrieval time, distinguish current estimates from archived snapshots, and mark every missing or ambiguous field. Apply my supplied cutoff without using later releases.
| Need | Available step | Boundary |
|---|
| Price and RSI review | Market Screener: close and rsi14 on a selected timeframe. | A current snapshot may represent an incomplete daily bar. Verify barTime and receivedAt. |
| Actual versus estimated earnings | AI Finance Agent earningsReport: date, epsActual, epsEstimated, revenueActual, revenueEstimated and lastUpdated. | Current retrieved records do not prove what was available at a historical cutoff. |
| Consensus context | AI Finance Agent analystEstimates: period, EPS average/range and analyst counts where available. | A period date is not an estimate publication timestamp; the tool is not an archived revision series. |
| Release timing and missing evidence | Ask Finance Agent to locate issuer releases and compare their source links with the record. | Verify the issuer page directly; leave unconfirmed timing or unavailable estimates unresolved. |
| Candidate retention | Save supported symbols in a Market Screener collection and retain the worksheet separately. | A saved collection is not an immutable historical earnings snapshot or a backtest. |
Save the decision, then confirm each chart
Open the matching exchange-qualified symbol in TradingView, enable Earnings under chart Settings > Events and use standard candles. Match the session, currency and adjustment basis to the worksheet. Confirm the latest completed daily close and RSI, then record whether the displayed earnings marker falls before or after that bar. A marker placed on a calendar date does not show that its result was known at the open.
- Save T, the window boundaries, all thresholds, the raw source observations, accepted/rejected/deferred rows and the exact reason for each outcome. Re-running saved filters later may return a different set.
- For reported B, a previous-day daily bar establishes the pre-event technical context. To require post-release momentum, define a later completed bar and a new cutoff before inspecting the outcome; do not silently change the original screen.
- Read guidance and the release itself before interpreting a beat. A price can fall despite positive EPS surprise, and a scheduled event can move. This workflow produces a research shortlist, not an order or a return forecast.