forked from qtcls/quantclass-client-pro
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathconfig.py
More file actions
115 lines (101 loc) · 5.81 KB
/
Copy pathconfig.py
File metadata and controls
115 lines (101 loc) · 5.81 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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
"""
邢不行™️选股框架
Python股票量化投资课程
版权所有 ©️ 邢不行
微信: xbx8662
未经授权,不得复制、修改、或使用本代码的全部或部分内容。仅限个人学习用途,禁止商业用途。
Author: 邢不行
"""
import os
from pathlib import Path
# ====================================================================================================
# 1️⃣ 回测配置
# ====================================================================================================
# 回测数据的起始时间。如果因子使用滚动计算方法,在回测初期因子值可能为 NaN,实际的首次交易日期可能晚于这个起始时间。
start_date = "2009-1-01"
# 回测数据的结束时间。可以设为 None,表示使用最新数据;也可以指定具体日期,例如 '2024-11-01'。
end_date ="2025-12-07"
# ====================================================================================================
# 2️⃣ 数据配置
# ====================================================================================================
# 数据中心的文件夹,使用数据客户端,并订阅相关数据,就不需要再手动指定每一个必要数据
data_center_path = Path("Z:/")
# data_center_path = Path("E:\量化交易\数据库")
# 数据源的定义,如果不使用数据客户端的时候,可以手动自定义以下逐个数据源
# ** 股票日线数据 和 指数数据是必须的,其他的数据可以在 data_sources 中定义 **
# (必选) 股票日线数据,全量数据下载链接:https://www.quantclass.cn/data/stock/stock-trading-data
# 参考:https://bbs.quantclass.cn/thread/39599
stock_data_path = data_center_path / "stock-trading-data"
# (必选) 指数数据路径,全量数据下载链接:https://www.quantclass.cn/data/stock/stock-main-index-data
index_data_path = data_center_path / "stock-main-index-data"
# (可选) 财务数据,全量数据下载链接:https://www.quantclass.cn/data/stock/stock-fin-data-xbx
fin_data_path = data_center_path / "stock-fin-data-xbx"
# ====================================================================================================
# 3️⃣ 策略配置
# ====================================================================================================
strategy = {
'name': '低位放量', # 策略名
'hold_period': '3D', # 持仓周期,W 代表周,M 代表月,还支持日频:3D、5D、10D
'select_num': 10, # 选股数量,可以是整数,也可以是小数,比如 0.1 表示选取 10% 的股票
"factor_list": [ # 选股因子列表
# ** 因子格式说明 **
# 因子名称(与 '因子库' 文件中的名称一致),排序方式(True 为升序,从小到大,False 为降序,从大到小)因子参数,因子权重
('市值',True, None, 1),
],
"filter_list": [
# ('pe', '静态', 'val:>0'),
('股价历史分位', [252,0.6], 'val:>0'),
('股价历史分位', [120,0.6], 'val:>0'),# 长期股价处理历史低位
# ('股价历史分位', [30,0.6], 'val:>0'),
('股价历史分位', [10,0.5], 'val:>0'),#短期股价上涨
# ('成交额翻倍', 20, 'val:>0'),
('成交额翻倍', 10, 'val:>0'), # 股票放量
# ('市值',None,'val:<100_0000_0000'),
# ('市值',None,'val:>15_0000_0000'),
# ('近期涨跌幅',20, 'pct:<0.3', True), # 保留最近6个交易日涨幅最小的前30%股票
('月份', [1, 4,6], 'val:!=1'), # 不在1月/4月份选股
('光底阴线', None, 'val:>1'),
] # 过滤因子列表
}
days_listed = 250 # 上市至今交易天数
# excluded_boards = ["kcb","bj"] # 过滤板块,默认不过滤
excluded_boards = ["cyb","kcb", "bj"] # 同时过滤创业板和科创板和北交所
# 💡运行提示:
# - 修改hold_period之后,需要执行step2因子计算,不需要再次准备数据
# - 修改select_num之后,只需要再执行step3选股即可,不需要准备数据和计算因子
# - 修改factor_list之后,需要执行step2因子计算,不需要再次准备数据
# - 修改filter_list之后,需要执行step2因子计算,不需要再次准备数据
# 资金曲线再择时配置(非必要,可以为空)
# 用于在回测完成后,对资金曲线进行二次择时,生成动态杠杆
# 可以参考的择时方法:
# - 移动平均线:根据资金曲线与移动平均线的关系进行择时
# - 布林带:根据资金曲线与布林带的关系进行择时
# - 趋势线:根据资金曲线的趋势进行择时
# 参数说明:
# - name: 择时方法名称
# - params: 择时方法的参数列表,不同方法参数不同
# 移动平均线: [周期]
# 布林带: [周期, 标准差倍数]
# 趋势线: [周期]
# equity_timing = {"name": "MA双均线择时", "params": [5,13]}
# equity_timing = {"name": "中证2000etf择时", "params": [5,20]}
# equity_timing = {"name": "动量_状态自适应择时", "params": [3, 5, 20, -0.05]}
# ====================================================================================================
# 4️⃣ 模拟交易配置
# 以下参数几乎不需要改动
# ====================================================================================================
initial_cash = 10_00000 # 初始资金10w
# initial_cash = 1_0000_0000 # 初始资金10w
# 手续费
c_rate = 1.2 / 10000
# 印花税
t_rate = 1 / 1000
# 并行运行的进程数
n_jobs = os.cpu_count() - 1
# =====参数预检查=====
if Path(stock_data_path).exists() is False:
print(f"股票日线数据路径不存在:{stock_data_path},请检查配置或联系助教,程序退出")
exit()
if Path(index_data_path).exists() is False:
print(f"指数数据路径不存在:{index_data_path},请检查配置或联系助教,程序退出")
exit()