You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
228 lines
5.0 KiB
JSON
228 lines
5.0 KiB
JSON
{
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"$id": "https://example.local/schemas/backtest_config.schema.json",
|
|
"title": "BacktestConfig",
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"strategy_name",
|
|
"dataset_snapshot_id",
|
|
"universe",
|
|
"signal",
|
|
"risk",
|
|
"execution",
|
|
"reporting"
|
|
],
|
|
"properties": {
|
|
"strategy_name": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
},
|
|
"dataset_snapshot_id": {
|
|
"type": "string",
|
|
"minLength": 1
|
|
},
|
|
"universe": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"min_price",
|
|
"min_avg_dollar_volume",
|
|
"exclude_asset_types"
|
|
],
|
|
"properties": {
|
|
"min_price": {
|
|
"type": "number",
|
|
"minimum": 0
|
|
},
|
|
"min_avg_dollar_volume": {
|
|
"type": "number",
|
|
"minimum": 0
|
|
},
|
|
"exclude_asset_types": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"allowed_exchanges": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"signal": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"score_threshold",
|
|
"max_candidates_per_day",
|
|
"execution_timing"
|
|
],
|
|
"properties": {
|
|
"score_threshold": {
|
|
"type": "number"
|
|
},
|
|
"max_candidates_per_day": {
|
|
"type": "integer",
|
|
"minimum": 1
|
|
},
|
|
"execution_timing": {
|
|
"type": "string",
|
|
"enum": [
|
|
"next_open",
|
|
"next_close"
|
|
]
|
|
},
|
|
"decision_timing": {
|
|
"type": "string",
|
|
"enum": [
|
|
"reaction_close"
|
|
]
|
|
},
|
|
"ranking_fields": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"risk": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"per_trade_risk_pct",
|
|
"max_daily_new_risk_pct",
|
|
"max_positions",
|
|
"max_positions_per_sector"
|
|
],
|
|
"properties": {
|
|
"per_trade_risk_pct": {
|
|
"type": "number",
|
|
"exclusiveMinimum": 0
|
|
},
|
|
"max_daily_new_risk_pct": {
|
|
"type": "number",
|
|
"exclusiveMinimum": 0
|
|
},
|
|
"max_positions": {
|
|
"type": "integer",
|
|
"minimum": 1
|
|
},
|
|
"max_positions_per_sector": {
|
|
"type": "integer",
|
|
"minimum": 1
|
|
},
|
|
"max_position_value_pct": {
|
|
"type": "number",
|
|
"minimum": 0,
|
|
"maximum": 1
|
|
},
|
|
"max_adv_fraction": {
|
|
"type": "number",
|
|
"minimum": 0,
|
|
"maximum": 1
|
|
},
|
|
"cooldown_after_loss_streak": {
|
|
"type": "integer",
|
|
"minimum": 0
|
|
},
|
|
"cooldown_days": {
|
|
"type": "integer",
|
|
"minimum": 0
|
|
}
|
|
}
|
|
},
|
|
"execution": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"entry_fill_model",
|
|
"exit_fill_model",
|
|
"slippage_bps_base",
|
|
"same_bar_priority"
|
|
],
|
|
"properties": {
|
|
"entry_fill_model": {
|
|
"type": "string",
|
|
"enum": [
|
|
"next_open"
|
|
]
|
|
},
|
|
"exit_fill_model": {
|
|
"type": "string",
|
|
"enum": [
|
|
"daily_bar_approximation"
|
|
]
|
|
},
|
|
"slippage_bps_base": {
|
|
"type": "number",
|
|
"minimum": 0
|
|
},
|
|
"commission_per_share": {
|
|
"type": "number",
|
|
"minimum": 0
|
|
},
|
|
"same_bar_priority": {
|
|
"type": "string",
|
|
"enum": [
|
|
"stop_first_conservative",
|
|
"target_first_aggressive"
|
|
]
|
|
},
|
|
"stop_model": {
|
|
"type": "string"
|
|
},
|
|
"target_1_r": {
|
|
"type": "number",
|
|
"minimum": 0
|
|
},
|
|
"target_1_fraction": {
|
|
"type": "number",
|
|
"minimum": 0,
|
|
"maximum": 1
|
|
},
|
|
"trailing_model": {
|
|
"type": "string"
|
|
},
|
|
"max_holding_days": {
|
|
"type": "integer",
|
|
"minimum": 1
|
|
}
|
|
}
|
|
},
|
|
"reporting": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"write_trade_blotter",
|
|
"write_equity_curve",
|
|
"write_metrics_summary"
|
|
],
|
|
"properties": {
|
|
"write_trade_blotter": {
|
|
"type": "boolean"
|
|
},
|
|
"write_equity_curve": {
|
|
"type": "boolean"
|
|
},
|
|
"write_metrics_summary": {
|
|
"type": "boolean"
|
|
},
|
|
"generate_plots": {
|
|
"type": "boolean"
|
|
},
|
|
"attribution_buckets": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|