| 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);
}
}
}
}