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
e331b42d
Commit
e331b42d
authored
Jan 10, 2023
by
jichao
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
增加危机1信号判断逻辑
parent
25fb8bff
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
37 additions
and
2 deletions
+37
-2
config.yml
config.yml
+3
-0
crisis_signal.py
rebalance/signals/crisis_signal.py
+34
-2
No files found.
config.yml
View file @
e331b42d
...
...
@@ -38,6 +38,8 @@ py-jftech:
injectable
:
types
:
api.PortfoliosBuilder
:
portfolios.builder.PoemPortfoliosBuilder
names
:
crisis_one
:
rebalance.signals.crisis_signal.LastRateCrisisOneSignal
email
:
server
:
smtphz.qiye.163.com
user
:
jft-ra@thizgroup.com
...
...
@@ -145,6 +147,7 @@ rebalance: # 再平衡模块
crisis-1
:
# 危机1相关
mean-count
:
850
# spx去多少交易日计算平均值
consecut-days
:
5
# spx连续多少天跌破平均值则触发
threshold
:
-0.1
# spx计算后跌破阀值
crisis-2
:
# 危机2相关
negative-growth
:
1
# 实际利率负增长时长,单位年,点到点取值
fed-months
:
3
# fed 滚动月份,点到点取值
...
...
rebalance/signals/crisis_signal.py
View file @
e331b42d
...
...
@@ -58,8 +58,10 @@ class CrisisSignal(BaseRebalanceSignal, ABC):
@
component
(
bean_name
=
'crisis_one'
)
class
CrisisOneSignal
(
CrisisSignal
,
BaseRebalanceSignal
):
class
ConsecutFiveDaysCrisisOneSignal
(
CrisisSignal
,
BaseRebalanceSignal
):
'''
连续5个交易入跌破850天平均值
'''
@
property
def
consecut_days
(
self
):
return
self
.
_config
[
'crisis-1'
][
'consecut-days'
]
...
...
@@ -89,6 +91,36 @@ class CrisisOneSignal(CrisisSignal, BaseRebalanceSignal):
return
False
@
component
(
bean_name
=
'crisis_one'
)
class
LastRateCrisisOneSignal
(
CrisisSignal
,
BaseRebalanceSignal
):
'''
(close / 850ma – 1) < threshold,threshold=-0.05、-0.1
'''
@
property
def
mean_count
(
self
):
return
self
.
_config
[
'crisis-1'
][
'mean-count'
]
@
property
def
threshold
(
self
):
return
self
.
_config
[
'crisis-1'
][
'threshold'
]
@
property
def
signal_type
(
self
):
return
SignalType
.
CRISIS_ONE
def
is_trigger
(
self
,
day
,
risk
:
PortfoliosRisk
)
->
bool
:
exp_date
=
self
.
get_exp_start_date
(
day
,
risk
)
if
exp_date
:
crisis_one
=
rrs
.
get_first_after
(
type
=
SignalType
.
CRISIS_ONE
,
risk
=
risk
,
min_date
=
exp_date
)
if
not
crisis_one
:
spx
=
self
.
_navs
.
get_last_index_close
(
max_date
=
day
,
ticker
=
'SPX Index'
,
count
=
self
.
mean_count
)
spx
=
pd
.
DataFrame
(
spx
)
spx
.
sort_values
(
by
=
'date'
,
inplace
=
True
)
return
spx
.
iloc
[
-
1
][
'close'
]
/
spx
[
'close'
]
.
mean
()
-
1
<
self
.
threshold
return
False
@
component
(
bean_name
=
'crisis_two'
)
class
CrisisTwoSignal
(
CrisisSignal
,
BaseRebalanceSignal
):
...
...
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