# Coming from QuantConnect

## What is the same

A LEAN algorithm is a class with event handlers. A Forge strategy is a class too, and `compute` returns signals for every bar at once, with optional hooks for events. Both are Python.

## What is different

- **Data arrives as arrays.** LEAN calls `OnData` with a slice for each bar. Forge hands `compute` the whole history as arrays, and the engine applies the signals.
- **Indicators are functions.** LEAN registers an indicator and feeds it through a consolidator. Forge calls `ta.rsi(close, period)` on an array, and a slower series is `d.tf("H4")`.
- **Warm-up is declared.** An indicator states its own warm-up, and a strategy does not trade on values that are still missing.
- **Time is UTC.** LEAN's clock follows the time zone you set.

The [traps page](https://oathra.dev/docs/porting/lean/traps) lists the mistakes that cost the most.

## Where to start

Read [From LEAN](https://oathra.dev/docs/porting/lean/overview) first, then [warm-up](https://oathra.dev/docs/concepts/warm-up) and [broker time and the trading day](https://oathra.dev/docs/concepts/broker-time-and-the-trading-day). Then write [your first indicator](https://oathra.dev/docs/get-started/draw-your-first-indicator).

> **Tip.** Signed in, the assistant on this page ports a snippet for you. Paste it and ask for the Forge version. See [Set up your AI tool](https://oathra.dev/docs/get-started/add-your-ai-tool).

## LEAN names, in Forge

A short list. A full table for LEAN is not written yet.

- `self.rsi`: `forge.ta.rsi`
- `self.sma`: `forge.ta.sma`
- `self.ema`: `forge.ta.ema`
- `initialize`: `forge.strategy.Strategy`
- `on_data`: `forge.strategy.Strategy`
- `set_holdings`: `forge.types.Context`
- `self.debug`: `forge.types.Context`
