pandu / nikaido
Pandu/Nikaido — A Laravel-based framework for systematic trading and investment strategy research, backtesting, and robustness analysis.
Requires
- php: ^8.2
- laravel/framework: ^12.0
- laravel/tinker: ^2.10.1
- pandu/exact: ^2.2.0
- pandu/gauss: ^0.3.1
Requires (Dev)
- fakerphp/faker: ^1.23
- laravel/pail: ^1.2.2
- laravel/pint: ^1.24
- laravel/sail: ^1.41
- mockery/mockery: ^1.6
- nunomaduro/collision: ^8.6
- phpunit/phpunit: ^11.5.50
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
AI assistants: Read AGENTS.md for repository-specific guidance before making changes.
Nikaido is a strategy research workbench for intraday and swing ideas on CFD and spot market data. It is designed to keep users focused on strategy development: configure runs in the UI and review backtest and evaluation results in one place, reducing cognitive load from switching between research tools. Nikaido is not a live-trading platform, broker connection, or signal service. Bring your own historical data and instrument assumptions; see market support for current modeling limits.
What it offers
- C++23 strategy and backtest engine: The native runtime executes a C++ strategy plugin, simulates intrabar events, orders, fills, costs, and capital, then persists completed results. The built-in strategy is an illustrative code example.
- Configurable execution assumptions: Set transaction fees and holding costs, slippage, limit orders, and partial fills for backtest simulations.
- Native evaluation: Review performance metrics, chronological clusters, stress analysis, and Monte Carlo trade-sequence analysis calculated by the C++ evaluation module.
- Single and multi-pair runs: Configure one pair or eligible pairs in the Workbench, then track queued runs and inspect persisted results.
The primary pair and timeframe drive the built-in strategy. The current single-pair runtime receives primary candles, contract and execution configuration, and optional cash flows; related-pair, news, and fundamental datasets are not part of this runtime contract. Market-type backtests run each pair separately rather than generating synchronized multi-asset decisions. Robustness analyses explore assumptions and historical outcomes; they do not prove future profitability.
The Workbench configures backtest assumptions but does not select a strategy
or edit its rules. The built-in C++ plugin runs by default; an ABI-compatible
plugin can be selected for the native engine through
NIKAIDO_STRATEGY_LIBRARY. Runs are initiated through the Workbench/API;
nikaido-engine is the native backend process, not a separate user-facing
research interface. The current strategy input does not include related-pair,
News, or Fundamental datasets. Laravel features and adapters live in
laravel/app/; strategy code and types live in src/. See the
strategy guide and C++ engine reference.
Laravel infrastructure, web resources, tests, and framework storage live in
laravel/. Composer dependencies and the primary .env file remain at the
repository root.
composer install php artisan nikaido:setup npm --prefix laravel install npm --prefix laravel run build composer run dev
Administrative Artisan commands remain available from the root, for example:
php artisan test --compact
See the documentation index for installation, configuration, architecture, strategy development, and user guides.