feat(EXEC-001A): add named strategy templates
This commit is contained in:
253
config/strategy_templates.json
Normal file
253
config/strategy_templates.json
Normal file
@@ -0,0 +1,253 @@
|
||||
{
|
||||
"templates": [
|
||||
{
|
||||
"template_id": "protective-put-atm-12m-v1",
|
||||
"slug": "protective-put-atm-12m",
|
||||
"display_name": "Protective Put ATM",
|
||||
"description": "Full downside protection using a 12-month at-the-money put.",
|
||||
"template_kind": "protective_put",
|
||||
"status": "active",
|
||||
"version": 1,
|
||||
"underlying_symbol": "GLD",
|
||||
"contract_mode": "continuous_units",
|
||||
"legs": [
|
||||
{
|
||||
"leg_id": "protective-put-atm-12m-v1-leg-1",
|
||||
"side": "long",
|
||||
"option_type": "put",
|
||||
"allocation_weight": 1.0,
|
||||
"strike_rule": {
|
||||
"rule_type": "spot_pct",
|
||||
"value": 1.0
|
||||
},
|
||||
"target_expiry_days": 365,
|
||||
"quantity_rule": "target_coverage_pct",
|
||||
"target_coverage_pct": 1.0
|
||||
}
|
||||
],
|
||||
"roll_policy": {
|
||||
"policy_type": "hold_to_expiry",
|
||||
"days_before_expiry": null,
|
||||
"rebalance_on_new_deposit": false
|
||||
},
|
||||
"entry_policy": {
|
||||
"entry_timing": "scenario_start_close",
|
||||
"stagger_days": null
|
||||
},
|
||||
"tags": [
|
||||
"system",
|
||||
"protective_put",
|
||||
"conservative"
|
||||
],
|
||||
"created_at": "2026-03-24T00:00:00+00:00",
|
||||
"updated_at": "2026-03-24T00:00:00+00:00"
|
||||
},
|
||||
{
|
||||
"template_id": "protective-put-95pct-12m-v1",
|
||||
"slug": "protective-put-95pct-12m",
|
||||
"display_name": "Protective Put 95%",
|
||||
"description": "Lower-cost 12-month protective put using a 95% spot strike.",
|
||||
"template_kind": "protective_put",
|
||||
"status": "active",
|
||||
"version": 1,
|
||||
"underlying_symbol": "GLD",
|
||||
"contract_mode": "continuous_units",
|
||||
"legs": [
|
||||
{
|
||||
"leg_id": "protective-put-95pct-12m-v1-leg-1",
|
||||
"side": "long",
|
||||
"option_type": "put",
|
||||
"allocation_weight": 1.0,
|
||||
"strike_rule": {
|
||||
"rule_type": "spot_pct",
|
||||
"value": 0.95
|
||||
},
|
||||
"target_expiry_days": 365,
|
||||
"quantity_rule": "target_coverage_pct",
|
||||
"target_coverage_pct": 1.0
|
||||
}
|
||||
],
|
||||
"roll_policy": {
|
||||
"policy_type": "hold_to_expiry",
|
||||
"days_before_expiry": null,
|
||||
"rebalance_on_new_deposit": false
|
||||
},
|
||||
"entry_policy": {
|
||||
"entry_timing": "scenario_start_close",
|
||||
"stagger_days": null
|
||||
},
|
||||
"tags": [
|
||||
"system",
|
||||
"protective_put",
|
||||
"balanced"
|
||||
],
|
||||
"created_at": "2026-03-24T00:00:00+00:00",
|
||||
"updated_at": "2026-03-24T00:00:00+00:00"
|
||||
},
|
||||
{
|
||||
"template_id": "protective-put-90pct-12m-v1",
|
||||
"slug": "protective-put-90pct-12m",
|
||||
"display_name": "Protective Put 90%",
|
||||
"description": "Cost-sensitive 12-month protective put using a 90% spot strike.",
|
||||
"template_kind": "protective_put",
|
||||
"status": "active",
|
||||
"version": 1,
|
||||
"underlying_symbol": "GLD",
|
||||
"contract_mode": "continuous_units",
|
||||
"legs": [
|
||||
{
|
||||
"leg_id": "protective-put-90pct-12m-v1-leg-1",
|
||||
"side": "long",
|
||||
"option_type": "put",
|
||||
"allocation_weight": 1.0,
|
||||
"strike_rule": {
|
||||
"rule_type": "spot_pct",
|
||||
"value": 0.9
|
||||
},
|
||||
"target_expiry_days": 365,
|
||||
"quantity_rule": "target_coverage_pct",
|
||||
"target_coverage_pct": 1.0
|
||||
}
|
||||
],
|
||||
"roll_policy": {
|
||||
"policy_type": "hold_to_expiry",
|
||||
"days_before_expiry": null,
|
||||
"rebalance_on_new_deposit": false
|
||||
},
|
||||
"entry_policy": {
|
||||
"entry_timing": "scenario_start_close",
|
||||
"stagger_days": null
|
||||
},
|
||||
"tags": [
|
||||
"system",
|
||||
"protective_put",
|
||||
"cost_sensitive"
|
||||
],
|
||||
"created_at": "2026-03-24T00:00:00+00:00",
|
||||
"updated_at": "2026-03-24T00:00:00+00:00"
|
||||
},
|
||||
{
|
||||
"template_id": "ladder-50-50-atm-95pct-12m-v1",
|
||||
"slug": "ladder-50-50-atm-95pct-12m",
|
||||
"display_name": "Laddered Puts 50/50 ATM + 95%",
|
||||
"description": "Split hedge evenly across ATM and 95% strike 12-month puts.",
|
||||
"template_kind": "laddered_put",
|
||||
"status": "active",
|
||||
"version": 1,
|
||||
"underlying_symbol": "GLD",
|
||||
"contract_mode": "continuous_units",
|
||||
"legs": [
|
||||
{
|
||||
"leg_id": "ladder-50-50-atm-95pct-12m-v1-leg-1",
|
||||
"side": "long",
|
||||
"option_type": "put",
|
||||
"allocation_weight": 0.5,
|
||||
"strike_rule": {
|
||||
"rule_type": "spot_pct",
|
||||
"value": 1.0
|
||||
},
|
||||
"target_expiry_days": 365,
|
||||
"quantity_rule": "target_coverage_pct",
|
||||
"target_coverage_pct": 1.0
|
||||
},
|
||||
{
|
||||
"leg_id": "ladder-50-50-atm-95pct-12m-v1-leg-2",
|
||||
"side": "long",
|
||||
"option_type": "put",
|
||||
"allocation_weight": 0.5,
|
||||
"strike_rule": {
|
||||
"rule_type": "spot_pct",
|
||||
"value": 0.95
|
||||
},
|
||||
"target_expiry_days": 365,
|
||||
"quantity_rule": "target_coverage_pct",
|
||||
"target_coverage_pct": 1.0
|
||||
}
|
||||
],
|
||||
"roll_policy": {
|
||||
"policy_type": "hold_to_expiry",
|
||||
"days_before_expiry": null,
|
||||
"rebalance_on_new_deposit": false
|
||||
},
|
||||
"entry_policy": {
|
||||
"entry_timing": "scenario_start_close",
|
||||
"stagger_days": null
|
||||
},
|
||||
"tags": [
|
||||
"system",
|
||||
"laddered_put",
|
||||
"balanced"
|
||||
],
|
||||
"created_at": "2026-03-24T00:00:00+00:00",
|
||||
"updated_at": "2026-03-24T00:00:00+00:00"
|
||||
},
|
||||
{
|
||||
"template_id": "ladder-33-33-33-atm-95pct-90pct-12m-v1",
|
||||
"slug": "ladder-33-33-33-atm-95pct-90pct-12m",
|
||||
"display_name": "Laddered Puts 33/33/33 ATM + 95% + 90%",
|
||||
"description": "Three-layer 12-month put ladder across ATM, 95%, and 90% strikes.",
|
||||
"template_kind": "laddered_put",
|
||||
"status": "active",
|
||||
"version": 1,
|
||||
"underlying_symbol": "GLD",
|
||||
"contract_mode": "continuous_units",
|
||||
"legs": [
|
||||
{
|
||||
"leg_id": "ladder-33-33-33-atm-95pct-90pct-12m-v1-leg-1",
|
||||
"side": "long",
|
||||
"option_type": "put",
|
||||
"allocation_weight": 0.3333333333333333,
|
||||
"strike_rule": {
|
||||
"rule_type": "spot_pct",
|
||||
"value": 1.0
|
||||
},
|
||||
"target_expiry_days": 365,
|
||||
"quantity_rule": "target_coverage_pct",
|
||||
"target_coverage_pct": 1.0
|
||||
},
|
||||
{
|
||||
"leg_id": "ladder-33-33-33-atm-95pct-90pct-12m-v1-leg-2",
|
||||
"side": "long",
|
||||
"option_type": "put",
|
||||
"allocation_weight": 0.3333333333333333,
|
||||
"strike_rule": {
|
||||
"rule_type": "spot_pct",
|
||||
"value": 0.95
|
||||
},
|
||||
"target_expiry_days": 365,
|
||||
"quantity_rule": "target_coverage_pct",
|
||||
"target_coverage_pct": 1.0
|
||||
},
|
||||
{
|
||||
"leg_id": "ladder-33-33-33-atm-95pct-90pct-12m-v1-leg-3",
|
||||
"side": "long",
|
||||
"option_type": "put",
|
||||
"allocation_weight": 0.3333333333333333,
|
||||
"strike_rule": {
|
||||
"rule_type": "spot_pct",
|
||||
"value": 0.9
|
||||
},
|
||||
"target_expiry_days": 365,
|
||||
"quantity_rule": "target_coverage_pct",
|
||||
"target_coverage_pct": 1.0
|
||||
}
|
||||
],
|
||||
"roll_policy": {
|
||||
"policy_type": "hold_to_expiry",
|
||||
"days_before_expiry": null,
|
||||
"rebalance_on_new_deposit": false
|
||||
},
|
||||
"entry_policy": {
|
||||
"entry_timing": "scenario_start_close",
|
||||
"stagger_days": null
|
||||
},
|
||||
"tags": [
|
||||
"system",
|
||||
"laddered_put",
|
||||
"cost_sensitive"
|
||||
],
|
||||
"created_at": "2026-03-24T00:00:00+00:00",
|
||||
"updated_at": "2026-03-24T00:00:00+00:00"
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user