Commit 524994d7 authored by jichao's avatar jichao

实盘完成待测试

parent 98988331
...@@ -45,9 +45,9 @@ framework: ...@@ -45,9 +45,9 @@ framework:
root: root:
level: INFO level: INFO
handlers: [ console ] handlers: [ console ]
basic: basic: # 基础信息模块
datum: datum: # 资料模块
excludes: excludes: # 排除的资料彭博ticker
- 'FKUQX US Equity' - 'FKUQX US Equity'
- 'FTAAUSH LX Equity' - 'FTAAUSH LX Equity'
- 'FTJAPAU LX Equity' - 'FTJAPAU LX Equity'
...@@ -56,120 +56,115 @@ basic: ...@@ -56,120 +56,115 @@ basic:
- 'TEUSAAU LX Equity' - 'TEUSAAU LX Equity'
- 'FTEAUH1 LX Equity' - 'FTEAUH1 LX Equity'
- 'TFIAAUS LX Equity' - 'TFIAAUS LX Equity'
navs: navs: # 净值模块
exrate: exrate: # 汇率,如果不开启,真个这块注释掉
- from: EUR - from: EUR # 需要转换的货币类型
ticker: EURUSD BGN Curncy ticker: EURUSD BGN Curncy # 汇率值的彭博ticker
asset-pool: asset-pool: # 资产池模块
asset-optimize: asset-optimize: # 资产优选模块
sortino-weight: sortino-weight: # sortino计算需要的权重,下面每一条为一次计算,e.g. months: 3, weight: 0.5 表示 3个月数据使用权重0.5来计算分值
- months: 3 - months: 3
weight: 0.5 weight: 0.5
- months: 6 - months: 6
weight: 0.3 weight: 0.3
- years: 1 - years: 1
weight: 0.2 weight: 0.2
asset-risk: asset-risk: # 资产风控模块
advance-months: 3 advance-months: 3 # 计算资产风控,需要净值提前开始时间多少个月
rtn-days: 5 rtn-days: 5 # 滚动计算回报率的天数
ewma: ewma: # ewma相关
condition-total: 6 condition-total: 6 # 查看多少天的数据
condition-meet: 4 condition-meet: 4 # 有多少天满足条件则触发
factor: 0.3 factor: 0.3 # ewma计算因子
threshold: 0 threshold: 0 # 满足条件阀值
cvar: cvar: # cvar相关
min-volume: 30 min-volume: 30 # 计算cvar时净值最少数据量
threshold: -0.03 threshold: -0.03 # 满足条件阀值
coef: 0.95 coef: 0.95 # 计算cvar的系数
portfolios: portfolios: # 投组模块
holder: holder: # 持仓投组相关
init-nav: 100 init-nav: 100 # 初始金额
min-interval-days: 10 min-interval-days: 10 # 两次实际调仓最小间隔期,单位交易日
solver: solver: # 解算器相关
tol: 1E-10 tol: 1E-10 # 误差满足条件
navs: navs: # 净值要求
months: 3 months: 3 # 需要几个月的净值数据
max-nan: max-nan: # 最大缺失净值条件
asset: 8 asset: 8 # 单一资产最多缺少多少交易日数据,则踢出资产池
day: 0.5 day: 0.5 # 单一交易日最多缺少百分之多少净值,则删除该交易日
risk: risk: # 资产风险等级要求,可分开写也可以合并写,e.g. risk:[ 2, 3 ] 则表示 所有投组资产风险等级都是 2 或 3
ft3: [ 2, 3 ] ft3: [ 2, 3 ] # 类似这样写,只要求ft3的投组资产风险等级
ft6: [ 2, 3, 4 ] ft6: [ 2, 3, 4 ]
ft9: [ 2, 3, 4, 5 ] ft9: [ 2, 3, 4, 5 ]
matrix-rtn-days: 21 matrix-rtn-days: 21 # 计算回报率矩阵时,回报率滚动天数
asset-count: 5 # count or [min, max] asset-count: 5 # 投组资产个数。e.g. count 或 [min, max] 分别表示 最大最小都为count 或 最小为min 最大为max,另外这里也可以类似上面给不同风险等级分别配置
mpt: mpt: # mpt计算相关
cvar-beta: 0.2 cvar-beta: 0.2 # 计算Kbeta 需要用到
quantile: 0.9 quantile: 0.9 # 分位点,也可以给不同风险等级分别配置
low-weight: 0.05 low-weight: 0.05 # 最低权重
high-weight: [ 1, 0.6, 0.35 ] high-weight: [ 1, 0.6, 0.35 ] # 最高权重比例,可给一个值,也可以给多个值,当多个值时,第一个表示只有一个资产时权重,第二个表示只有两个资产时权重,以此类推,最后一个表示其他资产个数时的权重
poem: poem: # poem相关
cvar-scale-factor: 0.1 cvar-scale-factor: 0.1 # 计算时用到的系数
right_side: right_side: # 这里表示右侧类型投组用到的参数,这里有则优先用这里的参数,如果没有,则用上面默认参数,参数含义和上面一致
asset-count: [3, 5] asset-count: [3, 5]
navs: navs:
risk: [1, 2] risk: [1, 2]
exclude-asset-type: ['STOCK', 'BALANCED'] exclude-asset-type: ['STOCK', 'BALANCED'] # 排除的资产类型
mpt: mpt:
quantile: 0.3 quantile: 0.3
crisis_1: crisis_1: # 危机1相关,这里有则优先用这里的参数,如果没有,则用上面默认参数,参数含义和上面一致
asset-count: [3, 5] asset-count: [3, 5]
navs: navs:
risk: [1, 2] risk: [1, 2]
mpt: mpt:
quantile: 0.1 quantile: 0.1
crisis_2: crisis_2: # 危机2相关,这里有则优先用这里的参数,如果没有,则用上面默认参数,参数含义和上面一致
asset-count: [3, 5] asset-count: [3, 5]
navs: navs:
risk: [ 1, 2 ] risk: [ 1, 2 ]
mpt: mpt:
quantile: 0.1 quantile: 0.1
rebalance: rebalance: # 再平衡模块
drift-solver: drift-solver: # drift解算器相关
date-curve: date-curve: # 日期曲线drift相关
diff-threshold: 0.4 diff-threshold: 0.4 # 权重相差初始阀值
init-factor: 0.000000002 init-factor: 0.000000002 # 权宠相差递减因子
high-weight: high-weight: # 高风险资产权重drift相关
coef: 0.2 coef: 0.2 # drift系数
ruler: ruler: # 再平衡信号选用规则
disable-period: disable-period: # 禁止买入期
normal: 10 normal: 10 # 标准投组禁止买入期
crisis_1: 15 crisis_1: 15 # 危机1投组禁止买入期
crisis_2: 15 crisis_2: 15 # 危机2投组禁止买入期
right_side: 15 right_side: 15 # 右侧投组禁止买入期
signals: signals: # 信号相关
init-signal: crisis-signal: # 危机信号相关
date: 2022-09-01 exp-years: 3 # 预警期时长,单位自然年,点到点计算
crisis-signal: exp-init: 2008-01-01 # 设置起始危机预警开始时间,如果关闭初始预警起,注释到这一条即可
exp-years: 3 inversion-years: 1 # 利率倒挂计算时长,单位自然年,点到点取值
exp-init: 2008-01-01 inversion-threshold: 0.3 # 利率倒挂触发阀值
inversion-years: 1 crisis-1: # 危机1相关
inversion-threshold: 0.3 mean-count: 850 # spx去多少交易日计算平均值
crisis-1: consecut-days: 5 # spx连续多少年跌破平均值则触发
mean-count: 850 crisis-2: # 危机2相关
consecut-days: 5 negative-growth: 1 # 实际利率负增长时长,单位年,点到点取值
crisis-2: fed-months: 3 # fed 滚动月份,点到点取值
negative-growth: 1 fed-threshold: 0.75 # fed判断阀值
fed-months: 3 right-side: # 市场右侧相关
fed-threshold: 0.75 rtn-days: 5 # 计算spx回报率滚动天数,交易日
right-side: min-threshold: -0.05 # spx回报率跌破阀值
rtn-days: 5 coef: 0.95 # 计算cvar的系数
min-threshold: -0.05 cvar-min-volume: 30 # 计算cvar至少需要多少交易日数据
coef: 0.95 high-low-buy: # 高低买入相关
cvar-min-volume: 30 threshold: [ 0.5, 0.8 ] # [ 低买入阀值,高买入阀值 ]
curve-drift: robo-executor: # 执行器相关
diff-threshold: 0.4 use: ${ROBO_EXECUTOR:backtest} #执行哪个执行器,优先取系统环境变量ROBO_EXECUTOR的值,默认backtest
init-factor: 0.000000002 backtest: # 回测执行器相关
high-low-buy: start-date: 2008-01-02 # 回测起始日期
threshold: [ 0.5, 0.8 ] end-date: 2009-01-01 # 回测截止日期
robo-executor: start-step: 4 # 回测从哪一步开始执行 1:计算资产ewma;2:计算资产池;3:计算最优投组:4:计算再平衡信号以及持仓投组
use: ${ROBO_EXECUTOR:backtest} real: # 实盘执行器
backtest: start-date: 2022-11-01 # 实盘开始时间
start-date: 2008-01-02
end-date: 2009-01-01
start-step: 4
real:
start-date: 2022-11-01
......
...@@ -13,7 +13,6 @@ class CurveDrift(BaseRebalanceSignal): ...@@ -13,7 +13,6 @@ class CurveDrift(BaseRebalanceSignal):
self._datum = datum self._datum = datum
self._hold = hold self._hold = hold
self._solver = solver self._solver = solver
self._config = get_config(__name__)
@property @property
def exclude_last_type(self): def exclude_last_type(self):
...@@ -37,14 +36,6 @@ class CurveDrift(BaseRebalanceSignal): ...@@ -37,14 +36,6 @@ class CurveDrift(BaseRebalanceSignal):
hold_weight = round(sum([x[1] for x in hold_portfolio.items() if x[0] in datum_ids]), 2) hold_weight = round(sum([x[1] for x in hold_portfolio.items() if x[0] in datum_ids]), 2)
return normal_weight - hold_weight >= self._solver.get_drift(day, risk) # TODO 左边应该加绝对值 return normal_weight - hold_weight >= self._solver.get_drift(day, risk) # TODO 左边应该加绝对值
@property
def diff_threshold(self):
return self._config['diff-threshold']
@property
def init_factor(self):
return self._config['init-factor']
@property @property
def signal_type(self) -> SignalType: def signal_type(self) -> SignalType:
return SignalType.DRIFT_BUY return SignalType.DRIFT_BUY
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment