Strategies
Freqtrade AwesomeMacd (berlinguyinca), faithful 1h long-only port on NEARUSDT spot
Outcome: Abandoned
AwesomeMacdNearSpot
Outcome Summary
This run ported Freqtrade's AwesomeMacd unchanged to NEARUSDT spot on 1h bars, as a replication test rather than a predicted edge. The 6-year backtest shows the port follows the source rules, but the signal carried no information: 462 trades averaged 0.093% each, profit factor was 0.923, Sharpe was -0.59, and modeled impact drove the account to zero in December 2022. The backtest reviewer abandoned the run after one iteration because it was below the spot fee floor and lost money even before impact, so optimization and later stages were not reached. The reviewer also flagged an unverified engine issue for review: trades kept opening after the equity curve hit zero.
Hypothesis
BINANCE_SPOT is the right venue for a long-only, no-leverage strategy, and spot proposals have the higher survival rate. NEAR is unused in the corpus, so this avoids the over-tested BTC series. No supplementary feed is needed.
Implementation
Faithful port of Freqtrade AwesomeMacd (berlinguyinca) on NEARUSDT Binance spot 1h, long-only. Buys when the Awesome Oscillator (SMA5-SMA34 of median price) crosses up through zero (ao>0, previous ao<0) while the MACD line (EMA12-EMA26) is positive. It sells on the mirror condition (macd<0, ao<0, previous ao>0). A bracket holds the 10% minimal_roi take-profit and the -25% stoploss intrabar. Each entry uses 95% of equity, one position at a time.
Rules, indicator definitions (simple-MA AO on median price, TA-Lib-style SMA-seeded EMAs for the MACD line) and defaults follow the source line for line. ADX and the MACD signal/histogram are computed in the source but never used in a rule, so they are omitted. The ROI and stoploss are a venue-matched bracket placed at entry, so they fire inside the bar, as in Freqtrade's backtest. should_exit only handles the exit signal. calculate_signal returns AO as % of price as a continuous signal, and the cross/MACD gate lives in should_enter/should_exit. This tests a replication: the hypothesis's own arithmetic puts gross edge near the 0.20% spot round trip.
Verification Results
Optional: seed the fast EMA with the SMA of closes[slow-fast : slow] to match TA-Lib exactly. No behavioural change is expected after warm-up.
TA-Lib's MACD seeds the fast EMA with an SMA over the window that ends where the slow EMA's seed ends (both outputs start at the same index). Here the fast EMA is seeded on the first 12 closes. The difference decays geometrically, is negligible once warm-up finishes (min_bars 60, and the catch-up loop feeds every buffered bar on the first call), and only affects the first few hours of history and the warm-up after each walk-forward boundary reset.
None required. Optionally add freqtrade_fee to the fixed plan so the TP derivation is pinned explicitly.
take_profit_pct is 0.102102 (10.21% on price), not 10%. That is the Freqtrade net-of-fees ROI exit rate, open*(1+roi+fee)/(1-fee), with fee 0.001, and it is a correct translation of minimal_roi {"0": 0.10}. The constructor enforces it against roi_pct and freqtrade_fee. freqtrade_fee is not in research_contract.fixed, so it is noted here for traceability only.
The sandbox (832 days, 172 closed trades, unoptimized) shows avg_trade_return_pct -0.25% against the 0.20% spot round trip, PF 0.83 and a 94.5% drawdown. Commission is only 7.7% of gross, so the gross edge itself looks negative or flat. All profit came in the stressed-vol tercile. This is in line with the hypothesis's own estimate (~+0.1% gross per trade). Every parameter is frozen (tunable is empty), so optimization cannot change the result. The full-history backtest should decide this faithful replication. Check first whether the year-by-year mean trade return is also negative on the full history.
Backtest Review
- Sharpe
- -0.59
- Total return
- -100.00%
- Max drawdown
- 100.00%
- Trades
- 462
- Win rate
- 38.3%
- Profit factor
- 0.92
Trades match the source rules. All 462 entries are long-only AO zero-cross-up entries with MACD > 0. Exits come from the +10% ROI leg (winners cluster near +9.3%), the -25% stop (losers cluster near -25.5%) or the signal cross. The port is faithful.
Large sample: 462 closed trades over about 6 years, metrics_reliable true, clean input audit.
Below the spot fee floor and loses money: avg_trade_return_pct is 0.093% against the 0.25% BINANCE_SPOT review floor. PF is 0.923, Sharpe -0.59, executed-signal IC 0.0009 (t=0.21), so the signal carries no information. Fees are not the cause: commissions are only 6.6% of gross.
QA's concern holds on the full history. Year-by-year mean trade return is +3.74% (2020), +0.88% (2021), -1.39% (2022), +0.26% (2023), +0.65% (2024), -1.63% (2025), +1.14% (2026). Summed trade PnL before modeled impact is about -$388k, driven by -25% stop hits (e.g. -$141k on 2025-02-03 and -$136k on 2025-10-10). The bracket's payoff structure is the losing part: winners are capped at +10% and the stop is 2.5x that size.
Modeled impact is 183% of gross (about $853k) and capacity_usd is only about $29.8k. At this sizing, NEAR spot on 1h bars is too illiquid, and the reported equity hit 0 on 2022-12-08 (liquidated). The strategy is also beta-shaped in its winning years: 2020-21 gains came alongside NEAR's bull run.
Possible ledger inconsistency, not independently verified: the reported equity curve is 0 from Dec 2022, yet trades keep opening at about $130k-$550k notional until 2026. Sizing evidently reads an equity figure that excludes the folded impact cost. Treat this as a symptom for engine review. It does not change the verdict, because trade-level PnL is negative even before impact.
Outcome Summary
Fees were not the problem (commissions were only 6.6% of gross); the losses came from capping winners at +10% while letting losers run to a -25% stop, which cannot pay at a ~38% win rate, and 95%-equity sizing on illiquid NEAR spot added severe impact costs.
The backtest review voted abandon before optimization (no_edge: negative_expectancy). Average trade return was below the 0.25% BINANCE_SPOT floor, and summed trade PnL was about -$388k even before impact. All parameters were contract-fixed, so optimization could not change the result.
A faithful port of Freqtrade's AwesomeMacd (berlinguyinca) to NEARUSDT Binance spot 1h bars: go long when the Awesome Oscillator crosses up through zero while the MACD line is positive, exit on the opposite cross, with Freqtrade's default +10% ROI and -25% stoploss and 95% equity sizing.
Over 462 long trades from Oct 2020 to Oct 2026, the average trade returned 0.093% of notional, with a 38.3% win rate, profit factor 0.923, Sharpe -0.59 and signal IC 0.0009 (t=0.21). Total return was -100%: with modeled impact (183% of gross, capacity about $29.8k), the account was liquidated on 2022-12-08.
Analysis
AwesomeMacd
Analysis
AwesomeMacd.py
AwesomeMacd.cs
Backtest and paper results are hypothetical. Trading involves risk of loss.