CarrotQuant.Net 是一个基于 .NET 开发的轻量级、高性能量化交易与回测框架,采用 三层分离架构(数据层 / 引擎层 / 策略层),支持回测与实盘双引擎。
- 三层分离架构: 数据层 / 引擎层 / 策略层通过接口契约解耦,各层可独立演进。
- 双格式数据源: 统一支持 CSV 与 Parquet 格式,通过
IStorageResolver屏蔽物理存储差异。 - 稠密矩阵 + 稀疏事件:
IDataProvider提供高性能二维 Buffer 访问,IEventProvider<T>提供 O(1) 点查。 - 泛型事件系统: 用户只需定义 record 类型,框架自动完成 CSV/Parquet → T 的零配置映射。
- 策略管线: 支持串联/并联组合模式,引擎启动前通过
Compile()优化拓扑。 - Context 黑板模式: 策略间通过
IEngineContext异步通信,实现无感协作与物理隔离。
| 目录/项目 | 说明 |
|---|---|
| CarrotBacktesting.NET | 核心引擎。包含数据层接口与实现、引擎抽象、策略接口。 |
| CarrotBackTesting.Net.UnitTest | 单元测试。覆盖数据层全部组件,含真实测试数据校验。 |
| CarrotBackTesting.NET.TestData | 测试数据集。CSV/Parquet 格式的 A 股行情与复权因子数据。 |
| CarrotBacktesting.NET.Demo | 回测示例。 |
- 安装 .NET 10.0 SDK 或更高版本。
dotnet test CarrotBackTesting.Net.UnitTest// 定义事件数据模型
public record AdjustmentFactor(double BackAdjFactor);
// 自动加载(CSV/Parquet 格式自动检测)
var resolver = new StorageResolver("path/to/data");
var provider = EventProviderBuilder.Build<AdjustmentFactor>(resolver, "ashare.adj_factor.baostock");
// O(1) 点查
provider.TryGet(new DateTime(2021, 7, 21), "sh.600000", out var val);
// 注册到事件注册表
var registry = new EventRegistry();
registry.Register("adjustments", provider);Data Layer Engine Layer Strategy Layer
┌──────────────┐ ┌─────────────┐ ┌─────────────┐
│ IDataProvider│──▶│ IEngine │──▶│ IStrategy │
│ IEventReg. │ │IEngineCtx │ │ IStrategyPipe│
└──────────────┘ └─────────────┘ └─────────────┘
详细架构规范请参阅 AGENTS.md。
本项目采用 Apache License 2.0 协议开源。详情请参阅 LICENSE 文件。