| Overall Statistics |
|
Total Orders 0 Average Win 0% Average Loss 0% Compounding Annual Return 0% Drawdown 0% Expectancy 0 Start Equity 100000000 End Equity 100000000 Net Profit 0% Sharpe Ratio 0 Sortino Ratio 0 Probabilistic Sharpe Ratio 0% Loss Rate 0% Win Rate 0% Profit-Loss Ratio 0 Alpha 0 Beta 0 Annual Standard Deviation 0 Annual Variance 0 Information Ratio 0 Tracking Error 0 Treynor Ratio 0 Total Fees $0.00 Estimated Strategy Capacity $0 Lowest Capacity Asset Portfolio Turnover 0% |
#region imports
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Globalization;
using System.Drawing;
using QuantConnect;
using QuantConnect.Algorithm.Framework;
using QuantConnect.Algorithm.Framework.Selection;
using QuantConnect.Algorithm.Framework.Alphas;
using QuantConnect.Algorithm.Framework.Portfolio;
using QuantConnect.Algorithm.Framework.Portfolio.SignalExports;
using QuantConnect.Algorithm.Framework.Execution;
using QuantConnect.Algorithm.Framework.Risk;
using QuantConnect.Algorithm.Selection;
using QuantConnect.Api;
using QuantConnect.Parameters;
using QuantConnect.Benchmarks;
using QuantConnect.Brokerages;
using QuantConnect.Commands;
using QuantConnect.Configuration;
using QuantConnect.Util;
using QuantConnect.Interfaces;
using QuantConnect.Algorithm;
using QuantConnect.Indicators;
using QuantConnect.Data;
using QuantConnect.Data.Auxiliary;
using QuantConnect.Data.Consolidators;
using QuantConnect.Data.Custom;
using QuantConnect.Data.Custom.IconicTypes;
using QuantConnect.DataSource;
using QuantConnect.Data.Fundamental;
using QuantConnect.Data.Market;
using QuantConnect.Data.Shortable;
using QuantConnect.Data.UniverseSelection;
using QuantConnect.Notifications;
using QuantConnect.Orders;
using QuantConnect.Orders.Fees;
using QuantConnect.Orders.Fills;
using QuantConnect.Orders.OptionExercise;
using QuantConnect.Orders.Slippage;
using QuantConnect.Orders.TimeInForces;
using QuantConnect.Python;
using QuantConnect.Scheduling;
using QuantConnect.Securities;
using QuantConnect.Securities.Equity;
using QuantConnect.Securities.Future;
using QuantConnect.Securities.Option;
using QuantConnect.Securities.Positions;
using QuantConnect.Securities.Forex;
using QuantConnect.Securities.Crypto;
using QuantConnect.Securities.CryptoFuture;
using QuantConnect.Securities.IndexOption;
using QuantConnect.Securities.Interfaces;
using QuantConnect.Securities.Volatility;
using QuantConnect.Storage;
using QuantConnect.Statistics;
using QCAlgorithmFramework = QuantConnect.Algorithm.QCAlgorithm;
using QCAlgorithmFrameworkBridge = QuantConnect.Algorithm.QCAlgorithm;
using Calendar = QuantConnect.Data.Consolidators.Calendar;
#endregion
namespace QuantConnect.Algorithm.CSharp
{
public class FuturesVolatilityBreakout : QCAlgorithm
{
private int historyLength = 500;
private Resolution resolution = Resolution.Daily;
protected Dictionary<Symbol, RollingWindow<TradeBar>> DataSnapshot = new Dictionary<Symbol, RollingWindow<TradeBar>>();
private static List<string> FUTURES_TICKERS = new List<string>()
{
// Futures.Indices.SP500EMini,
// Futures.Energy.CrudeOilWTI,
// Futures.Metals.Gold,
// Futures.Currencies.EUR,
// Futures.Financials.Y10TreasuryNote,
Futures.Indices.SP500EMini, // ES
// Futures.Indices.NASDAQ100EMini, // NQ
// Futures.Indices.Dow30EMini, // YM
// Futures.Indices.Russell2000EMini,// RTY
Futures.Grains.Corn, // ZC
Futures.Grains.Soybeans, // ZS
Futures.Grains.Wheat, // ZW
Futures.Grains.Oats, // ZO
// Futures.Grains.SoybeanMeal, // ZM
// Futures.Grains.SoybeanOil, // ZL
// Futures.Softs.Cocoa, // CC
Futures.Softs.Coffee, // KC
Futures.Meats.LiveCattle, // LE
//Futures.Meats.LeanHogs, // HE
Futures.Meats.FeederCattle, // GF
Futures.Energy.CrudeOilWTI, // CL
Futures.Energy.NaturalGas, // NG
Futures.Energy.HeatingOil, // HO
Futures.Energy.Gasoline, // RB
Futures.Metals.Gold, // GC
Futures.Metals.Silver, // SI
Futures.Metals.Copper, // HG
Futures.Metals.Platinum, // PL
Futures.Metals.Palladium, // PA
Futures.Currencies.EUR, // 6E
Futures.Currencies.GBP, // 6B
Futures.Currencies.JPY, // 6J
// Futures.Currencies.CHF, // 6S
// Futures.Currencies.CAD, // 6C
// Futures.Currencies.AUD, // 6A
// Futures.Currencies.NZD, // 6N
Futures.Financials.Y2TreasuryNote, // ZT
//Futures.Financials.Y5TreasuryNote, // ZF
//Futures.Financials.Y10TreasuryNote, // ZN
Futures.Financials.Y30TreasuryBond, // ZB
//Futures.Financials.EuroDollar
};
private List<Future> futures = new List<Future>();
public override void Initialize()
{
SetStartDate(2010,1,1); SetCash(100_000_000);
foreach (string futureTicker in FUTURES_TICKERS)
{
var future = AddFuture(futureTicker,
resolution,
extendedMarketHours: true,
dataNormalizationMode: DataNormalizationMode.BackwardsRatio,
dataMappingMode: DataMappingMode.OpenInterest,
contractDepthOffset: 0);
future.SetFilter(futureFilterUniverse => futureFilterUniverse.FrontMonth());
futures.Add(future);
}
SetBrokerageModel(BrokerageName.InteractiveBrokersBrokerage, AccountType.Margin);
SetSecurityInitializer(
new BrokerageModelSecurityInitializer(
BrokerageModel,
new FuncSecuritySeeder(GetLastKnownPrices)
)
);
}
public override void OnData(Slice slice)
{
var budget = Portfolio.MarginRemaining;// / this.futures.Count;
foreach (var kvp in slice.Bars)
{
var mappedSymbol = kvp.Key;
Future owningFuture = null;
foreach (var future in futures)
{
if (future.Mapped == mappedSymbol)
{
owningFuture = future;
break;
}
}
}
}
}
}