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}")