Overall Statistics
Total Trades
13
Average Win
0.02%
Average Loss
-0.04%
Compounding Annual Return
-4.143%
Drawdown
0.300%
Expectancy
-0.482
Net Profit
-0.035%
Sharpe Ratio
-6.909
Probabilistic Sharpe Ratio
0%
Loss Rate
67%
Win Rate
33%
Profit-Loss Ratio
0.55
Alpha
-0.058
Beta
0.009
Annual Standard Deviation
0.01
Annual Variance
0
Information Ratio
2.3
Tracking Error
0.405
Treynor Ratio
-7.269
Total Fees
$34.97
Estimated Strategy Capacity
$1000000.00
Lowest Capacity Asset
XRPUSD E3
class SimpleEMACrossover(QCAlgorithm):

    def Initialize(self):
        self.SetStartDate(2021, 4, 20)
        self.SetEndDate(2021, 4, 22)
        self.SetCash(100000)
        self.SetTimeZone("UTC")
        
        self.SetBrokerageModel(BrokerageName.Bitfinex, AccountType.Margin)        
        security = self.AddCrypto('XRPUSD', Resolution.Minute)
        security.BuyingPowerModel = SecurityMarginModel(3.3)
        self.symbol = security.Symbol
        
        self.defaultQuantity = 1000
        
        self.periodFast = 480
        self.periodSlow = 1920
        
        self.emaFast = self.EMA(self.symbol, self.periodFast, Resolution.Minute)
        self.emaSlow = self.EMA(self.symbol, self.periodSlow, Resolution.Minute)
        
        self.RegisterIndicator(self.symbol, self.emaFast, Resolution.Minute)
        self.RegisterIndicator(self.symbol, self.emaSlow, Resolution.Minute)
        
        self.SetWarmUp(2000, Resolution.Minute)
        
    def OnData(self, data):

        self.Plot("Data Chart", "Asset Price", self.Securities["XRPUSD"].Close)
        self.Plot("EMA", "Slow", self.emaSlow.Current.Value)
        self.Plot("EMA", "Fast", self.emaFast.Current.Value)
         
        if not self.emaSlow.IsReady:
            return
        
        if self.Portfolio[self.symbol].IsLong:
            
            if self.emaFast.Current.Value < self.emaSlow.Current.Value:
                self.Liquidate(self.symbol)
                self.MarketOrder(self.symbol, -self.defaultQuantity)
                
        elif self.Portfolio[self.symbol].IsShort:
            
            if self.emaFast.Current.Value > self.emaSlow.Current.Value:
                self.Liquidate(self.symbol)
                self.MarketOrder(self.symbol, self.defaultQuantity)
                
        else:
            
            if self.emaFast.Current.Value > self.emaSlow.Current.Value:
                self.MarketOrder(self.symbol, self.defaultQuantity)
            
            if self.emaFast.Current.Value < self.emaSlow.Current.Value:
                self.MarketOrder(self.symbol, -self.defaultQuantity)
    def OnOrderEvent(self, orderEvent):
        if orderEvent.Status == OrderStatus.Filled:
            self.Log(f'{orderEvent}')