Phase 0 completion: NT8 SDK core framework with risk management and position sizing
Some checks failed
Build and Test / build (push) Has been cancelled

This commit is contained in:
Billy Valentine
2025-09-09 17:06:37 -04:00
parent 97e5050d3e
commit 92f3732b3d
109 changed files with 38593 additions and 380 deletions

View 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**