| Overall Statistics |
|
Total Trades 665 Average Win 2.56% Average Loss -1.54% Compounding Annual Return 25.792% Drawdown 64.800% Expectancy 0.531 Net Profit 124.272% Sharpe Ratio 0.659 Probabilistic Sharpe Ratio 15.634% Loss Rate 43% Win Rate 57% Profit-Loss Ratio 1.67 Alpha 0.424 Beta -0.437 Annual Standard Deviation 0.58 Annual Variance 0.336 Information Ratio 0.449 Tracking Error 0.639 Treynor Ratio -0.876 Total Fees $0.00 Estimated Strategy Capacity $2500000.00 Lowest Capacity Asset BTCUSD XJ Portfolio Turnover 7.40% |
from clr import AddReference
AddReference("System")
AddReference("QuantConnect.Algorithm")
AddReference("QuantConnect.Common")
from System import *
from QuantConnect import *
from QuantConnect.Algorithm import *
from QuantConnect.Indicators import *
class MovingAverageCrossover(QCAlgorithm):
def Initialize(self):
self.SetStartDate(2020, 1, 1) # set start date
self.SetCash(10000) # set strategy cash
self.AddCrypto("BTCUSD", Resolution.Daily) # Bitcoin data
self.fast = self.EMA("BTCUSD", 14, Resolution.Daily)
self.slow = self.EMA("BTCUSD", 28, Resolution.Daily)
self.previous = None
def OnData(self, data):
if not self.fast.IsReady or not self.slow.IsReady:
return
if self.previous is not None and self.previous.date() == self.Time.date():
return
if self.fast.Current.Value > self.slow.Current.Value:
self.SetHoldings("BTCUSD", 1.0)
elif self.fast.Current.Value < self.slow.Current.Value:
self.SetHoldings("BTCUSD", -1.0)
self.previous = self.Time