# FinzData x QuantConnect: example algorithm (Python). # 1. Add finzdata_qc.py to your project (download: https://finzdata.com/quantconnect/finzdata_qc.py) # 2. Add a project parameter named "finzdata-api-key" with your key (free key: https://api.finzdata.com) # 3. Backtest. Free keys return the last 12 months; paid plans return full history. from AlgorithmImports import * from finzdata_qc import FinzData, FinzDataBars, FinzDataGex, FinzDataMacro class FinzDataGammaExample(QCAlgorithm): """Hold SPY when dealers are long gamma (calmer markets), step aside when they are short gamma. An illustration of point-in-time GEX in LEAN, not a recommended strategy.""" def initialize(self): self.set_start_date(2025, 11, 1) self.set_cash(100000) FinzData.set_api_key(self.get_parameter("finzdata-api-key")) self.spy = self.add_equity("SPY", Resolution.DAILY).symbol self.gex = self.add_data(FinzDataGex, "SPY", Resolution.DAILY).symbol # dealer gamma, known at 17:00 ET self.unrate = self.add_data(FinzDataMacro, "UNRATE", Resolution.DAILY).symbol # unemployment rate, as first published self.last_unrate = None def on_data(self, data: Slice): if data.contains_key(self.unrate): self.last_unrate = data[self.unrate].value if not data.contains_key(self.gex): return g = data[self.gex] self.plot("GEX", "net_gex_bn", g.value) self.plot("GEX", "flip", g["flip"]) if g.value > 0 and not self.portfolio[self.spy].invested: self.set_holdings(self.spy, 1.0) elif g.value < 0 and self.portfolio[self.spy].invested: self.liquidate(self.spy)