The AI trading community building in the open
Coming soon — run your own AI-powered fund.
Your money deserves more than a chat window.
Be Your Own Fund Manager.
Reuse your Claude or ChatGPT subscription — no extra AI bill.
building alphafund… in development AlphaFund is an app where AI agents help you build and run trading strategies. follow on X for updatesOne app to trade them all
AlphaFund brings your exchanges, brokers and data providers together, with more added every release.
- Binance
- Bybit
- OKX
- Hyperliquid
- Alpaca
- Databento
Autonomy levels in AI trading
LEVEL 0 / 5
Levels measure who makes the judgment calls, not whether orders fire automatically.
Manual Trading
▍
Levels adapted from the SAE J3016 levels of driving automation, the scale used for self-driving cars.
Powered by open-source engines
One ecosystem, from data and ML models to AI trading
AlphaFund runs on the PFund ecosystem: free, open-source Python packages you can also use on their own.
import pfund as pf
class MyStrategy(pf.Strategy):
def trade(self, X):
fast = X["close"].rolling(10).mean().iloc[-1]
slow = X["close"].rolling(30).mean().iloc[-1]
if fast > slow and not self.position:
return [self.create_order(side=1, quantity=1)]
return []
engine = pf.BacktestEngine() # pf.TradeEngine() to go live
strategy = engine.add_strategy(MyStrategy())
strategy.add_data("ibkr", "AAPL_USD_STK", resolutions=["1d"])
engine.run()import pfund as pf
import polars as pl
class SMACross(pf.Strategy):
def backtest(self, df: pl.DataFrame) -> pl.DataFrame:
fast = df["close"].rolling_mean(10)
slow = df["close"].rolling_mean(30)
return (
df.create_signal(buy_condition=fast > slow, sell_condition=fast < slow)
.open_position(order_quantity=1)
.close_position(stop_loss=0.05, take_profit=0.1)
.backtest()
)
engine = pf.BacktestEngine(mode="vectorized", data_range="1y")
strategy = engine.add_strategy(SMACross())
strategy.add_data("bybit", "BTC_USDT_PERP", resolutions=["1d"])
engine.run()Write once, trade anywhere
Backtest and trade live with the same code, on any venue pfund connects to.
Backtest to live, no rewrite
Swap one line to take a backtested strategy live.
Vectorized backtesting in one chain
Define signals, entries and exits on a pandas or Polars dataframe, then backtest the whole history at once. No per-bar loop.
$ pip install "pfund[core,torch]"import pfeed as pe
bybit = pe.Bybit()
feed = bybit.market_feed
result = feed.download(
product="BTC_USDT_PERP", # or BTC_USDT_PERPETUAL in full
resolution="1minute", # '1tick'/'1t' or '2second'/'2s' etc.
start_date="2026-01-01",
end_date="2026-01-01",
io=pe.DuckLakeIO(), # store it in your local data lakehouse
)
df = result.data.collect()import pfeed as pe
bybit = pe.Bybit()
feed = bybit.market_feed
feed.stream(
product="BTC_USDT_CRYPTO",
resolution="1tick", # or just 'tick' for tick data
# only DuckLake supports storing streamed data for now, set it to None to skip storing
io=pe.DuckLakeIO(),
callback=lambda msg: print(msg),
)Any provider, your own data lakehouse
Download, stream and store market data from different providers through one API.
Backtest-ready data, from any provider
Every provider's data comes out cleaned, with the same columns, so it's ready for backtesting. Switching provider means changing one line, not rewriting your pipeline.
Live data, stored as it streams
Stream real-time market data through the same interface, handle each message with your own callback, and store everything in your local data lakehouse as it arrives.
$ pip install "pfeed[bybit,ray]"bybit: your data source (a crypto exchange), swap in the one you needray: parallel processing (recommended)