-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathbatch_backtest.py
More file actions
59 lines (48 loc) · 1.88 KB
/
batch_backtest.py
File metadata and controls
59 lines (48 loc) · 1.88 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# -*- coding: utf-8 -*-
"""
批量回测脚本
使用回测师智能体进行分组回测、登录重试、进度保存和断点续传
"""
import json
import time
from agents.backtester import BacktesterAgent
def main():
"""
主函数
"""
import argparse
parser = argparse.ArgumentParser(description='批量回测脚本')
parser.add_argument('--formula-file', type=str, default='test_50_reports_with_new_engineer.json',
help='公式文件路径')
parser.add_argument('--group-size', type=int, default=3,
help='每组公式数量(默认3)')
parser.add_argument('--start-group', type=int, default=0,
help='起始组索引(用于断点续传)')
parser.add_argument('--decay', type=int, default=20,
help='衰减参数')
parser.add_argument('--region', type=str, default='USA',
help='区域')
parser.add_argument('--universe', type=str, default='TOP3000',
help='股票池')
parser.add_argument('--neutralization', type=str, default='SECTOR',
help='中性化方式')
args = parser.parse_args()
# 创建回测师智能体
backtester = BacktesterAgent()
# 运行批量回测
results = backtester.run_batch_backtest(
formula_file=args.formula_file,
group_size=args.group_size,
start_group=args.start_group,
decay=args.decay,
region=args.region,
universe=args.universe,
neutralization=args.neutralization
)
# 保存最终结果
output_file = f"batch_backtest_results_{time.strftime('%Y%m%d_%H%M%S')}.json"
with open(output_file, 'w', encoding='utf-8') as f:
json.dump(results, f, ensure_ascii=False, indent=2)
print(f"\n[结果] 结果已保存到 {output_file}")
if __name__ == '__main__':
main()