@if (strategyService.loading()) {
@for (_ of [1,2,3,4,5,6]; track $index) { }
} @else { @let strategy = strategyService.selectedStrategy(); @if (strategy) {
@if (strategy.is_paused) { }
@if (strategy.is_paused) {
Strategy is paused — new trades blocked. Open trades can still be managed and exited normally.
}
@if (stats(); as s) {
Net P&L
{{ formatCurrency(s.net_pnl) }}
Total P&L
{{ formatCurrency(s.total_pnl) }}
Trades
{{ s.total_trades }} {{ s.open_trades }} open
Win Rate
{{ s.win_rate }}%
Sharpe
{{ s.sharpe_ratio.toFixed(2) }}
Max DD
{{ formatCurrency(s.max_drawdown) }}
}

Cumulative P&L

P&L Distribution

Win / Loss

@if (stats(); as s) {
Avg win {{ formatCurrency(s.avg_win) }}
Avg loss {{ formatCurrency(s.avg_loss) }}
Best streak {{ s.max_win_streak }}
Worst streak {{ s.max_loss_streak }}
Profit factor {{ s.profit_factor.toFixed(2) }}
} @else {
No data
}
@for (tab of tabs; track tab) { {{ tab }} }
@if (activeTab() === 'Trades') {

Trade History

View all in Trades
} @if (activeTab() === 'Orders') {

Open Orders

} @if (activeTab() === 'Runs') {
} @if (activeTab() === 'Universe') {
} @if (activeTab() === 'Exchanges') { @if (stagedExchangeIds().has(row.id)) { } @else { }
@if (!showExchangePicker()) {

Exchanges

Exchanges this strategy can use for order execution.

} @else {

Select Exchanges

{{ stagedExchangeIds().size }} staged

}
} @if (activeTab() === 'Configuration') {
Base asset{{ strategy.base_asset_name ?? '—' }}
Strategy{{ strategy.strategy_ref }}
Active{{ strategy.is_active ? 'Yes' : 'No' }}
@if (strategy.created_at) {
Created{{ strategy.created_at | date:'mediumDate' }}
} @if (strategy.last_trade_at) {
Last Trade{{ strategy.last_trade_at | date:'medium' }}
}
@if (strategy.description) {

{{ strategy.description }}

} @if (strategy.parameters) {
Parameters @if (strategy.parameter_schema) { @if (!editing()) { } @else {
} }
@if (strategy.parameter_schema) { } @else {
{{ strategy.parameters | json }}
}
} @if (stats(); as s) {
Performance
Total PnL{{ formatCurrency(s.total_pnl) }}
Total Fees{{ formatCurrency(s.total_fees) }}
Net PnL{{ formatCurrency(s.net_pnl) }}
Avg Trade{{ formatCurrency(s.avg_trade_pnl) }}
Median{{ formatCurrency(s.median_pnl) }}
Profit Factor{{ s.profit_factor.toFixed(2) }}
Payoff{{ s.payoff_ratio.toFixed(2) }}
Expectancy{{ formatCurrency(s.expectancy) }}
Risk
Sortino{{ s.sortino_ratio.toFixed(3) }}
Max DD{{ formatCurrency(s.max_drawdown) }}
Max DD Duration{{ s.max_drawdown_duration }} trades
Avg Win{{ formatCurrency(s.avg_win) }}
Avg Loss{{ formatCurrency(s.avg_loss) }}
Max Win{{ formatCurrency(s.max_win) }}
Max Loss{{ formatCurrency(s.max_loss) }}
Std Dev{{ formatCurrency(s.std_dev_pnl) }}
Trades
Wins{{ s.wins }}
Losses{{ s.losses }}
Best Streak{{ s.max_win_streak }}
Worst Streak{{ s.max_loss_streak }}
Time / Distribution
Avg Holding{{ formatDuration(s.avg_holding_seconds) }}
Avg Hold (Win){{ formatDuration(s.avg_holding_wins_seconds) }}
Avg Hold (Loss){{ formatDuration(s.avg_holding_losses_seconds) }}
Skewness{{ s.skewness.toFixed(3) }}
Kurtosis{{ s.kurtosis.toFixed(3) }}
}
}
} }