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 research workbench for developing and evaluating intraday and swing trading ideas on CFD and spot market data. Use its web application to organize and explore historical price and context data, run backtests, and inspect results alongside execution, cost, and robustness assumptions. It is a research tool, 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
- Flexible strategy inputs: Implement strategy logic in
src/. Themain()entry point receives ordered candles and a prepared execution context, so strategies do not need to query the database. This context can include configured related market-pair data at other timeframes and fundamental data observations available as of each decision time, helping strategies combine market and fundamental context without look-ahead from unreleased observations. - Native-code option: The isolated strategy boundary makes it practical to connect strategy calculations to C/C++ through PHP FFI when the runtime and FFI bridge are configured; a C++ strategy runner is not built in.
- Realistic execution assumptions: Configure transaction fees and holding costs, slippage, limit orders, and partial fills for backtest simulations.
- Research and evaluation: Run single-pair or market-type backtests, then inspect results with performance metrics, chronological clusters, stress analysis, and Monte Carlo trade-sequence analysis.
The primary pair and timeframe drive strategy decisions. Related pair and timeframe data are available as context for strategy logic; 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.
Strategies are executed through the existing web backtest workflow; this
project does not provide a strategy-execution CLI. Laravel features and
adapters live in laravel/app/; strategy code and types live in src/.
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 composer run setup composer run dev
Administrative Artisan commands remain available from the root, for example:
php artisan migrate
php artisan test --compact
See the documentation index for installation, configuration, architecture, strategy development, and user guides.