Overall Statistics |
Total Trades 1 Average Win 0% Average Loss 0% Compounding Annual Return -60.433% Drawdown 0.400% Expectancy 0 Net Profit -0.254% Sharpe Ratio -11.225 Loss Rate 0% Win Rate 0% Profit-Loss Ratio 0 Alpha -0.639 Beta 46.33 Annual Standard Deviation 0.028 Annual Variance 0.001 Information Ratio -11.72 Tracking Error 0.028 Treynor Ratio -0.007 Total Fees $1.85 |
namespace QuantConnect.Algorithm.CSharp { public class FutureChainProviderAlgorithm : QCAlgorithm { private Symbol _futureContract = string.Empty; private readonly HashSet<Symbol> _contractsAdded = new HashSet<Symbol>(); public Symbol SP500 = QuantConnect.Symbol.Create("ES", SecurityType.Future, Market.USA); public override void Initialize() { SetStartDate(2015, 12, 24); SetEndDate(2015, 12, 24); SetCash(100000); AddEquity("SPY", Resolution.Minute); } public override void OnData(Slice data) { if (!(Securities.ContainsKey(_futureContract) && Portfolio[_futureContract].Invested)) { var futureChains = FutureChainProvider.GetFutureContractList(SP500, Time); Debug(futureChains.ToString()); var contracts = (from symbol in futureChains where ((symbol.ID.Date - data.Time).TotalDays < 100 && (symbol.ID.Date - data.Time).TotalDays > 10) select symbol); if (contracts.Count() != 0) { _futureContract = contracts.OrderBy(x => x.ID.Date) .FirstOrDefault(); if (_contractsAdded.Add(_futureContract)) { // use AddFutureContract() to subscribe the data for specified contract AddFutureContract(_futureContract, Resolution.Minute); } } else _futureContract = string.Empty; } if (Securities.ContainsKey(_futureContract) && !Portfolio[_futureContract].Invested) { MarketOrder(_futureContract, 1); } } } }