ML Signal Buy · Sell · Hold predictions powered by machine learning
Label params:
🌐 Universal Model — train on multiple stocks Uses all stocks in your DB with financial data (862 available)
Last run: {{ univResult.n_stocks }} stocks · {{ univResult.total_rows?.toLocaleString() }} rows
The universal model was trained on 50 stocks — predict on any NSE stock
{{ line }}
Trained on ({{ univResult.stocks_used?.length }})
{{ s }}
Skipped ({{ univResult.stocks_failed?.length }})
{{ s }}

No signal yet

Enter a symbol and click Get signal.

{{ signalResult.symbol || sym }} · {{ signalResult.strategy?.toUpperCase() }} {{ signalResult.date }}
{{ signalResult.signal === 'BUY' ? '▲' : signalResult.signal === 'SELL' ? '▼' : '—' }} {{ signalResult.signal }}
Confidence
{{ pct(signalResult.confidence) }}%
Class probabilities
{{ k }}: {{ pct(v) }}%
⚠️ ML signals are probabilistic, not financial advice. Paper trade before using real capital.

No training run yet

Enter a symbol and click Train model.

Bars trained (80%)
{{ trainResult.bars_trained?.toLocaleString() }}
OOS bars (20%)
{{ trainResult.oos_bars?.toLocaleString() }}
Accuracy (CV)
{{ pct(trainResult.accuracy) }}%
BUY precision
{{ pct(trainResult.buy_precision) }}%
SELL precision
{{ pct(trainResult.sell_precision) }}%
BUY recall
{{ pct(trainResult.buy_recall) }}%
Algorithm
{{ trainResult.strategy?.toUpperCase() }}
Top 10 features (importance)
{{ name }}
{{ score.toFixed(3) }}
Walk-forward CV report
Class Precision Recall F1 Support
{{ cls }} {{ pct(trainResult.cv_report?.[cls]?.precision) }}% {{ pct(trainResult.cv_report?.[cls]?.recall) }}% {{ pct(trainResult.cv_report?.[cls]?.['f1-score']) }}% {{ trainResult.cv_report?.[cls]?.support ?? '—' }}

No universal model trained yet

Set the number of stocks above and click Train universal model.

Stocks trained
{{ univResult.n_stocks }}
Total rows
{{ univResult.total_rows?.toLocaleString() }}
Train rows (80%)
{{ univResult.bars_trained?.toLocaleString() }}
OOS rows (20%)
{{ univResult.oos_bars?.toLocaleString() }}
Accuracy (OOS)
{{ pct(univResult.accuracy) }}%
BUY precision
{{ pct(univResult.buy_precision) }}%
SELL precision
{{ pct(univResult.sell_precision) }}%
Algorithm
{{ univResult.strategy?.toUpperCase() }}
Top 10 features (importance)
{{ name }}
{{ score.toFixed(3) }}
OOS classification report
ClassPrecisionRecallF1Support
{{ cls }} {{ pct(univResult.cv_report?.[cls]?.precision) }}% {{ pct(univResult.cv_report?.[cls]?.recall) }}% {{ pct(univResult.cv_report?.[cls]?.['f1-score']) }}% {{ univResult.cv_report?.[cls]?.support ?? '—' }}
To get signals from this model: type UNIVERSAL in the Symbol field and click Get signal or Backtest.

No backtest yet

Train a model first, then click Backtest.

Out-of-sample period: {{ backtestResult.oos_start_date }}{{ backtestResult.oos_end_date }} ({{ backtestResult.oos_bars }} bars — model never saw this data)
Total return
{{ backtestResult.total_return_pct }}%
Sharpe ratio
{{ backtestResult.sharpe_ratio }}
Max drawdown
{{ backtestResult.max_drawdown_pct }}%
Win rate
{{ backtestResult.win_rate_pct }}%
Total trades
{{ backtestResult.total_trades }}
Avg win
{{ backtestResult.avg_win_trade_pct }}%
Avg loss
{{ backtestResult.avg_loss_trade_pct }}%
Engine
{{ backtestResult.engine }}
Evaluation checklist
{{ activeTrainResult?.buy_precision >= 0.55 ? '✓' : '✗' }} BUY precision ≥ 55% (got {{ activeTrainResult ? pct(activeTrainResult.buy_precision)+'%' : '—' }})
{{ activeTrainResult?.sell_precision >= 0.55 ? '✓' : '✗' }} SELL precision ≥ 55% (got {{ activeTrainResult ? pct(activeTrainResult.sell_precision)+'%' : '—' }})
{{ backtestResult.sharpe_ratio >= 0.8 ? '✓' : '✗' }} Sharpe ratio ≥ 0.8 (got {{ backtestResult.sharpe_ratio }})
{{ backtestResult.max_drawdown_pct <= 20 ? '✓' : '✗' }} Max drawdown ≤ 20% (got {{ backtestResult.max_drawdown_pct }}%)
{{ backtestResult.win_rate_pct >= 50 ? '✓' : '✗' }} Win rate ≥ 50% (got {{ backtestResult.win_rate_pct }}%)
☐ Paper trade 60 days before using real capital

No models saved yet

Train a model to see it listed here.

Saved models ({{ modelsList.length }})
Symbol Strategy Saved at
{{ m.symbol }} {{ m.strategy_name?.toUpperCase() }} {{ formatTs(m.ts) }}