53 lines
1.6 KiB
Python
53 lines
1.6 KiB
Python
"""Quick example of using DecisionEnv for weight tuning experiments."""
|
|
from __future__ import annotations
|
|
|
|
import json
|
|
from datetime import date, timedelta
|
|
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
ROOT = Path(__file__).resolve().parents[1]
|
|
if str(ROOT) not in sys.path:
|
|
sys.path.insert(0, str(ROOT))
|
|
|
|
from app.backtest.decision_env import DecisionEnv, ParameterSpec
|
|
from app.backtest.engine import BtConfig
|
|
from app.agents.registry import default_agents
|
|
from app.utils.config import get_config
|
|
|
|
|
|
def main() -> None:
|
|
cfg = get_config()
|
|
agents = default_agents()
|
|
baseline_weights = {agent.name: cfg.agent_weights.as_dict().get(agent.name, 1.0) for agent in agents}
|
|
|
|
today = date.today()
|
|
bt_cfg = BtConfig(
|
|
id="decision_env_example",
|
|
name="Decision Env Demo",
|
|
start_date=today - timedelta(days=60),
|
|
end_date=today,
|
|
universe=["000001.SZ"],
|
|
params={},
|
|
method=cfg.decision_method,
|
|
)
|
|
|
|
specs = [
|
|
ParameterSpec(name="momentum_weight", target="agent_weights.A_mom", minimum=0.1, maximum=0.6),
|
|
ParameterSpec(name="value_weight", target="agent_weights.A_val", minimum=0.1, maximum=0.4),
|
|
]
|
|
|
|
env = DecisionEnv(bt_config=bt_cfg, parameter_specs=specs, baseline_weights=baseline_weights)
|
|
env.reset()
|
|
observation, reward, done, info = env.step([0.5, 0.2])
|
|
|
|
print("Observation:", json.dumps(observation, ensure_ascii=False, indent=2))
|
|
print("Reward:", reward)
|
|
print("Done:", done)
|
|
print("Weights:", json.dumps(info.get("weights", {}), ensure_ascii=False, indent=2))
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|