| Overall Statistics |
|
Total Trades 39 Average Win 1.89% Average Loss -10.08% Compounding Annual Return -100.000% Drawdown 74.700% Expectancy -0.472 Net Profit -43.238% Sharpe Ratio 1.964 Probabilistic Sharpe Ratio 46.332% Loss Rate 56% Win Rate 44% Profit-Loss Ratio 0.19 Alpha 6.254 Beta 19.748 Annual Standard Deviation 4.565 Annual Variance 20.836 Information Ratio 1.949 Tracking Error 4.531 Treynor Ratio 0.454 Total Fees $4867.35 |
import math
import numpy as np
import pandas as pd
import talib
from calendar import monthrange
from datetime import date, datetime, time, timedelta
from QuantConnect.Python import PythonQuandl
class Algorithm(QCAlgorithm):
def Initialize(self):
self.SetCash(5000000)
self.SetStartDate(2020, 8, 10)
#self.SetEndDate(2020, 5, 15)
# SECURITIES
self.usequities = ["SPY"]
for s in self.usequities:
x = self.AddEquity(s, Resolution.Daily)
self.fut_sp = self.AddFuture(Futures.Indices.SP500EMini)
self.fut_sp.SetFilter(TimeSpan.Zero, TimeSpan.FromDays(60))
self.fut_gold = self.AddFuture(Futures.Metals.Gold)
self.fut_gold.SetFilter(TimeSpan.FromDays(30), TimeSpan.FromDays(60))
# SCHEDULE FUNCTIONS
self.Schedule.On(self.DateRules.EveryDay("SPY"), self.TimeRules.At(9, 45), self.Trade_spfut)
self.Schedule.On(self.DateRules.EveryDay("SPY"), self.TimeRules.At(10, 45), self.Trade_goldfut)
# TRADING
def Trade_spfut(self):
for self.fut_sp in self.CurrentSlice.FutureChains:
sp = [sp for sp in self.fut_sp.Value if sp.OpenInterest > 0]
sorted_sp = sorted(sp, key=lambda k: k.OpenInterest, reverse = True)
trade_sp = sorted_sp[0]
self.SetHoldings(trade_sp.Symbol, 0.5)
# log
shares = self.Portfolio[trade_sp.Symbol].Quantity
price = self.Securities[trade_sp.Symbol].Price
self.Log("{} @ {}".format(shares,price))
def Trade_goldfut(self):
for self.fut_gold in self.CurrentSlice.FutureChains:
gc = [gc for gc in self.fut_gold.Value if gc.OpenInterest > 0]
sorted_gc = sorted(gc, key=lambda k: k.OpenInterest, reverse = True)
trade_gc = sorted_gc[0]
self.SetHoldings(trade_gc.Symbol, 0.5)
# log
shares = self.Portfolio[trade_gc.Symbol].Quantity
price = self.Securities[trade_gc.Symbol].Price
self.Log("{} @ {}".format(shares,price))