Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use when writing a high-turnover intraday strategy on Superior Trade — anything described as scalping, momentum bursts, fast in/out, RSI thrust, volume spike entry, 5-minute strategy. Note this template was unprofitable in our reference backtest (33% WR, -0.34%); use it as a structural template, not a recommendation.
.claude/skills/superior-trade-scalping/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-08 | ✗→✓ | ▲ Improved | 12% | 0% |
| case-14 | ✗→✓ | ▲ Improved | 48% | 0% |
| case-01 | ✗→✓ | ▲ Improved | -28% | 0% |
| case-03 | ✗→✓ | ▲ Improved | -3% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 15% | 0% |
A user asks for a scalping strategy, "fast in/out", "5m strategy", "ride the thrust", "buy when volume spikes". Single-pair, tight stops, time-stopped trades.
The reference backtest below was unprofitable (33% WR, −0.34% PnL, Sharpe −5.6) on SOL 5m over April 2026. The strategy executes correctly — it's not broken — it's just a losing parameter set on this window. The 0.6% target / 0.4% stop ratio needs ~41% hit rate to break even before fees, which the entry filter didn't deliver. Do not deploy as-is. Tune the entry threshold and validate before recommending to a user.
This skill exists as a structural template for high-turnover momentum entries. Real edge requires parameter search, regime filtering, or a different signal.
| Window | SOL/USDC:USDC 5m, 2026-04-01 → 2026-05-01 (30 days) | |---|---| | Trades | 76 | | Win rate | 33% | | Wallet PnL | −0.34% | | Sharpe | −5.6 | | Backtest ID | 01kqypvbmjjhqjn3ae8bgqr9p0 |
pythonfrom freqtrade.strategy import IStrategy from datetime import datetime import pandas as pd import talib.abstract as ta class SolScalpMomentumStrategy(IStrategy): minimal_roi = {"0": 0.006} # 0.6% profit target stoploss = -0.004 # 0.4% stop trailing_stop = False timeframe = "5m" process_only_new_candles = True startup_candle_count = 100 can_short = False def populate_indicators(self, dataframe: pd.DataFrame, metadata: dict) -> pd.DataFrame: # Session VWAP approximation over the last 288 bars (~24h). tp = (dataframe["high"] + dataframe["low"] + dataframe["close"]) / 3.0 pv = tp * dataframe["volume"] dataframe["vwap"] = pv.rolling(288).sum() / dataframe["volume"].rolling(288).sum() dataframe["rsi"] = ta.RSI(dataframe, timeperiod=14) dataframe["vol_avg20"] = dataframe["volume"].rolling(20).mean() dataframe["vol_thrust"] = dataframe["volume"] / dataframe["vol_avg20"] return dataframe def populate_entry_trend(self, dataframe: pd.DataFrame, metadata: dict) -> pd.DataFrame: dataframe.loc[ (dataframe["close"] > dataframe["vwap"]) & (dataframe["rsi"] > 70) & (dataframe["vol_thrust"] > 2.0), "enter_long", ] = 1 return dataframe def populate_exit_trend(self, dataframe: pd.DataFrame, metadata: dict) -> pd.DataFrame: dataframe.loc[(dataframe["rsi"] < 50), "exit_long"] = 1 return dataframe def custom_exit(self, pair: str, trade, current_time: datetime, current_rate: float, current_profit: float, **kwargs): # Time stop at 12 minutes (~3 bars on 5m). elapsed = (current_time - trade.open_date_utc).total_seconds() if elapsed >= 12 * 60: return "time_stop_12m" return None
json{ "exchange": { "name": "hyperliquid", "pair_whitelist": ["SOL/USDC:USDC"] }, "stake_currency": "USDC", "stake_amount": 100, "timeframe": "5m", "max_open_trades": 1, "stoploss": -0.004, "minimal_roi": { "0": 0.006 }, "trading_mode": "futures", "margin_mode": "cross", "entry_pricing": { "price_side": "same" }, "exit_pricing": { "price_side": "same" }, "pairlists": [{ "method": "StaticPairList" }] }
| Knob | Effect | |---|---| | rsi > 70 | Stricter (> 80) → fewer entries, only the strongest thrusts. | | vol_thrust > 2.0 | Tighter (> 3.0) → only volume blowouts; very rare. | | 0.006 ROI | Wider target → more time in trade, more tail risk. | | 0.004 stop | Tighter stop → more stops out, lower per-trade loss. | | 12 * 60 time stop | Faster timeout → more trades but lower edge per trade. |
Three structural issues in the reference parameters:
rsi < 30 + vol_thrust > 2.0) for a fade entry is worth testing.VolumePairList increases hit count, lets the law of large numbers help.Practical refinements before suggesting to a user:
1h close > 1h ema_50).fees-optimizations.startup_candle_count too low. The 288-bar VWAP needs 288 bars of warmup; default 30 produces NaN VWAP for the first 24h.docs/standard-strategies-audit.md, backtest 01kqypvbmjjhqjn3ae8bgqr9p0fees-optimizations for fee-aware sizing of tight-target strategies.| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-08 | fail→pass | 20,236 | 11,185 | -45% | 1 | 1 | 0% | 3,446 | 3,863 | +12% | 0 | 0 | — |
case-14 | fail→pass | 13,137 | 9,271 | -29% | 1 | 1 | 0% | 2,045 | 3,024 | +48% | 0 | 0 | — |
case-01 | fail→pass | 34,611 | 18,651 | -46% | 1 | 1 | 0% | 6,695 | 4,791 | -28% | 0 | 0 | — |
case-02 | fail→fail | 25,275 | 15,517 | -39% | 1 | 1 | 0% | 4,511 | 4,206 | -7% | 0 | 0 | — |
case-03 | fail→pass | 28,461 | 15,730 | -45% | 1 | 1 | 0% | 5,165 | 5,010 | -3% | 0 | 0 | — |
case-04 | pass→pass | 45,268 | 25,083 | -45% | 1 | 1 | 0% | 7,255 | 6,359 | -12% | 0 | 0 | — |
case-05 | pass→pass | 29,361 | 24,930 | -15% | 1 | 1 | 0% | 4,269 | 5,511 | +29% | 0 | 0 | — |
case-06 | pass→pass | 24,849 | 19,354 | -22% | 1 | 1 | 0% | 4,545 | 4,979 | +10% | 0 | 0 | — |
case-07 | pass→pass | 24,288 | 26,231 | +8% | 1 | 1 | 0% | 4,800 | 6,442 | +34% | 0 | 0 | — |
case-09 | fail→fail | 8,347 | 6,940 | -17% | 1 | 1 | 0% | 1,354 | 2,883 | +113% | 0 | 0 | — |
case-10 | pass→pass | 15,571 | 13,816 | -11% | 1 | 1 | 0% | 3,028 | 3,784 | +25% | 0 | 0 | — |
case-11 | fail→pass | 17,023 | 7,166 | -58% | 1 | 1 | 0% | 2,618 | 3,007 | +15% | 0 | 0 | — |
case-12 | pass→pass | 16,776 | 8,676 | -48% | 1 | 1 | 0% | 2,656 | 3,180 | +20% | 0 | 0 | — |
case-13 | fail→pass | 14,986 | 4,732 | -68% | 1 | 1 | 0% | 2,710 | 2,615 | -4% | 0 | 0 | — |
case-15 | pass→pass | 17,872 | 16,983 | -5% | 1 | 1 | 0% | 3,129 | 4,514 | +44% | 0 | 0 | — |
case-16 | fail→pass | 18,910 | 13,357 | -29% | 1 | 1 | 0% | 2,961 | 3,389 | +14% | 0 | 0 | — |
case-17 | fail→pass | 13,848 | 14,667 | +6% | 1 | 1 | 0% | 2,490 | 4,474 | +80% | 0 | 0 | — |
case-18 | pass→pass | 19,648 | 16,288 | -17% | 1 | 1 | 0% | 2,893 | 4,445 | +54% | 0 | 0 | — |
case-19 | pass→pass | 13,311 | 2,882 | -78% | 1 | 1 | 0% | 2,127 | 2,186 | +3% | 0 | 0 | — |
case-20 | fail→pass | 18,607 | 9,485 | -49% | 1 | 1 | 0% | 3,038 | 3,348 | +10% | 0 | 0 | — |
case-21 | pass→pass | 18,274 | 6,398 | -65% | 1 | 1 | 0% | 2,823 | 2,907 | +3% | 0 | 0 | — |
case-22 | pass→pass | 7,296 | 3,264 | -55% | 1 | 1 | 0% | 1,294 | 2,229 | +72% | 0 | 0 | — |
case-23 | fail→pass | 13,363 | 2,792 | -79% | 1 | 1 | 0% | 2,381 | 2,110 | -11% | 0 | 0 | — |
case-24 | pass→pass | 11,887 | 2,697 | -77% | 1 | 1 | 0% | 1,802 | 2,082 | +16% | 0 | 0 | — |
case-25 | fail→pass | 4,689 | 3,430 | -27% | 1 | 1 | 0% | 707 | 2,107 | +198% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 25 cases were attempted. The headline lift of +44 percentage points is the difference between those two pass rates over the 25 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.