Inherited index early closes retain Chicago wall time in New York exchange calendars
Maintainer thường phản hồi trong vòng 1 ngày
Chưa có ai nhận issue này.
Đánh giá
Issue này chưa được đánh giá.
Mô tả
Observed behavior
On master (7939b7878), the NDXP and NQX entries use America/New_York, but GetLastDailyMarketClose returns 12:00 Eastern on 2025-11-28. They inherit the wildcard index calendar's 12:00 America/Chicago early close without converting it into their exchange timezone. The inherited instant should be 13:00 Eastern.
Minimal reproduction, using the bundled market-hours database:
var expiry = new DateTime(2025, 11, 28);
var underlying = Symbol.Create("NDX", SecurityType.Index, Market.USA);
foreach (var ticker in new[] { "NDXP", "NQX" })
{
var option = Symbol.CreateOption(underlying, ticker, Market.USA,
OptionStyle.European, OptionRight.Call, 200m, expiry);
var hours = MarketHoursDatabase.FromDataFolder()
.GetExchangeHours(Market.USA, option, SecurityType.IndexOption);
Console.WriteLine($"{ticker}: {hours.TimeZone}, {hours.GetLastDailyMarketClose(expiry, false):yyyy-MM-dd HH:mm}");
}
Observed for both: America/New_York, 2025-11-28 12:00.
Cause and impact
Common/Util/MarketHoursDatabaseJsonConverter.cs copies underlyingEntry.ExchangeHours.EarlyCloses directly at lines 307–309 and merges market-wide early closes at lines 338–340. The result is then constructed in the target ExchangeTimeZone at line 349. The NDX underlying itself inherits the wildcard Chicago index calendar, so the error also exists before the option entry inherits from NDX.
The affected calendar can mark the exchange closed an hour too early. A settlement helper that correctly preserves this calendar value still cannot establish the real exchange closing instant.
Required result
Inherited early closes must retain their intended instant when source and target exchange timezones differ, with tests covering NDX/NDXP/NQX and unchanged Chicago SPX/SPXW behavior. Review late-open inheritance for the same timezone assumption. A suggestion is to make the inheritance timezone-aware in the shared conversion path, rather than special-casing callers.
This calendar defect is present before #10114; that change's database-preservation guard does not introduce it.
- Ngôn ngữ chính
- C#
- Star
- 22.5k
- Fork
- 5.4k
- Merge trung bình
- 22 giờ 6 phút
- Pull request đã merge (30 ngày)
- 81
Chuẩn bị môi trường
Khởi chạy dev container của dự án ngay trên trình duyệt, bằng tài khoản GitHub của bạn.
- Có Dockerfile hoặc tệp Docker Compose
- Có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của QuantConnect/Lean
-
PDF report generation can overwrite HTML when the destination extension is not lowercase .htmlĐang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
QuantConnect/Lean#10082 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
QuantConnect/Lean#10059 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Library Request: highspyĐang mởlibrary-request
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
QuantConnect/Lean#10034 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
QuantConnect/Lean#9965 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
QuantConnect/Lean#9955 ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của QuantConnect/Lean
Issue tương tự
-
bug emitter:client:csharp
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
microsoft/typespec#12572 · 1 bình luận · 1 reaction ·
Maintainer thường phản hồi trong vòng 1 ngày
-
needs-area-label
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
Maintainer thường phản hồi trong vòng 2 ngày
-
AWS Lambda: KeyNotFoundException drops HTTP-triggered transactions when allowAllHeaders is disabledĐang mởbug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 70/100
newrelic/newrelic-dotnet-agent#3949 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
area-networking
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
dotnet/aspnetcore#70545 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 87/100
Maintainer thường phản hồi trong vòng 1 ngày