The Backtesting Platform is an interface that allows developers and traders to test their trading strategies, and general Python scripts with a range of various parameters quickly, and aggregate their results.
-
Frontend (Next.js Web Application)
- Allows user to login, submit jobs, and view previous jobs
- Deployed on Azure App Service
-
Backend API (Golang REST API)
- Manages job lifecycle and data flow
- Deployed on Azure App Service
-
Data Storage
- Azure SQL Server
- Stores job metadata
- Azure Blob Storage
- Stores trading Python scripts
- Stores input and data files
- Stores intermediate and aggregated job results
- Azure SQL Server
-
Job Processing
- Azure Service Bus
- Manages sub-task distribution
- Ensures reliable message delivery
- Azure Functions
- Executes trading strategy
- Processes individual sub-tasks
- Uploads results to Blob Storage
- Last node for job manages post-processing
- Azure Cache for Redis
- Manages job state
- Ensures each task is processed exactly once
- Ensures only one node attempts post-processing
- Azure Service Bus
backtesting-platform/
├── backtesting-client/ # Next.js web application
├── backtesting-server/ # Golang REST API
├── az-functions/runner/ # C# Azure Functions
