For Freqtrade//on Hyperliquid// Closed beta · Q3 2026
You write the strategy. We do all the other things: provisioning, agent wallets, encrypted keys, config glue, on-chain auth, container restarts, and the 03:14 UTC crashes.
You hand us a Python file. We hand back a container running on Hyperliquid mainnet, with an agent wallet, encrypted keys, monitoring, and restart logic already wired up.
from freqtrade.strategy import IStrategy
from pandas import DataFrame
import talib.abstract as ta
class MeanRevETH(IStrategy):
timeframe = "5m"
stake_currency = "USDC"
stake_amount = 12
stoploss = -0.018
trailing_stop = True
def populate_indicators(self, df: DataFrame, meta: dict) -> DataFrame:
df["rsi"] = ta.RSI(df, timeperiod=14)
bb = ta.BBANDS(df, timeperiod=20)
df["bb_lower"] = bb["lowerband"]
return df
def populate_entry_trend(self, df: DataFrame, meta: dict) -> DataFrame:
df.loc[(df["rsi"] < 32) & (df["close"] < df["bb_lower"]), "enter_long"] = 1
return df
Before a single contract is signed, your .py file goes through an AST scan. Here is the short version of what we reject and why.
Allowed: freqtrade.*, pandas, numpy, ta, ta-lib, technical, scipy, sklearn prediction paths. Need something else? Open an issue with a use case.
per month · forever
Ceteris is paid by Hyperliquid, not by you. When your strategy generates volume, Hyperliquid pays a builder fee to our address. That fee is our business model.
Last March I spent a long weekend trying to get Freqtrade to deploy against a Hyperliquid agent wallet. By Sunday night I had a half-broken Docker compose, three layers of config indirection, and keys in a file I was too tired to remember to back up.
Ceteris is the version of that weekend that takes 47 seconds.
The backend is built. The PRD is on GitHub. We are onboarding the first 50 traders in Q3.
We hand-onboard one cohort at a time. Type your email below and we will print a local preview ticket until the real invite endpoint is wired.
247 tickets issued · cohort 01 opens Q3 2026 · no urgency theater