{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://boat.local/quant60/schemas/signal.schema.json", "title": "Quant60 signal record", "description": "A point-in-time model output. It is not a target position or an order.", "type": "object", "additionalProperties": false, "required": [ "schema_version", "run_id", "signal_id", "as_of", "symbol", "horizon_trading_days", "score", "model_version", "data_version" ], "properties": { "schema_version": { "const": "1.0" }, "run_id": { "type": "string", "minLength": 1 }, "signal_id": { "type": "string", "minLength": 1 }, "as_of": { "type": "string", "format": "date-time" }, "symbol": { "$ref": "#/$defs/canonical_symbol" }, "horizon_trading_days": { "type": "integer", "minimum": 1 }, "score": { "type": "number" }, "expected_excess_return": { "type": [ "number", "null" ] }, "confidence": { "type": [ "number", "null" ], "minimum": 0, "maximum": 1 }, "model_version": { "type": "string", "minLength": 1 }, "data_version": { "type": "string", "minLength": 1 }, "feature_version": { "type": [ "string", "null" ] }, "metadata": { "type": "object" } }, "$defs": { "canonical_symbol": { "type": "string", "pattern": "^[0-9]{6}\\.(XSHG|XSHE|XBSE)$", "examples": [ "600000.XSHG", "000001.XSHE", "830799.XBSE" ] } } }