“I trade London” is a useful label, but it is not an hour-by-hour performance map. A session can contain openings, scheduled events, overlaps, quiet intervals, and closing flows. Aggregating them into one result can hide differences—but splitting too aggressively can manufacture patterns from noise.
The goal is therefore not to discover a universally “best hour.” It is to build a reproducible map of your entries, costs, exposure, and outcomes, then test whether any observed hour effect survives another sample. The result may justify a schedule experiment; it does not prove that a clock time causes profitability.
1. Lock the Time Contract Before Grouping Trades
Time analysis breaks when one field quietly means several things. Write the contract beside the report:
- Timestamp: use entry time for entry-decision analysis. Keep exit time and duration separately for exposure and management questions.
- Canonical zone: convert the analysis field to UTC while preserving the original timestamp, original zone, and source offset.
- Daylight-saving policy: decide whether buckets represent fixed UTC hours or local exchange/session clocks. Do not switch conventions mid-sample.
- Outcome: use reconciled net P&L after available fees and financing, with missing cost coverage disclosed.
- Population: declare accounts, instruments, strategy versions, and date range. Exclude nothing because it makes a bucket look cleaner.
- Decision unit: distinguish trades from opportunities. Ten entries in one hour do not prove that the hour is better if far more valid setups appeared elsewhere.
Entry-time classification answers, “When did I decide to enter?” It does not assign every later management decision to that hour. A trade spanning several windows can remain in the entry bucket while duration, exit hour, and maximum exposure are analyzed on separate views.
2. Build the Broad Session Baseline First
Start with broad, non-overlapping buckets that cover the hours you actually trade. Their names are labels, not universal market laws. Record the exact boundary table with the report so “London” means the same thing next month.
For each session show trade count, active days, net result, average and median result, gross profit and loss, fees covered, and drawdown path. The companion session comparison guide explains why the highest total P&L can simply be the bucket with the most exposure.
| Question | Minimum evidence to display | Common misread |
|---|---|---|
| Where did most net P&L occur? | Net result plus trade count and active days | Calling the busiest session the best |
| Where was a typical trade strongest? | Mean, median, dispersion, and cost coverage | Letting one outlier define the session |
| Where was risk concentrated? | Loss distribution, drawdown path, and exposure | Comparing returns without comparable risk |
| Is the label complete? | Missing timestamp and unclassified-trade counts | Dropping unknown rows from the denominator |
A negative or mixed session can still deserve deeper inspection if it contains enough recurring decisions. A positive session can be too sparse or concentrated to support an hour-level rule. The baseline chooses where to investigate; it does not authorize a schedule change.
3. Decompose Sessions Into Predeclared Hour Windows
Choose a bucket width that matches the decision. One-hour buckets offer detail but fragment the sample; two-hour buckets pool more evidence but can hide a short transition. Start with a resolution you can support and keep it fixed for the first comparison.
Do not invent descriptive stories such as “opening flow” or “fatigue” from the chart alone. First record what the data says: one bucket has a different distribution, concentration, or cost profile. Market structure, news timing, execution quality, trader availability, and pure sampling variation are competing explanations.
Keep day-of-week beside the hour view because calendar concentration can masquerade as a time effect. The best and worst trading days analysis gives the matching day-level controls.
4. Read a Bucket as a Distribution, Not a Win Rate
A useful hour row carries enough context to challenge its headline number:
| Field | What it answers | Required caution |
|---|---|---|
| Trades / active days | How much observation and calendar coverage exists? | Many trades on one day are not many independent periods |
| Net P&L / average / median | What did the bucket contribute and what was typical? | Currency totals need comparable capital and risk |
| Average win / average loss | How did payoff structure differ? | Missing or partial outcomes can distort both |
| Profit concentration | How much depends on the largest trade or day? | A concentrated positive bucket is fragile evidence |
| Fees and slippage coverage | Is the result net of known execution costs? | Unknown costs require an incomplete label |
| Uncertainty interval or resample range | How unstable might the estimate be? | No universal trade count guarantees confidence |
There is no honest universal threshold such as “this many trades makes an hour valid.” Required evidence depends on variance, clustering, strategy changes, effect size, and the cost of acting incorrectly. Sparse buckets can be shown descriptively; stronger schedule claims need stability across dates and later observations.
5. Add Cross-Filters Without Building a Tiny-Sample Winner
Cross-filtering can explain an aggregate, but every added dimension creates smaller cells and more chances to find an accidental winner. Add one dimension at a time:
- Hour × setup: tests whether a strategy version, rather than the hour alone, explains the difference.
- Hour × weekday: checks calendar concentration and recurring event timing.
- Hour × instrument group: separates market schedules and cost structures.
- Hour × direction: describes long/short asymmetry without assuming why it exists.
- Hour × rule adherence: tests whether execution quality, not market time, is the main distinction.
Predeclare the comparisons you care about. Report empty and inconclusive cells. If you scan every hour, day, setup, symbol, and direction, treat the best-looking combination as a hypothesis generated by the search—not a validated edge.
6. Use Filtered Equity Curves as a Diagnostic, Not “Visual Proof”
Separate cumulative curves can reveal when a result was earned, whether one event dominates it, and whether different buckets deteriorated together. They cannot prove causality. Normalize the curves to a common start and show trade markers or observation dates so a smooth line is not mistaken for continuous exposure.
The equity-curve comparison method covers aligned baselines, contribution views, and outlier removal as a sensitivity check. Do not delete the outlier from the official result; show the full curve beside the diagnostic scenario.
7. Turn the Map Into a Reversible Schedule Test
Use a decision ladder rather than jumping from a colorful heatmap to “trade only this hour.”
- Observe: identify the bucket difference and all missing-data or concentration flags.
- Explain alternatives: list strategy mix, instrument mix, event timing, costs, regime, and behavior as rival explanations.
- Freeze: document the exact bucket, eligible setups, stop condition, and review date.
- Shadow test: record every valid opportunity, including trades you would skip, without changing live risk.
- Validate later: compare subsequent performance and opportunity cost with the frozen rule.
- Adopt, revise, or reject: make the smallest reversible schedule change supported by the new evidence.
Changing size while changing hours makes attribution harder. Test schedule eligibility first; keep the existing risk policy unless that is the variable under study. If the market regime changes, record the break rather than blending incompatible periods. The market-regime guide shows how to label that boundary without retrofitting regimes to outcomes.
Run the Evidence Cycle in TSB
TSB is our product. The current dashboard groups performance by session and can derive Asia, London, or New York labels from entry time when a source does not supply one. In the current server logic those default session buckets are non-overlapping UTC ranges. Custom source labels can also appear, so the report must disclose which classification produced the row.
For finer analysis, preserve entry timestamps and use the hourly and day-by-hour evidence in the scoped trade record. TSB recognizes 328 import profiles and has processed 600K+ imported trades. That scale describes product ingestion—not the sample behind your hour result and not proof that a schedule will improve.
Reconcile timezone, account, costs, duplicates, and missing entries before trusting the map. A lifetime-access route is available alongside the current plan rendered in the server-side provider card. If the evidence set is incomplete, the correct result is incomplete; the system should not manufacture a best hour.
Methodology and Recheck Rules
- Classification: entry time is the primary decision timestamp; exit time and duration remain separate fields.
- Coverage: unclassified timestamps, missing P&L, and incomplete costs remain visible.
- Resolution: bucket width is declared before comparison and reduced only when evidence supports the finer split.
- Uncertainty: no universal sample threshold; claim strength follows variance, independence, stability, and decision cost.
- Validation: observed winners are hypotheses until they survive a later, frozen evaluation window.
- Recheck: rerun after a meaningful batch of new trades, a timestamp/import change, a strategy version change, or a declared regime break—not merely because a calendar page turned.
See the TSB editorial evidence methodology for the boundary between verified facts, first-party observations, inference, hypotheses, and opinion.
Final Verdict: Hours Are a Useful Lens, Not an Automatic Edge
Hour-by-hour mapping is more informative than a session label when the time contract is consistent and the sample can support the added resolution. Its greatest value is diagnostic: it shows where to ask sharper questions about setup mix, opportunity flow, execution cost, and rule adherence.
The strongest output is not “09:00 is best.” It is a versioned statement such as: “Within this declared strategy, market set, and date range, this UTC entry bucket showed a different net distribution; the difference is concentrated or stable to the degree shown, and the frozen schedule rule will be tested on later observations.” That is precise enough to act on and honest enough to survive the next month.