Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in
Toggle navigation
R
robo-dividend
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wenwen.tang
robo-dividend
Commits
524994d7
Commit
524994d7
authored
Nov 28, 2022
by
jichao
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
实盘完成待测试
parent
98988331
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
89 additions
and
103 deletions
+89
-103
config.yml
config.yml
+89
-94
curve_drift.py
rebalance/signals/curve_drift.py
+0
-9
No files found.
config.yml
View file @
524994d7
...
...
@@ -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
# 实盘开始时间
...
...
rebalance/signals/curve_drift.py
View file @
524994d7
...
...
@@ -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
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment