Phase 0 completion: NT8 SDK core framework with risk management and position sizing
Some checks failed
Build and Test / build (push) Has been cancelled
Some checks failed
Build and Test / build (push) Has been cancelled
This commit is contained in:
432
Specs/SDK/repository_setup_package.md
Normal file
432
Specs/SDK/repository_setup_package.md
Normal file
@@ -0,0 +1,432 @@
|
||||
# **Repository Setup Package**
|
||||
|
||||
## **SETUP INSTRUCTIONS**
|
||||
|
||||
### **Step 1: Create Repository Structure**
|
||||
Create this exact directory structure in your repository:
|
||||
|
||||
```
|
||||
nt8-institutional-sdk/
|
||||
├── .gitea/
|
||||
│ └── workflows/
|
||||
│ ├── build.yml
|
||||
│ ├── test.yml
|
||||
│ └── release.yml
|
||||
├── .devcontainer/
|
||||
│ ├── devcontainer.json
|
||||
│ └── Dockerfile
|
||||
├── src/
|
||||
│ ├── NT8.Core/
|
||||
│ │ ├── Common/
|
||||
│ │ │ ├── Configuration/
|
||||
│ │ │ ├── Interfaces/
|
||||
│ │ │ └── Models/
|
||||
│ │ ├── Risk/
|
||||
│ │ ├── Sizing/
|
||||
│ │ ├── Logging/
|
||||
│ │ └── OMS/
|
||||
│ ├── NT8.Adapters/
|
||||
│ │ └── NinjaTrader/
|
||||
│ ├── NT8.Strategies/
|
||||
│ │ └── Examples/
|
||||
│ └── NT8.Contracts/
|
||||
│ └── V1/
|
||||
├── tests/
|
||||
│ ├── NT8.Core.Tests/
|
||||
│ ├── NT8.Integration.Tests/
|
||||
│ └── NT8.Performance.Tests/
|
||||
├── tools/
|
||||
│ ├── replay/
|
||||
│ └── market-data/
|
||||
├── docs/
|
||||
│ ├── architecture/
|
||||
│ ├── api/
|
||||
│ └── deployment/
|
||||
├── deployment/
|
||||
│ ├── dev/
|
||||
│ ├── staging/
|
||||
│ └── prod/
|
||||
├── .gitignore
|
||||
├── .editorconfig
|
||||
├── Directory.Build.props
|
||||
├── NT8-SDK.sln
|
||||
└── README.md
|
||||
```
|
||||
|
||||
### **Step 2: Copy Starter Files**
|
||||
Copy these files to the exact locations shown:
|
||||
|
||||
**`.gitignore`**
|
||||
```gitignore
|
||||
# Build results
|
||||
[Dd]ebug/
|
||||
[Dd]ebugPublic/
|
||||
[Rr]elease/
|
||||
[Rr]eleases/
|
||||
x64/
|
||||
x86/
|
||||
[Ww][Ii][Nn]32/
|
||||
[Aa][Rr][Mm]/
|
||||
[Aa][Rr][Mm]64/
|
||||
bld/
|
||||
[Bb]in/
|
||||
[Oo]bj/
|
||||
[Oo]ut/
|
||||
[Ll]og/
|
||||
[Ll]ogs/
|
||||
|
||||
# Visual Studio / VSCode
|
||||
.vs/
|
||||
.vscode/settings.json
|
||||
.vscode/tasks.json
|
||||
.vscode/launch.json
|
||||
.vscode/extensions.json
|
||||
*.rsuser
|
||||
*.suo
|
||||
*.user
|
||||
*.userosscache
|
||||
*.sln.docstates
|
||||
|
||||
# Test Results
|
||||
[Tt]est[Rr]esult*/
|
||||
[Bb]uild[Ll]og.*
|
||||
*.VisualState.xml
|
||||
TestResult.xml
|
||||
nunit-*.xml
|
||||
*.trx
|
||||
*.coverage
|
||||
*.coveragexml
|
||||
coverage*.json
|
||||
coverage*.xml
|
||||
coverage*.info
|
||||
|
||||
# NuGet
|
||||
*.nupkg
|
||||
*.snupkg
|
||||
.nuget/
|
||||
packages/
|
||||
!packages/build/
|
||||
*.nuget.props
|
||||
*.nuget.targets
|
||||
|
||||
# .NET Core
|
||||
project.lock.json
|
||||
project.fragment.lock.json
|
||||
artifacts/
|
||||
|
||||
# Development containers
|
||||
.devcontainer/.env
|
||||
|
||||
# Local configuration files
|
||||
appsettings.local.json
|
||||
appsettings.*.local.json
|
||||
config/local.json
|
||||
|
||||
# Temporary files
|
||||
*.tmp
|
||||
*.temp
|
||||
.tmp/
|
||||
.temp/
|
||||
|
||||
# IDE specific
|
||||
*.swp
|
||||
*.swo
|
||||
*~
|
||||
|
||||
# OS specific
|
||||
.DS_Store
|
||||
Thumbs.db
|
||||
|
||||
# NinjaTrader specific
|
||||
*.ninjatrader
|
||||
*.nt8addon
|
||||
|
||||
# Custom tools and scripts output
|
||||
tools/output/
|
||||
market-data/*.csv
|
||||
replay-data/
|
||||
```
|
||||
|
||||
**`Directory.Build.props`**
|
||||
```xml
|
||||
<Project>
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<LangVersion>10.0</LangVersion>
|
||||
<Nullable>enable</Nullable>
|
||||
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
|
||||
<EnforceCodeStyleInBuild>true</EnforceCodeStyleInBuild>
|
||||
<GenerateDocumentationFile>true</GenerateDocumentationFile>
|
||||
<Company>NT8 Institutional</Company>
|
||||
<Product>NT8 SDK</Product>
|
||||
<Copyright>Copyright © 2025</Copyright>
|
||||
<Version>0.1.0</Version>
|
||||
<AssemblyVersion>0.1.0.0</AssemblyVersion>
|
||||
<FileVersion>0.1.0.0</FileVersion>
|
||||
|
||||
<!-- Code Analysis -->
|
||||
<EnableNETAnalyzers>true</EnableNETAnalyzers>
|
||||
<AnalysisLevel>6.0</AnalysisLevel>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)' == 'Debug'">
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<DebugType>portable</DebugType>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(Configuration)' == 'Release'">
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<Optimize>true</Optimize>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.CodeAnalysis.NetAnalyzers" Version="6.0.0">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
|
||||
</PackageReference>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
```
|
||||
|
||||
**`.editorconfig`**
|
||||
```ini
|
||||
# EditorConfig is awesome: https://EditorConfig.org
|
||||
|
||||
# top-most EditorConfig file
|
||||
root = true
|
||||
|
||||
[*]
|
||||
indent_style = space
|
||||
charset = utf-8
|
||||
trim_trailing_whitespace = true
|
||||
insert_final_newline = true
|
||||
|
||||
[*.{cs,csx,vb,vbx}]
|
||||
indent_size = 4
|
||||
end_of_line = crlf
|
||||
|
||||
[*.{json,js,yml,yaml,xml}]
|
||||
indent_size = 2
|
||||
|
||||
[*.md]
|
||||
trim_trailing_whitespace = false
|
||||
|
||||
# C# formatting rules
|
||||
[*.cs]
|
||||
# Organize usings
|
||||
dotnet_sort_system_directives_first = true
|
||||
dotnet_separate_import_directive_groups = false
|
||||
|
||||
# this. preferences
|
||||
dotnet_style_qualification_for_field = false:suggestion
|
||||
dotnet_style_qualification_for_property = false:suggestion
|
||||
dotnet_style_qualification_for_method = false:suggestion
|
||||
dotnet_style_qualification_for_event = false:suggestion
|
||||
|
||||
# Language keywords vs BCL types preferences
|
||||
dotnet_style_predefined_type_for_locals_parameters_members = true:suggestion
|
||||
dotnet_style_predefined_type_for_member_access = true:suggestion
|
||||
|
||||
# Modifier preferences
|
||||
dotnet_style_require_accessibility_modifiers = for_non_interface_members:suggestion
|
||||
dotnet_style_readonly_field = true:suggestion
|
||||
|
||||
# Expression-level preferences
|
||||
dotnet_style_object_initializer = true:suggestion
|
||||
dotnet_style_collection_initializer = true:suggestion
|
||||
dotnet_style_explicit_tuple_names = true:suggestion
|
||||
dotnet_style_null_propagation = true:suggestion
|
||||
dotnet_style_coalesce_expression = true:suggestion
|
||||
dotnet_style_prefer_is_null_check_over_reference_equality_method = true:suggestion
|
||||
dotnet_style_prefer_inferred_tuple_names = true:suggestion
|
||||
dotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion
|
||||
|
||||
# C# preferences
|
||||
csharp_prefer_var_for_built_in_types = false:suggestion
|
||||
csharp_prefer_var_when_type_is_apparent = true:suggestion
|
||||
csharp_prefer_var_elsewhere = false:suggestion
|
||||
```
|
||||
|
||||
**`.gitea/workflows/build.yml`**
|
||||
```yaml
|
||||
name: Build and Test
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ main, develop ]
|
||||
pull_request:
|
||||
branches: [ main ]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Setup .NET
|
||||
uses: actions/setup-dotnet@v3
|
||||
with:
|
||||
dotnet-version: '6.0.x'
|
||||
|
||||
- name: Restore dependencies
|
||||
run: dotnet restore
|
||||
|
||||
- name: Build
|
||||
run: dotnet build --no-restore --configuration Release
|
||||
|
||||
- name: Test
|
||||
run: dotnet test --no-build --configuration Release --verbosity normal --collect:"XPlat Code Coverage"
|
||||
|
||||
- name: Upload coverage reports
|
||||
uses: codecov/codecov-action@v3
|
||||
with:
|
||||
files: ./coverage.cobertura.xml
|
||||
```
|
||||
|
||||
**`README.md`**
|
||||
```markdown
|
||||
# NT8 Institutional SDK
|
||||
|
||||
Professional-grade algorithmic trading SDK for NinjaTrader 8, built for institutional use with comprehensive risk management and deterministic execution.
|
||||
|
||||
## 🚀 Quick Start
|
||||
|
||||
### Prerequisites
|
||||
- .NET 6.0 SDK
|
||||
- Visual Studio Code + Docker Desktop (recommended)
|
||||
- Git
|
||||
|
||||
### Setup (5 minutes)
|
||||
```bash
|
||||
# Clone repository
|
||||
git clone <repository-url>
|
||||
cd nt8-institutional-sdk
|
||||
|
||||
# Verify setup
|
||||
dotnet build && dotnet test
|
||||
```
|
||||
|
||||
## 📋 Project Structure
|
||||
|
||||
```
|
||||
src/
|
||||
├── NT8.Core/ # Core SDK functionality
|
||||
│ ├── Risk/ # Risk management system
|
||||
│ ├── Sizing/ # Position sizing algorithms
|
||||
│ ├── Logging/ # Structured logging
|
||||
│ └── Common/ # Shared interfaces and models
|
||||
├── NT8.Strategies/ # Strategy implementations
|
||||
├── NT8.Adapters/ # NinjaTrader integration
|
||||
└── NT8.Contracts/ # API contracts
|
||||
|
||||
tests/ # Comprehensive test suite
|
||||
tools/ # Development and deployment tools
|
||||
docs/ # Technical documentation
|
||||
```
|
||||
|
||||
## 🏗️ Architecture Principles
|
||||
|
||||
- **Risk First**: All trades pass through risk management before execution
|
||||
- **Deterministic**: Identical inputs produce identical outputs for testing
|
||||
- **Modular**: Strategies are thin plugins, SDK handles infrastructure
|
||||
- **Observable**: Structured logging with correlation IDs throughout
|
||||
|
||||
## 📊 Current Status: Phase 0 Development
|
||||
|
||||
### ✅ Completed
|
||||
- Development environment and tooling
|
||||
- Core interfaces and models
|
||||
- Basic project structure
|
||||
|
||||
### 🚧 In Progress
|
||||
- Risk management implementation
|
||||
- Position sizing algorithms
|
||||
- Basic strategy framework
|
||||
- Comprehensive unit testing
|
||||
|
||||
### 📅 Next (Phase 1)
|
||||
- Order management system
|
||||
- NinjaTrader integration
|
||||
- Market data handling
|
||||
- Advanced testing and validation
|
||||
|
||||
## 📄 License
|
||||
|
||||
Proprietary - Internal use only
|
||||
```
|
||||
|
||||
### **Step 3: Create Solution and Projects**
|
||||
|
||||
Run these commands to create the .NET solution and projects:
|
||||
|
||||
```bash
|
||||
# Create solution file
|
||||
dotnet new sln -n NT8-SDK
|
||||
|
||||
# Create core projects
|
||||
dotnet new classlib -n NT8.Core -o src/NT8.Core --framework net6.0
|
||||
dotnet new classlib -n NT8.Adapters -o src/NT8.Adapters --framework net6.0
|
||||
dotnet new classlib -n NT8.Strategies -o src/NT8.Strategies --framework net6.0
|
||||
dotnet new classlib -n NT8.Contracts -o src/NT8.Contracts --framework net6.0
|
||||
|
||||
# Create test projects
|
||||
dotnet new xunit -n NT8.Core.Tests -o tests/NT8.Core.Tests --framework net6.0
|
||||
dotnet new xunit -n NT8.Integration.Tests -o tests/NT8.Integration.Tests --framework net6.0
|
||||
|
||||
# Add projects to solution
|
||||
dotnet sln add src/NT8.Core/NT8.Core.csproj
|
||||
dotnet sln add src/NT8.Adapters/NT8.Adapters.csproj
|
||||
dotnet sln add src/NT8.Strategies/NT8.Strategies.csproj
|
||||
dotnet sln add src/NT8.Contracts/NT8.Contracts.csproj
|
||||
dotnet sln add tests/NT8.Core.Tests/NT8.Core.Tests.csproj
|
||||
dotnet sln add tests/NT8.Integration.Tests/NT8.Integration.Tests.csproj
|
||||
```
|
||||
|
||||
### **Step 4: Add Required NuGet Packages**
|
||||
|
||||
```bash
|
||||
# Add packages to NT8.Core
|
||||
dotnet add src/NT8.Core/NT8.Core.csproj package Microsoft.Extensions.Configuration
|
||||
dotnet add src/NT8.Core/NT8.Core.csproj package Microsoft.Extensions.Configuration.Json
|
||||
dotnet add src/NT8.Core/NT8.Core.csproj package Microsoft.Extensions.Logging
|
||||
dotnet add src/NT8.Core/NT8.Core.csproj package Microsoft.Extensions.DependencyInjection
|
||||
dotnet add src/NT8.Core/NT8.Core.csproj package Newtonsoft.Json
|
||||
dotnet add src/NT8.Core/NT8.Core.csproj package FluentValidation
|
||||
|
||||
# Add test packages
|
||||
dotnet add tests/NT8.Core.Tests/NT8.Core.Tests.csproj package FluentAssertions
|
||||
dotnet add tests/NT8.Core.Tests/NT8.Core.Tests.csproj package Bogus
|
||||
dotnet add tests/NT8.Core.Tests/NT8.Core.Tests.csproj package Moq
|
||||
|
||||
dotnet add tests/NT8.Integration.Tests/NT8.Integration.Tests.csproj package FluentAssertions
|
||||
dotnet add tests/NT8.Integration.Tests/NT8.Integration.Tests.csproj package Bogus
|
||||
dotnet add tests/NT8.Integration.Tests/NT8.Integration.Tests.csproj package Moq
|
||||
```
|
||||
|
||||
### **Step 5: Validation**
|
||||
|
||||
Run this command to verify everything is set up correctly:
|
||||
|
||||
```bash
|
||||
dotnet build --configuration Release
|
||||
```
|
||||
|
||||
**Expected Result:** Build succeeds with 0 warnings and 0 errors
|
||||
|
||||
If you see any errors, check:
|
||||
1. All directories were created correctly
|
||||
2. All files were copied to the right locations
|
||||
3. .NET 6.0 SDK is installed
|
||||
4. All NuGet packages were added successfully
|
||||
|
||||
## **SUCCESS CRITERIA**
|
||||
|
||||
✅ Repository structure matches specification exactly
|
||||
✅ All starter files are in correct locations
|
||||
✅ Solution builds successfully with 0 warnings
|
||||
✅ All NuGet packages are properly referenced
|
||||
✅ CI/CD pipeline configuration is in place
|
||||
|
||||
**Once this is complete, you're ready for Step 2: Core Interfaces**
|
||||
Reference in New Issue
Block a user