Skip to content

Traditional Markets

Jesse started as a crypto framework, and everything in these docs assumes crypto unless it says otherwise. This section covers what is different when you work with stocks, forex, indices and futures. Everything not mentioned here works exactly as it does for crypto: the same strategies, indicators, optimization, research tools and dashboard.

What is different

Candles come from a data provider, not from the exchange you trade on. Crypto exchanges hand out their own history, so importing candles and trading happen on the same venue. Stock exchanges do not, so Jesse gets historical candles from a data provider and shows that provider in the import and backtest pages as if it were an exchange. Today that is Massive, split into Massive Stocks, Massive Currencies, Massive Indices and Massive Futures, plus Custom Data for CSV files from any other source. See Importing Data.

The data has gaps. A crypto exchange produces a candle every minute of the year. A stock exchange produces nothing at night, at the weekend or on holidays, and Jesse keeps it that way: only the bars the provider actually observed are stored, and the backtest engine never invents candles to fill a closure. Bigger timeframes are built from the observed minutes, aligned to the clock. Where the provider has pre-market and after-hours bars, those are included too. This changes a few things you may be used to, all covered in Backtesting on Gapped Data.

You choose how the backtest simulates the market. Because a provider is not a venue, it carries no fee, leverage or market type of its own. Each backtest session picks a Simulation Model (spot, or perpetual futures with leverage) and a Trading Fee in the session's exchange settings. The Massive sources default to spot; Custom Data defaults to perpetual futures.

Metrics annualize on 252 observations, not 365. Sharpe, Sortino, Omega and the annual return are computed with the number of trading days in a year. The default follows the data source and can be switched per session under Annualization.

Live trading is available through supported crypto exchanges that offer tokenized stocks and other instruments tied to traditional markets. You can use the Trading Hours helpers to keep entries inside the underlying market's session and off-hours candles out of your indicators. The data providers above supply historical candles for backtesting only. Traditional broker integrations are under development, starting with Alpaca for US stocks.

What is supported today

Status
Importing candles from Massive (stocks, currencies, indices, futures)Supported
Importing candles from a CSV file (Custom Data)Supported
Backtesting, optimization and the research module on gapped dataSupported, detected automatically
Spot or perpetual-futures simulation per sessionSupported
Split-adjusted stock pricesDefault for Massive Stocks
Dividend adjustmentNot supported
Continuous futures contracts, rollover, contract multipliersNot supported; each expiry is its own symbol, priced in synthetic units
Several exchanges or data sources in one backtestNot supported; one source per run
Live trading on tokenized stocks and other traditional-market instrumentsSupported through crypto exchanges that offer them
Live trading through traditional brokersIn development, starting with Alpaca

Where to go next

We do NOT guarantee profitable trading results in anyways. USE THE SOFTWARE AT YOUR OWN RISK. THE AUTHORS AND ALL AFFILIATES ASSUME NO RESPONSIBILITY FOR YOUR TRADING RESULTS. Do not risk money which you are afraid to lose. There might be bugs in the code - this software DOES NOT come with ANY warranty. All investments carry risk! Past performance is no guarantee of future results! Be aware of overfitting!