Skip to content

Commit 9655ed8

Browse files
committed
Minor fix for expired contracts
1 parent e305652 commit 9655ed8

3 files changed

Lines changed: 15 additions & 8 deletions

File tree

Algorithm/QCAlgorithm.cs

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3357,12 +3357,11 @@ public OptionChains OptionChains(IEnumerable<Symbol> symbols, bool flatten = fal
33573357
var canonicalSymbols = symbols.Select(GetCanonicalOptionSymbol).ToList();
33583358
var optionChainsData = GetChainsData<OptionUniverse>(canonicalSymbols);
33593359

3360-
var time = Time.Date;
3361-
var chains = new OptionChains(time, flatten);
3360+
var chains = new OptionChains(Time.Date, flatten);
33623361
foreach (var (symbol, contracts) in optionChainsData)
33633362
{
33643363
var symbolProperties = SymbolPropertiesDatabase.GetSymbolProperties(symbol.ID.Market, symbol, symbol.SecurityType, AccountCurrency);
3365-
var optionChain = new OptionChain(symbol, time, contracts, symbolProperties, flatten);
3364+
var optionChain = new OptionChain(symbol, GetTimeInExchangeTimeZone(symbol).Date, contracts, symbolProperties, flatten);
33663365
chains.Add(symbol, optionChain);
33673366
}
33683367

@@ -3442,14 +3441,13 @@ public FuturesChains FuturesChains(IEnumerable<Symbol> symbols, bool flatten = f
34423441
var canonicalSymbols = symbols.Select(GetCanonicalFutureSymbol).ToList();
34433442
var futureChainsData = GetChainsData<FutureUniverse>(canonicalSymbols);
34443443

3445-
var time = Time.Date;
3446-
var chains = new FuturesChains(time, flatten);
3444+
var chains = new FuturesChains(Time.Date, flatten);
34473445

34483446
if (futureChainsData != null)
34493447
{
34503448
foreach (var (symbol, contracts) in futureChainsData)
34513449
{
3452-
var chain = new FuturesChain(symbol, time, contracts, flatten);
3450+
var chain = new FuturesChain(symbol, GetTimeInExchangeTimeZone(symbol).Date, contracts, flatten);
34533451
chains.Add(symbol, chain);
34543452
}
34553453
}
@@ -3726,5 +3724,14 @@ private IEnumerable<KeyValuePair<Symbol, IEnumerable<T>>> GetChainsData<T>(IEnum
37263724
yield return KeyValuePair.Create(symbol, chain);
37273725
}
37283726
}
3727+
3728+
/// <summary>
3729+
/// Gets the current time in the exchange time zone for the given symbol
3730+
/// </summary>
3731+
private DateTime GetTimeInExchangeTimeZone(Symbol symbol)
3732+
{
3733+
var exchange = MarketHoursDatabase.GetExchangeHours(symbol.ID.Market, symbol, symbol.SecurityType);
3734+
return UtcTime.ConvertFromUtc(exchange.TimeZone);
3735+
}
37293736
}
37303737
}

Common/Data/Market/FuturesChain.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ public FuturesChain(Symbol canonicalFutureSymbol, DateTime time, IEnumerable<Fut
4848
{
4949
foreach (var contractData in contracts)
5050
{
51-
if (contractData.Symbol.ID.Date < time) continue;
51+
if (contractData.Symbol.ID.Date.Date < time.Date) continue;
5252
Contracts[contractData.Symbol] = new FuturesContract(contractData);
5353
}
5454
}

Common/Data/Market/OptionChain.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ public OptionChain(Symbol canonicalOptionSymbol, DateTime time, IEnumerable<Opti
5252
foreach (var contractData in contracts)
5353
{
5454
Underlying ??= contractData.Underlying;
55-
if (contractData.Symbol.ID.Date < time) continue;
55+
if (contractData.Symbol.ID.Date.Date < time.Date) continue;
5656
Contracts[contractData.Symbol] = OptionContract.Create(contractData, symbolProperties);
5757
}
5858
}

0 commit comments

Comments
 (0)