Overall Statistics |
Total Trades 6 Average Win 0.63% Average Loss -0.05% Compounding Annual Return 6.848% Drawdown 0.300% Expectancy 6.357 Net Profit 1.144% Sharpe Ratio 3.637 Probabilistic Sharpe Ratio 89.892% Loss Rate 50% Win Rate 50% Profit-Loss Ratio 13.71 Alpha 0.047 Beta -0.027 Annual Standard Deviation 0.012 Annual Variance 0 Information Ratio -0.17 Tracking Error 0.107 Treynor Ratio -1.649 Total Fees $9.12 Estimated Strategy Capacity $740000000.00 Lowest Capacity Asset MGC VOFJUCDY9XNH |
#region imports from AlgorithmImports import * #endregion from datetime import timedelta from AlgorithmImports import * class USFuturesDataAlgorithm(QCAlgorithm): def Initialize(self) -> None: self.SetStartDate(2013, 12, 20) self.SetEndDate(2014, 2, 20) self.SetCash(1000000) # Requesting data self.mini_gold = self.AddFuture(Futures.Metals.Gold) self.mini_gold.SetFilter(0, 90) self.micro_gold = self.AddFuture(Futures.Metals.MicroGold) self.micro_gold.SetFilter(0, 90) self.contract = {self.mini_gold.Symbol: None, self.micro_gold.Symbol: None} def OnData(self, slice: Slice) -> None: for kvp in slice.FutureChains: symbol = kvp.Key if symbol in self.contract: chain = kvp.Value # Select the contract with the greatest open interest most_liquid_contract = sorted(chain, key=lambda contract: contract.OpenInterest, reverse=True)[0] if self.contract[symbol] is None or most_liquid_contract.Symbol != self.contract[symbol].Symbol: if self.contract[symbol] is not None: self.Liquidate(self.contract[symbol].Symbol) self.contract[symbol] = most_liquid_contract if symbol == self.mini_gold.Symbol: self.MarketOrder(self.contract[symbol].Symbol, 1) elif symbol == self.micro_gold.Symbol: self.MarketOrder(self.contract[symbol].Symbol, -1) def OnSecuritiesChanged(self, changes: SecurityChanges) -> None: for security in changes.AddedSecurities: # Historical data history = self.History(security.Symbol, 10, Resolution.Minute) self.Debug(f"We got {len(history)} from our history request for {security.SymbolProperties.Description}")