Overall Statistics |
Total Trades 6 Average Win 0.63% Average Loss -0.07% Compounding Annual Return 6.498% Drawdown 0.300% Expectancy 4.100 Net Profit 1.093% Sharpe Ratio 3.811 Probabilistic Sharpe Ratio 91.319% Loss Rate 50% Win Rate 50% Profit-Loss Ratio 9.20 Alpha 0.045 Beta -0.032 Annual Standard Deviation 0.011 Annual Variance 0 Information Ratio -0.19 Tracking Error 0.107 Treynor Ratio -1.359 Total Fees $11.10 Estimated Strategy Capacity $62000000.00 Lowest Capacity Asset MGC VOFJUCDY9XNH |
from AlgorithmImports import * class USFuturesDataAlgorithm(QCAlgorithm): def Initialize(self): 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, data): for kvp in data.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): 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.Symbol}")