Strategies
Myquant SkyPark: DOT First-Minute Range Breakout with Literal Direction Flags
Outcome: Abandoned
MyquantSkyParkDotFirstMinuteBreakout
Outcome Summary
The Research Lead adapted Myquant's SkyPark first-minute range breakout to DOT perpetuals with UTC daily sessions, keeping the source's literal flag comparisons. After 5 iterations, including a fix that fell back to bar closes when tick data was missing so the full history was evaluated, the backtest produced 2,036 short-only trades. They returned -97.3% with Sharpe -1.83, losing even while DOT fell heavily. The analyst abandoned it at backtest review for negative expectancy, noting that the verdict rejects only the DOT/UTC adaptation, not the original strategy on session-based futures.
Hypothesis
The supplied concrete strategy merits testing independently of historical performance. Long and short eligibility reduces the portfolio's directional concentration. Binance is selected despite its overrepresentation because it supplies long-history one-minute bars and trade ticks needed to preserve this source's event semantics; Hyperliquid's short minute history would materially weaken validation. Corpus concentration is empty, so DOT's individual research share cannot be verified. Options or a cross-venue hedge would change the submitted mechanism.
Implementation
Literal SkyPark first-minute range breakout on DOT futures, with UTC daily reinitialization, flat-only entry, 10% equity exposure and liquidation after the 23:55 bar-start threshold. Available trade ticks take priority; absent ticks use the one-minute LAST close.
Applied only the requested missing-tick repair to previous_code: decision_price now uses bar.close.as_double() when tick_ready is false, and should_enter no longer requires tick_ready. The LAST close represents the latest observed trade price at the bar decision. Direction-flag comparisons, first-minute upr/dwn, flat-only entry, late-entry liquidation, sizing and every fixed contract value remain unchanged. No library filters, stops or alternative triggers were added. Full-history evaluation is required before judging the mechanism.
Verification Results
The smoke window produced 10 closed short positions with -2.351% average net trade return and PF 0.166. Full-history evaluation should assess the literal short-direction rule and modeled impact; these losses do not establish a correctness defect.
Backtest Review
- Sharpe
- -1.83
- Total return
- -97.29%
- Max drawdown
- 97.51%
- Trades
- 2036
- Win rate
- 43.8%
- Profit factor
- 0.66
The iteration-2/4 fix took effect. Bars without ticks now fall back to bar.close, so the full 2020-08 to 2026-09 history is evaluated: 2,036 entries across every year, and the input audit and accounting are valid.
The sample is large and reliable (2,036 closed trades, metrics_reliable=true, end_unrealized_pct=0).
All 2,036 trades are SHORT and long_trades=0. On 24/7 DOT perps, pre_close is the 23:59 one-minute close. The 00:00 open therefore never gaps more than 1% above it, so open_long_flag never fires. The source's literal short branch (first_open > pre_close*(1-0.01)) is true almost every day, so the strategy effectively becomes 'short a break of the first minute's low, hold to 23:55' nearly every day.
Negative expectancy on a large sample: avg_trade_return_pct is -0.69% against a +0.15% BINANCE futures floor. PF is 0.66, win rate 0.44 with avg loss larger than avg win, and Sharpe -1.83 (CI -2.63 to -1.08).
Total return is -97.3% with a 97.5% max drawdown, against a pre-registered 15% limit. Every calendar year is negative (2020 through 2026), and Sharpe is negative in all three volatility regimes.
Costs are not the cause. Commission is only 6.7% of gross, and the gross per-trade edge is already negative (signal IC -0.019, t=-0.89, rejected_no_information).
Buy-and-hold comparison: correlation with DOT is -0.61 and beta -0.17. The strategy lost money even though DOT fell heavily over the window, which a short-biased book should have benefited from. Alpha is -0.50 and information ratio -0.66.
The QA edge concern (shorts losing heavily in the smoke window, PF 0.166) is confirmed by the full-history result.
Analysis
Iteration History
Preserve entry-before-liquidation sequencing, including a qualifying late entry's immediate close. Because FactoryStrategy dispatches either entry or exit per bar, implement the immediate close through an appropriate fill lifecycle hook without leaving the late position open until another bar.
should_enter() suppresses qualifying entries after end_time and clears both direction flags. The hypothesis explicitly preserves the source's literal entry and timed-liquidation rules. Source lines 85–103 check flat-only entry before timed liquidation, allowing a first qualifying breakout after the deadline to open and close in the same callback. Removing that round trip changes trades and costs; it is an additional rule absent from the hypothesis.
Require an observed, point-in-time trade tick before evaluating entry conditions, and verify tick coverage for the tested window.
When no eligible trade tick has been observed, calculate_signal() substitutes the bar close. The hypothesis calls for the latest observed trade price, so a bar-only replay can silently test a different signal input. Subscription flags are correctly enabled, but the supplied sandbox does not establish tick coverage.
Validate DOT trade-tick coverage independently over the evaluated window and report tick age or missing-feed intervals. Preserve the specified latest-observed-price rule rather than substituting bar closes.
tick_ready remains true indefinitely after any historical tick arrives. Consequently, tick_covered_bars measures availability of a prior tick rather than actual tick-feed coverage; missing days could silently reuse an old decision price. The brief does not establish that such gaps occurred.
Track the previous bar timestamp and validate midnight continuity, or obtain the completed previous UTC daily close through a point-in-time-safe mechanism.
Daily pre_close uses the last processed minute close without checking its timestamp. If bars immediately before midnight are missing, this may differ from the intended previous daily close.
Verification failed (Layer 4 — QA review) [class=hypothesis_mismatch]: - [edge_concern] The truncated sandbox reports 10 closed positions with -2.35% average net notional return. This is advisory; full-history performance remains unmeasured. - [critical] The hypothesis explicitly requires bar-triggered decisions using the latest observed trade price. calculate_signal instead assigns price = close_px and deliberately prevents subscribed trade ticks from altering decisions. Consequently, should_enter compares the completed bar close against the first-minute boundaries even when the latest observed tick differs. This substitutes the specified signal input; the developer's coverage-repair rationale does not revise the hypothesis. (line 103) — fix: Use the latest observed trade price available at or before the decision timestamp, with explicit handling of missing tick coverage. Alternatively, obtain a revised hypothesis explicitly authorizing completed-bar-close signals before reviewing this implementation under that specification.
Use the latest observed trade price available at or before the decision timestamp, with explicit handling of missing tick coverage. Alternatively, obtain a revised hypothesis explicitly authorizing completed-bar-close signals before reviewing this implementation under that specification.
The hypothesis explicitly requires bar-triggered decisions using the latest observed trade price. calculate_signal instead assigns price = close_px and deliberately prevents subscribed trade ticks from altering decisions. Consequently, should_enter compares the completed bar close against the first-minute boundaries even when the latest observed tick differs. This substitutes the specified signal input; the developer's coverage-repair rationale does not revise the hypothesis.
Outcome Summary
Overnight-gap signals from session-based futures carry no information on a 24/7 market where the 'previous close' is just the prior minute, so they should be redefined or tested only on venues with real session gaps.
The backtest-review verdict was abandon for negative expectancy: avg_trade_return_pct of -0.69% is far below the 0.15% BINANCE futures floor. The gross edge was already negative (fees were only 6.7% of gross, signal IC -0.019), and with no tunable parameters there was nothing for optimization to improve.
A translation of Myquant's SkyPark strategy to DOTUSDT.BINANCE 1-minute bars: set long/short flags from the first UTC minute's open versus the previous close, enter on a break of that first minute's high or low, and close out at 23:55 UTC.
Over 2,036 closed trades (all short, 0 long) from 2020-08 to 2026-09, it returned -97.3% with a 97.5% max drawdown, Sharpe -1.83 (95% CI -2.63 to -1.08), profit factor 0.66, win rate 0.44 and avg_trade_return_pct -0.69%. Every calendar year lost money.
Analysis
SkyPark
Backtest and paper results are hypothetical. Trading involves risk of loss.