Skip to content
All strategies

Strategies

AAVE–UNI Hyperliquid Closing-Pressure Divergence Pair

Outcome: Abandoned

AaveUniClosingPressurePair

Outcome Summary

AaveUniClosingPressurePair tested whether opposing closing pressure could anticipate relative repricing between AAVE and UNI using equal entry notionals. After four iterations, static verification still rejected self.stop because it overwrote a reserved framework member. The strategy was abandoned before backtesting, leaving its trading edge unevaluated.

Hypothesis

Test whether opposing volume-weighted closing pressure predicts multi-day relative repricing between AAVE and UNI before their returns diverge. Trade synchronized 4-HOUR perpetual bars, long the positive-pressure asset and short the negative-pressure asset with equal entry notionals. Local catalog filenames indicate overlapping history beginning January 2024; actual continuity must be verified. This is an original research hypothesis, not a source replication or an established edge.

Long-only experiments are 82.1% versus a target ceiling of 55%, the largest directional imbalance. Hyperliquid is also underrepresented at 8.5% versus a 20% target. This two-sided, two-asset hypothesis addresses both gaps. Corpus concentration is unavailable, so neither symbol is claimed to be unused. Unlike existing relative-strength rotation, entry requires opposing closing pressure while recent returns remain similar; it does not buy established winners. The supplied library excerpts do not establish this mechanism.

verification_loop: Verification failed (Layer 1 — static analysis): - `self.stop = ...` binds a value over nautilus_trader Strategy member — `stop` is a RESERVED framework name; every later call raises "'<type>' object is not callable" (or the framework loses the member). Use a different attribute name of your own, e.g. `self.stop_value`. (line 23) - Reserved framework names assigned on self: `stop`. Rename EVERY one of them in one pass and check new names against the 'Reserved member names' list in the developer prompt (coder.md) before resubmitting. (line None)

Implementation

Trades synchronized AAVE and UNI 4-hour Hyperliquid perpetual bars with equal entry notionals, buying positive closing pressure and selling negative closing pressure while recent returns remain similar.

Addresses zero-entry feedback by selecting the research-permitted shortest pressure lookback (12 bars) and lowest pressure threshold (0.20). The shorter lookback reduces averaging of opposing pressure and measures return similarity over the same shorter window. Executable logic from previous_code remains unchanged; its docstring changes. All fixed research parameters retain their values and meanings. The previous config was not supplied, so these settings may already have been used in the failed run; this is a proposed parameter adjustment, not a demonstrated repair. Trade frequency and data continuity remain unverified. Required references could not be read because the shell sandbox failed to create /opt/strategy-factory/.agents. Writing the required task-specific outbox JSON also failed; this response contains the complete payload but the file was not created.

Verification Results

Verification failed (Layer 1 — static analysis): - `self.stop = ...` binds a value over nautilus_trader Strategy member — `stop` is a RESERVED framework name; every later call raises "'<type>' object is not callable" (or the framework loses the member). Use a different attribute name of your own, e.g. `self.stop_value`. (line 23) - Reserved framework names assigned on self: `stop`. Rename EVERY one of them in one pass and check new names against the 'Reserved member names' list in the developer prompt (coder.md) before resubmitting. (line None)

Iteration History

Verification failed (Layer 1.5 — hypothesis/config consistency) [class=hypothesis_mismatch]: - optimization_plan fixes leverage at 1.0

Verification failed (Layer 1 — static analysis): - `self.stop = ...` binds a value over nautilus_trader Strategy member — every later call raises "'<type>' object is not callable" (or the framework loses the member). Use a different attribute name. (line 23)

Verification failed (Layer 3 — sandbox backtest): No trades produced Bar type used: AAVEUSD.HYPERLIQUID-4-HOUR-LAST-EXTERNAL, Bars processed: 4843 Diagnostics: should_enter() returned a side 0 times over 4843 evaluated bars -> your ENTRY CONDITION never triggered. Loosen the entry logic / thresholds. Ensure your strategy produces trades with the given data and parameters.

Outcome Summary

Use distinct strategy attribute names and check all assignments against reserved framework members before resubmitting.

After four iterations, the strategy was abandoned in the verification loop because assigning self.stop overwrote a reserved NautilusTrader framework member.

Trade equal-notional long/short AAVE–UNI perpetual positions on synchronized 4-hour Hyperliquid bars, testing whether opposing volume-weighted closing pressure predicts multi-day relative repricing.

No backtest metrics were available because verification failed; backtesting, optimization, analyst review, and risk review were not reached.

Abandon Reason

verification_loop: Verification failed (Layer 1 — static analysis): - `self.stop = ...` binds a value over nautilus_trader Strategy member — `stop` is a RESERVED framework name; every later call raises "'<type>' object is not callable" (or the framework loses the member). Use a different attribute name of your own, e.g. `self.stop_value`. (line 23) - Reserved framework names assigned on self: `stop`. Rename EVERY one of them in one pass and check new names against the 'Reserved member names' list in the developer prompt (coder.md) before resubmitting. (line None)

Backtest and paper results are hypothetical. Trading involves risk of loss.