### Install Trading Analytics for Laravel via Composer Source: https://github.com/roundly-consulting/trading-analytics-for-laravel/blob/main/README.md Requires PHP 8.4 with ext-bcmath and Laravel 12 or 13. Run this command to install the package. ```bash composer require roundly-consulting/trading-analytics-for-laravel ``` -------------------------------- ### Read analytics results as bcmath strings Source: https://github.com/roundly-consulting/trading-analytics-for-laravel/blob/main/README.md Access computed metrics. Values are exact bcmath strings, ready for JSON. Examples include net P&L, win ratio, buy volume for a pair, max drawdown percentage, and Sharpe ratio. The full result matrix can be returned directly. ```php $analytics->realizedProfitAndLoss->net->global->total->total->toRawString(); // "-65.00" $analytics->wins->winRatio->global->total->toRawString(); // "0.50" $analytics->volume->forPair('BTC/USD')->buy->total->toRawString(); // "0.10" $analytics->maxDrawdown->percentage; $analytics->riskAdjustedReturns->sharpeRatio; return $analytics; // the full result matrix as JSON ``` -------------------------------- ### Run analytics engine with TradingAnalytics::for() and TradingAnalytics::calculate() Source: https://github.com/roundly-consulting/trading-analytics-for-laravel/blob/main/README.md Two ways to run analytics: use TradingAnalytics::for($trades)->scale(2)->calculate() for an in-memory array, or TradingAnalytics::calculate() with a query builder to stream rows ordered by close time. The query approach processes one page at a time. ```php use Illuminate\Support\Facades\DB; use RoundlyConsulting\TradingAnalytics\Facades\TradingAnalytics; $analytics = TradingAnalytics::for($trades)->scale(2)->calculate(); // …or stream a query ordered by close time, one page of rows at a time: $history = TradingAnalytics::calculate( DB::table('trades')->where('user_id', $user->id)->orderBy('close_time')->orderBy('id'), ); ``` -------------------------------- ### Build trades with Trade::make() Source: https://github.com/roundly-consulting/trading-analytics-for-laravel/blob/main/README.md Create an array of Trade objects using Trade::make() with named arguments. Each trade requires baseCurrency, quoteCurrency, openPrice, closePrice, size, direction, openTime, commission, and closeTime. Direction is an enum from the package. ```php use RoundlyConsulting\TradingAnalytics\DataTransferObjects\Trade; use RoundlyConsulting\TradingAnalytics\Enums\Direction; $trades = [ Trade::make(baseCurrency: 'BTC', quoteCurrency: 'USD', openPrice: '45000.00', closePrice: '45500.00', size: '0.1', direction: Direction::BUY, openTime: '2024-01-15 12:30', commission: '15.00', closeTime: '2024-01-15 14:30'), Trade::make(baseCurrency: 'ETH', quoteCurrency: 'USD', openPrice: '2500.00', closePrice: '2450.00', size: '2', direction: Direction::BUY, openTime: '2024-01-16 09:00', closeTime: '2024-01-16 11:00'), ]; ```