Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
31d18f3
Improvements from previous PR. Adhere to QC code conventions better. …
Joseph-Matteo-Scorsone Dec 29, 2025
7f3891c
Merge branch 'QuantConnect:master' into databento-integration-improve…
Romazes Jan 20, 2026
68fd7f6
update: .net 10
Romazes Jan 20, 2026
c23c185
feat: setup project configurations
Romazes Jan 20, 2026
f660594
remove: demonstration file
Romazes Jan 20, 2026
f85939d
test:refactor: config file
Romazes Jan 20, 2026
991d8bf
refactor: HistoryProvider, DataDownloader, SymbolMapper
Romazes Jan 21, 2026
cbc4bfe
refactor: clean, style, spacing, missed license block
Romazes Jan 22, 2026
3513bcf
feat: debug mode config
Romazes Jan 26, 2026
ee90b57
remove: IsSupported() doesn't validate anything
Romazes Jan 26, 2026
531056a
feat: map Lean.Market <-> DataBento.DataSet
Romazes Jan 26, 2026
4c322c0
feat: Data Live TcpClient Wrapper
Romazes Jan 27, 2026
2a2392f
feat: Data Queue Handler
Romazes Jan 27, 2026
a80bdcc
feat: reconnection process and resubscription
Romazes Jan 28, 2026
d72717e
refactor: deserialization and model base types
Romazes Jan 29, 2026
0afd949
feat: improve DataBento API error handling and test coverage
Romazes Jan 30, 2026
55fa8d7
refactor: dataset mapping to use DataSetSpecifications
Romazes Jan 30, 2026
c9a5c81
refactor: schema usage and add large-range tests
Romazes Jan 30, 2026
a3c5d02
refactor: HistoryProvider to use MappedSynchronizingHistoryProvider
Romazes Jan 30, 2026
990921c
revert: FilterHistory()
Romazes Feb 2, 2026
5405ddd
feat: improve error logging in HistoricalAPIClient
Romazes Feb 2, 2026
9e90474
feat: support for BBO-1s/1m Level 1 data and refactor API
Romazes Feb 2, 2026
c12cce3
refactor: process only top level in LevelOneData
Romazes Feb 2, 2026
fbf31cc
refactor: logging for clarity and consistency
Romazes Feb 2, 2026
ef777a3
feat: improve timestamp handling in DataBento integration
Romazes Feb 3, 2026
391b386
refactor: timestamp handling with UtcDateTime properties
Romazes Feb 3, 2026
ab4d3fd
feat: productId in ValidateSubscription to 427
Romazes Feb 3, 2026
f7c13a4
refactor: LiveDataTcpClientWrapper connection handling
Romazes Feb 3, 2026
8bc1ea4
remove: redundant semicolon
Romazes Feb 3, 2026
72830f3
refactor: LiveDataTcpClientWrapper to be fully synchronous
Romazes Feb 3, 2026
c9ca326
refactor: AuthenticationMessageRequest constructor, add docs
Romazes Feb 3, 2026
7adce51
refactor: Level 1 data: split tick vs interval, add types
Romazes Feb 4, 2026
6be957f
refactor: LevelOneData to use enums and single book level
Romazes Feb 4, 2026
3f82e10
refactor: LevelOneData deserialization in DataConverter
Romazes Feb 4, 2026
c3b9c19
remove: Depth property from LevelOneData and related tests
Romazes Feb 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
94 changes: 0 additions & 94 deletions Demonstration.cs

This file was deleted.

8 changes: 2 additions & 6 deletions Lean.DataSource.DataBento.sln
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.5.2.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "QuantConnect.DataBento", "QuantConnect.DataBento\QuantConnect.DataSource.DataBento.csproj", "{367AEEDC-F0B3-7F47-539D-10E5EC242C2A}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "QuantConnect.DataSource.DataBento", "QuantConnect.DataBento\QuantConnect.DataSource.DataBento.csproj", "{367AEEDC-F0B3-7F47-539D-10E5EC242C2A}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "QuantConnect.DataBento.Tests", "QuantConnect.DataBento.Tests\QuantConnect.DataSource.DataBento.Tests.csproj", "{9CF47860-2CEA-F379-09D8-9AEF27965D12}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "QuantConnect.DataSource.DataBento.Tests", "QuantConnect.DataBento.Tests\QuantConnect.DataSource.DataBento.Tests.csproj", "{9CF47860-2CEA-F379-09D8-9AEF27965D12}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Expand All @@ -16,10 +16,6 @@ Global
{367AEEDC-F0B3-7F47-539D-10E5EC242C2A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{367AEEDC-F0B3-7F47-539D-10E5EC242C2A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{367AEEDC-F0B3-7F47-539D-10E5EC242C2A}.Release|Any CPU.Build.0 = Release|Any CPU
{4B379C8F-16CE-1972-73E3-C14F6410D428}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4B379C8F-16CE-1972-73E3-C14F6410D428}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4B379C8F-16CE-1972-73E3-C14F6410D428}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4B379C8F-16CE-1972-73E3-C14F6410D428}.Release|Any CPU.Build.0 = Release|Any CPU
{9CF47860-2CEA-F379-09D8-9AEF27965D12}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9CF47860-2CEA-F379-09D8-9AEF27965D12}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9CF47860-2CEA-F379-09D8-9AEF27965D12}.Release|Any CPU.ActiveCfg = Release|Any CPU
Expand Down
53 changes: 53 additions & 0 deletions QuantConnect.DataBento.Tests/Assertions.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
/*
* QUANTCONNECT.COM - Democratizing Finance, Empowering Individuals.
* Lean Algorithmic Trading Engine v2.0. Copyright 2026 QuantConnect Corporation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

using System;
using QuantConnect.Lean.DataSource.DataBento.Models;

namespace QuantConnect.Lean.DataSource.DataBento.Tests;

public static class Assertions
{
public static void AssertLevelOneBookLevel(LevelOneBookLevel level)
{
Assert.IsNotNull(level);
AssertPositiveOrNull(level.BidPx);
AssertPositiveOrNull(level.AskPx);
Assert.GreaterOrEqual(level.BidSz, 0);
Assert.GreaterOrEqual(level.AskSz, 0);
Assert.GreaterOrEqual(level.BidCt, 0);
Assert.GreaterOrEqual(level.AskCt, 0);
}

public static void AssertPositiveOrNull(decimal? price)
{
if (price.HasValue)
{
Assert.Greater(price.Value, 0);
}
else
{
Assert.IsNull(price);
}
}

public static void AssertEnumIsDefined<TEnum>(TEnum value, string paramName) where TEnum : struct, Enum
{
if (!Enum.IsDefined(value))
{
Assert.Fail($"{paramName} must be one of {string.Join(", ", Enum.GetValues<TEnum>())}");
}
}
}
Loading
Loading