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
ce024def
Commit
ce024def
authored
Nov 20, 2022
by
jichao
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
依赖注入实现中
parent
e3f3a32e
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
7 additions
and
7 deletions
+7
-7
api.py
api.py
+2
-2
builder.py
portfolios/builder.py
+4
-4
test_case.py
portfolios/test_case.py
+1
-1
No files found.
api.py
View file @
ce024def
...
@@ -175,10 +175,10 @@ class PortfoliosBuilder(ABC):
...
@@ -175,10 +175,10 @@ class PortfoliosBuilder(ABC):
pass
pass
class
Control
Signal
(
ABC
):
class
Rebalance
Signal
(
ABC
):
'''
'''
控制信号,发起是否调仓服务
控制信号,发起是否调仓服务
'''
'''
@
abstractmethod
@
abstractmethod
def
handle
(
self
,
day
,
risk
:
PortfoliosRisk
):
def
do_signal
(
self
,
day
,
risk
:
PortfoliosRisk
):
pass
pass
portfolios/builder.py
View file @
ce024def
...
@@ -72,7 +72,7 @@ class MptSolver:
...
@@ -72,7 +72,7 @@ class MptSolver:
return
round
(
len
(
self
.
rtn_history
)
*
self
.
beta
+
0.499999
)
return
round
(
len
(
self
.
rtn_history
)
*
self
.
beta
+
0.499999
)
@
property
@
property
def
pct_valu
e
(
self
):
def
quantil
e
(
self
):
return
self
.
get_config
(
'mpt.quantile'
)
return
self
.
get_config
(
'mpt.quantile'
)
def
solve_max_rtn
(
self
):
def
solve_max_rtn
(
self
):
...
@@ -110,8 +110,8 @@ class MptSolver:
...
@@ -110,8 +110,8 @@ class MptSolver:
def
solve_mpt
(
self
,
min_rtn
,
max_rtn
):
def
solve_mpt
(
self
,
min_rtn
,
max_rtn
):
logger
.
debug
(
f
'...... ...... ...... ...... ...... ...... ...... ...... '
logger
.
debug
(
f
'...... ...... ...... ...... ...... ...... ...... ...... '
f
'MPT ... sub risk : pct_value = {self.
pct_valu
e}'
)
f
'MPT ... sub risk : pct_value = {self.
quantil
e}'
)
big_y
=
min_rtn
+
self
.
pct_valu
e
*
(
max_rtn
-
min_rtn
)
big_y
=
min_rtn
+
self
.
quantil
e
*
(
max_rtn
-
min_rtn
)
logger
.
debug
(
f
'big_Y = target_Return = {big_y}'
)
logger
.
debug
(
f
'big_Y = target_Return = {big_y}'
)
model
=
self
.
create_model
()
model
=
self
.
create_model
()
model
.
cons_rtn
=
Constraint
(
expr
=
sum
([
model
.
w
[
i
]
*
self
.
rtn_annualized
[
i
]
for
i
in
model
.
indices
])
>=
big_y
)
model
.
cons_rtn
=
Constraint
(
expr
=
sum
([
model
.
w
[
i
]
*
self
.
rtn_annualized
[
i
]
for
i
in
model
.
indices
])
>=
big_y
)
...
@@ -128,7 +128,7 @@ class MptSolver:
...
@@ -128,7 +128,7 @@ class MptSolver:
def
solve_poem
(
self
,
min_rtn
,
max_rtn
,
base_cvar
,
max_cvar
):
def
solve_poem
(
self
,
min_rtn
,
max_rtn
,
base_cvar
,
max_cvar
):
k_history
=
len
(
self
.
rtn_history
)
k_history
=
len
(
self
.
rtn_history
)
quantile
=
self
.
pct_valu
e
quantile
=
self
.
quantil
e
logger
.
debug
(
f
'...... ...... ...... ...... ...... ...... ...... ...... '
logger
.
debug
(
f
'...... ...... ...... ...... ...... ...... ...... ...... '
f
'POEM With CVaR constraints ... sub risk : pct_value = {quantile}'
)
f
'POEM With CVaR constraints ... sub risk : pct_value = {quantile}'
)
big_y
=
min_rtn
+
quantile
*
(
max_rtn
-
min_rtn
)
big_y
=
min_rtn
+
quantile
*
(
max_rtn
-
min_rtn
)
...
...
portfolios/test_case.py
View file @
ce024def
...
@@ -8,7 +8,7 @@ class PortfoliosTest(unittest.TestCase):
...
@@ -8,7 +8,7 @@ class PortfoliosTest(unittest.TestCase):
logger
=
get_logger
(
__name__
)
logger
=
get_logger
(
__name__
)
@
autowired
(
names
=
{
'builder'
:
'poem'
})
@
autowired
(
names
=
{
'builder'
:
'poem'
})
def
test_portfolio_builder
(
self
,
builder
:
PortfoliosBuilder
=
None
):
def
test_po
em_po
rtfolio_builder
(
self
,
builder
:
PortfoliosBuilder
=
None
):
result
,
detail
=
builder
.
build_portfolio
(
parse_date
(
'2011-11-07'
),
PortfoliosType
.
NORMAL
)
result
,
detail
=
builder
.
build_portfolio
(
parse_date
(
'2011-11-07'
),
PortfoliosType
.
NORMAL
)
self
.
logger
.
info
(
"portfolios: "
)
self
.
logger
.
info
(
"portfolios: "
)
for
risk
,
portfolio
in
result
.
items
():
for
risk
,
portfolio
in
result
.
items
():
...
...
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