Your bot shows a 40% win rate, but the balance isn't growing — this is a classic symptom of errors in P&L calculation. Deposits melt due to invisible commissions and funding rates. We build turnkey P&L monitoring systems — zero configuration or layering on top of existing infrastructure. Proper P&L accounting turns your bot from a black box into a fully transparent tool. Average commission savings after implementation: 15–25%.
Types of P&L: realized, unrealized, total
Realized P&L — profit from closed trades. Fact: money is locked in. Unrealized P&L (mark-to-market) — current revaluation of open positions at market price. It changes with every tick. Fee-adjusted P&L — real profitability after all commissions. A bot with 60% win rate can be unprofitable if the average win is too small relative to the commission. Total P&L: realized + unrealized. But for risk management, separating them is critical — unrealized can evaporate.
How to correctly calculate P&L including commissions?
The standard mistake is to calculate P&L as current price × size − entry price × size. This ignores:
- Funding rate for perpetual futures (can eat 20%+ of profits)
- Slippage at execution (difference between execution price and planned price)
- Maker/taker fees (different for different order types)
- Borrow rate for margin trading
Our solution adjusts P&L for all these parameters, so you see the net result. Without this adjustment, many bots lose up to 30% of profits.
Time slices and attribution
Attribution is critical: without it, you won't know what causes a loss — strategy A or a bias towards maker orders. P&L monitoring requires breakdown by time and source.
| Slice | Purpose |
|---|---|
| Intraday (hourly) | See within the day when trading is active |
| Daily | Primary operational metric |
| Weekly/Monthly | Assess strategic efficiency |
| Rolling 30/90 days | Remove seasonality |
P&L Attribution — breakdown by source. How much did strategy A bring, how much strategy B, how much was lost on funding, how much on commissions. Without attribution, it's unclear what to optimize. Benchmark comparison: comparison with passive Buy & Hold strategy. If the bot earned 15% in a month but BTC rose 25%, the strategy underperforms the market.
Why separating realized and unrealized P&L is critical for risk management?
Realized reflects actual earnings, unrealized is paper profit subject to market fluctuations. If you don't separate them, you might mistakenly increase risk based on unrealized. For example, an open position with unrealized +50% may make the bot seem successful, but on a sharp reversal the profit will disappear. We set alerts on unrealized drawdown thresholds to lock in profits in time.
Key metrics
Sharpe Ratio: (return − risk-free rate) / standard deviation. Above 2.0 is good for a trading bot. Shows return per unit risk. Maximum Drawdown: maximum decline from peak to trough. If drawdown reaches 20%, that's a signal something is wrong. Calmar Ratio: annual return / maximum drawdown. Allows comparing strategies with different risk. Win Rate vs Profit Factor: win rate without context is useless. Profit Factor = sum of wins / sum of losses. PF > 1.5 is a good benchmark.
Database comparison for P&L
| DBMS | Write speed | Query complexity | Recommendation |
|---|---|---|---|
| TimescaleDB | ~100k row/s | Low (SQL) | For complex analytics |
| InfluxDB | ~1M point/s | Medium (Flux) | For high-frequency logs |
| PostgreSQL | ~50k row/s | High (manual partitioning) | Only for small volumes |
Data storage implementation
P&L data requires fast queries over time ranges and aggregations. TimescaleDB handles time queries 5x faster than plain PostgreSQL, and InfluxDB provides write speeds up to 1 million points/sec. We use TimescaleDB for complex analytics: it supports SQL, automatic hypertables, and powerful window functions. InfluxDB is good for high-frequency logs but less flexible in aggregation. PostgreSQL without extensions requires manual partitioning and degrades in performance with millions of records.
Data structure:
CREATE TABLE pnl_snapshots ( timestamp TIMESTAMPTZ NOT NULL, bot_id UUID NOT NULL, strategy_id UUID, realized_pnl NUMERIC(18,8), unrealized_pnl NUMERIC(18,8), fees_paid NUMERIC(18,8), funding_paid NUMERIC(18,8), PRIMARY KEY (timestamp, bot_id) ); More about implementation
- Collecting data from exchanges — we connect to WebSocket and REST APIs (Binance, Bybit, OKX), collect trades, orders, positions, funding history.
- Aggregation and calculation — in real time we compute realized/unrealized P&L, commissions, funding, attribution. We use streaming via Kafka or RabbitMQ.
- Storage — we write snapshots to TimescaleDB at 1-minute intervals. Hypertables automatically partition by time.
- Visualization — we build dashboards in Grafana: equity curve, daily P&L, drawdown chart, attribution pie.
- Alerting — we configure notifications in Telegram/Discord when daily loss exceeds threshold (e.g., -5%) or when drawdown is triggered.
Visualization and alerting
Equity curve — main chart: cumulative return over time. Compare multiple strategies on one chart, highlight drawdown periods. Daily P&L bars — bar chart by day, color differentiation of profitable/loss-making days. Drawdown chart — visualization of current and historical drawdown. Alerts by P&L: if daily loss exceeds threshold — alert in Telegram/Discord/email. This is part of the risk management system, not just monitoring.
Deliverables
We deliver the project with a complete set of deliverables:
- Architecture documentation for storage and API
- Source code of P&L aggregators with exchange support (Binance, Bybit, OKX)
- Configured dashboards in Grafana / Metabase
- Alerts based on specified thresholds (daily loss, drawdown)
- Integration with your bot via REST/WebSocket
- Team training (2-hour workshop)
Our experience: 7+ years in trading system development, over 50 projects in the crypto space. We guarantee code quality and post-launch support. If you need such a system, get a consultation within 2 days.
Timelines and cost
Timelines range from 3 to 8 weeks depending on integration complexity and number of exchanges. Cost is calculated individually. Contact us — we'll assess your project in 2 business days.
A good P&L monitoring system accounts for 15–20% of the total value of a trading bot project — it gives understanding of what's happening and where to go.







