ML Infer gRPC Service
Runtime ML gating calls a Python gRPC inference service.
Public interface:
@tradejs/node- gRPC
Predictcontract (PredictRequest/PredictResponse)
Start / Stop
Start and stop the inference service with your deployment tooling (Docker/Kubernetes/systemd/etc).
Default endpoint:
127.0.0.1:50051
Set runtime address:
ML_GRPC_ADDRESS=127.0.0.1:50051
RPC Contract
PredictRequest:
strategy(string)features(map<string,double>)threshold(double)
PredictResponse:
probabilitythresholdpassed
Model Loading
Service resolves model files from MODEL_DIR:
- ensemble aliases:
<Strategy>.modelN.joblib - single alias:
<Strategy>.joblib
If ensemble files exist, prediction is mean probability across members.
Typical local setup:
- trained models are in
./data/ml/models - container uses
MODEL_DIR=/app/data/ml/models - host
./datais mounted to/app/datain infer container
So aliases written by training (./data/ml/models/<Strategy>.joblib) are immediately visible to inference.
Runtime Integration
On runtime side, ML gating:
- Builds ML payload from signal.
- Applies same window trim policy as train (
trimMlTrainingRowWindows(..., 5)). - Removes non-feature columns.
- Calls gRPC
Predict.
If service is unavailable, runtime logs error and returns null for ML decision.
Health Check
npx @tradejs/cli doctor --require-ml