Overall Statistics |
Total Trades 0 Average Win 0% Average Loss 0% Compounding Annual Return 0% Drawdown 0% Expectancy 0 Net Profit 0% 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 |
using System; using System.Linq; using QuantConnect.Data; using QuantConnect.Securities; namespace QuantConnect.Algorithm.CSharp { public class FuturesTest : QCAlgorithm { public override void Initialize() { SetStartDate( 2013, 10, 07 ); SetEndDate( 2013, 10, 11 ); SetCash( 1000000 ); // Add our future var futureGold = AddFuture( Futures.Metals.Gold ); // Get all expiries futureGold.SetFilter( universe => universe.Expiration( TimeSpan.Zero, TimeSpan.FromDays( 9999 ) ) ); } public override void OnData( Slice slice ) { // Explore each future contract chain foreach ( var chain in slice.FuturesChains ) { // Get all contracts in this chain var contracts = chain.Value.Contracts; // Get front-month/spot contract var spot = contracts. OrderBy( x => x.Value.Expiry ). FirstOrDefault(). Value; // Get front-month/spot asks and bids var spotAsk = spot.AskPrice; var spotBid = spot.BidPrice; // Check if we have prices if ( spotAsk == 0m || spotBid == 0m ) continue; // Calculate mid var spotMid = ( spotAsk + spotBid ) / 2m; // Get expiry of front month/spot var spotExpiry = spot.Expiry; // Log( $"[SPOT/FM ({spot.Symbol.Value}] \t Expiry: {spotExpiry.ToString(DateFormat.UI)}, \t Mid: {spotMid}" ); // Go through all contracts received foreach ( var contractKvp in contracts ) { // Get contract var contract = contractKvp.Value; // Get contract symbol var contractSymbol = contract.Symbol.Value; // Calculate mid var mid = ( contract.AskPrice + contract.BidPrice ) / 2m; // Calculate spread to spot var spread = mid - spotMid; // Calculate yield to spot var yield = Math.Pow( (double)( mid / spotMid ), 1.0 / ( ( contract.Expiry - spotExpiry ).TotalDays / 365.2425 ) ); yield -= 1.0; // Log( $"[{contractSymbol}] \t Expiry: {contract.Expiry.ToString(DateFormat.UI)}, \t Mid: {mid}, \t Spread: {spread}, \t Yield: {yield.ToString("p3")}" ); } } } } }