Commit 524994d7 authored by jichao's avatar jichao

实盘完成待测试

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