| Overall Statistics |
|
Total Trades 200 Average Win 0.18% Average Loss -0.24% Compounding Annual Return -3.036% Drawdown 6.700% Expectancy -0.190 Net Profit -3.728% Sharpe Ratio -0.709 Probabilistic Sharpe Ratio 0.953% Loss Rate 54% Win Rate 46% Profit-Loss Ratio 0.74 Alpha -0.02 Beta -0.176 Annual Standard Deviation 0.029 Annual Variance 0.001 Information Ratio -0.224 Tracking Error 0.107 Treynor Ratio 0.118 Total Fees $0.00 Estimated Strategy Capacity $1000000.00 Lowest Capacity Asset USDDKK 8G |
from AlgorithmImports import *
# endregion
class CustomIndexStrategy(QCAlgorithm):
def Initialize(self):
self.Pair_1_Multiplier = 4
self.Pair_1 = "USDDKK"
self.holdingDays = 1
self.SetStartDate (2015, 3, 3)
self.SetEndDate(2016,5,24)
self.SetCash(1000000)
self.SetBrokerageModel(BrokerageName.OandaBrokerage)
self.EURSEK = self.AddForex(self.Pair_1, Resolution.Daily, Market.Oanda)
self.symbols = [self.Pair_1]
self.prevPrices = { symbol : RollingWindow[QuoteBar](7) for symbol in self.symbols }
self.ticketPair1 = None
def OnData(self,data):
for symbol in self.symbols:
if data.ContainsKey(symbol):
self.prevPrices[symbol].Add( data[symbol] )
if not all([ window.IsReady for window in self.prevPrices.values() ]):
return
Pair1_window = self.prevPrices[self.Pair_1]
Pair1_1D = Pair1_window[1].Close
Pair1_0D = Pair1_window[0].Close
if self.ticketPair1 is not None and self.UtcTime < self.ticketPair1.Time + timedelta(days=(self.holdingDays)):
return
if self.ticketPair1 is None and self.IsMarketOpen(self.Pair_1) and Pair1_0D < Pair1_1D and self.Time.weekday() != 4:
if self.Time.day == 25 and self.Time.month == 12: return
self.ticketPair1 = self.MarketOrder(self.Pair_1, 100000 * self.Pair_1_Multiplier)
if self.ticketPair1 is not None and self.UtcTime >= self.ticketPair1.Time + timedelta(days = self.holdingDays) and self.Time.weekday() != 4:
if self.Time.day == 25 and self.Time.month == 12: return
self.MarketOrder(self.Pair_1, -100000 * self.Pair_1_Multiplier)
self.ticketPair1 = None