Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in
Toggle navigation
A
alpha-mind
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
Dr.李
alpha-mind
Commits
62544f3d
Commit
62544f3d
authored
Mar 18, 2018
by
Dr.李
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
refactor name
parent
18465654
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
46 additions
and
46 deletions
+46
-46
factoranalysis.py
alphamind/analysis/factoranalysis.py
+8
-8
linearbuild.py
alphamind/benchmarks/portfolio/linearbuild.py
+6
-6
linearbuilder.py
alphamind/portfolio/linearbuilder.py
+14
-14
test_linearbuild.py
alphamind/tests/portfolio/test_linearbuild.py
+18
-18
No files found.
alphamind/analysis/factoranalysis.py
View file @
62544f3d
...
...
@@ -16,7 +16,7 @@ from alphamind.portfolio.constraints import Constraints
from
alphamind.portfolio.constraints
import
LinearConstraints
from
alphamind.portfolio.longshortbulder
import
long_short_build
from
alphamind.portfolio.rankbuilder
import
rank_build
from
alphamind.portfolio.linearbuilder
import
linear_build
from
alphamind.portfolio.linearbuilder
import
linear_build
er
from
alphamind.portfolio.meanvariancebuilder
import
mean_variance_builder
from
alphamind.portfolio.meanvariancebuilder
import
target_vol_builder
from
alphamind.data.processing
import
factor_processing
...
...
@@ -95,13 +95,13 @@ def er_portfolio_analysis(er: np.ndarray,
turn_over_target
=
kwargs
.
get
(
'turn_over_target'
)
current_position
=
kwargs
.
get
(
'current_position'
)
status
,
_
,
weights
=
linear_build
(
er
,
risk_constraints
=
cons_exp
,
lbound
=
lbound
,
ubound
=
ubound
,
risk_target
=
(
risk_lbound
,
risk_ubound
),
turn_over_target
=
turn_over_target
,
current_position
=
current_position
)
status
,
_
,
weights
=
linear_build
er
(
er
,
risk_constraints
=
cons_exp
,
lbound
=
lbound
,
ubound
=
ubound
,
risk_target
=
(
risk_lbound
,
risk_ubound
),
turn_over_target
=
turn_over_target
,
current_position
=
current_position
)
if
status
!=
'optimal'
:
raise
ValueError
(
'linear programming optimizer in status: {0}'
.
format
(
status
))
...
...
alphamind/benchmarks/portfolio/linearbuild.py
View file @
62544f3d
...
...
@@ -10,7 +10,7 @@ import numpy as np
from
scipy.optimize
import
linprog
from
cvxopt
import
matrix
from
cvxopt
import
solvers
from
alphamind.portfolio.linearbuilder
import
linear_build
from
alphamind.portfolio.linearbuilder
import
linear_build
er
solvers
.
options
[
'show_progress'
]
=
False
...
...
@@ -33,11 +33,11 @@ def benchmark_build_linear(n_samples: int, n_risks: int, n_loop: int) -> None:
start
=
dt
.
datetime
.
now
()
for
_
in
range
(
n_loop
):
status
,
v
,
x
=
linear_build
(
er
,
lbound
,
ubound
,
risk_exp
,
risk_target
=
(
risk_lbound
,
status
,
v
,
x
=
linear_build
er
(
er
,
lbound
,
ubound
,
risk_exp
,
risk_target
=
(
risk_lbound
,
risk_ubound
))
impl_model_time
=
dt
.
datetime
.
now
()
-
start
print
(
'{0:20s}: {1}'
.
format
(
'Implemented model (ECOS)'
,
impl_model_time
))
...
...
alphamind/portfolio/linearbuilder.py
View file @
62544f3d
...
...
@@ -11,13 +11,13 @@ from typing import Union
from
alphamind.cython.optimizers
import
LPOptimizer
def
linear_build
(
er
:
np
.
ndarray
,
lbound
:
Union
[
np
.
ndarray
,
float
],
ubound
:
Union
[
np
.
ndarray
,
float
],
risk_constraints
:
np
.
ndarray
,
risk_target
:
Tuple
[
np
.
ndarray
,
np
.
ndarray
],
turn_over_target
:
float
=
None
,
current_position
:
np
.
ndarray
=
None
)
->
Tuple
[
str
,
np
.
ndarray
,
np
.
ndarray
]:
def
linear_build
er
(
er
:
np
.
ndarray
,
lbound
:
Union
[
np
.
ndarray
,
float
],
ubound
:
Union
[
np
.
ndarray
,
float
],
risk_constraints
:
np
.
ndarray
,
risk_target
:
Tuple
[
np
.
ndarray
,
np
.
ndarray
],
turn_over_target
:
float
=
None
,
current_position
:
np
.
ndarray
=
None
)
->
Tuple
[
str
,
np
.
ndarray
,
np
.
ndarray
]:
er
=
er
.
flatten
()
n
,
m
=
risk_constraints
.
shape
...
...
@@ -100,13 +100,13 @@ if __name__ == '__main__':
risk_lbound
=
np
.
ones
(
1
)
risk_ubound
=
np
.
ones
(
1
)
status
,
fvalue
,
x_values
=
linear_build
(
er
,
lb
,
ub
,
cons
,
(
risk_lbound
,
risk_ubound
),
turn_over_target
,
current_pos
)
status
,
fvalue
,
x_values
=
linear_build
er
(
er
,
lb
,
ub
,
cons
,
(
risk_lbound
,
risk_ubound
),
turn_over_target
,
current_pos
)
print
(
status
)
print
(
fvalue
)
...
...
alphamind/tests/portfolio/test_linearbuild.py
View file @
62544f3d
...
...
@@ -7,7 +7,7 @@ Created on 2017-5-5
import
unittest
import
numpy
as
np
from
alphamind.portfolio.linearbuilder
import
linear_build
from
alphamind.portfolio.linearbuilder
import
linear_build
er
class
TestLinearBuild
(
unittest
.
TestCase
):
...
...
@@ -23,11 +23,11 @@ class TestLinearBuild(unittest.TestCase):
bm
=
self
.
bm
/
self
.
bm
.
sum
()
eplson
=
1e-6
status
,
_
,
w
=
linear_build
(
self
.
er
,
0.
,
0.01
,
self
.
risk_exp
,
(
bm
@
self
.
risk_exp
,
bm
@
self
.
risk_exp
))
status
,
_
,
w
=
linear_build
er
(
self
.
er
,
0.
,
0.01
,
self
.
risk_exp
,
(
bm
@
self
.
risk_exp
,
bm
@
self
.
risk_exp
))
self
.
assertEqual
(
status
,
'optimal'
)
self
.
assertAlmostEqual
(
np
.
sum
(
w
),
1.
)
self
.
assertTrue
(
np
.
all
(
w
<=
0.01
+
eplson
))
...
...
@@ -49,11 +49,11 @@ class TestLinearBuild(unittest.TestCase):
risk_lbound
[:
-
1
]
=
risk_lbound
[:
-
1
]
-
risk_tolerance
risk_ubound
[:
-
1
]
=
risk_ubound
[:
-
1
]
+
risk_tolerance
status
,
_
,
w
=
linear_build
(
self
.
er
,
0.
,
0.01
,
self
.
risk_exp
,
risk_target
=
(
risk_lbound
,
risk_ubound
))
status
,
_
,
w
=
linear_build
er
(
self
.
er
,
0.
,
0.01
,
self
.
risk_exp
,
risk_target
=
(
risk_lbound
,
risk_ubound
))
self
.
assertEqual
(
status
,
'optimal'
)
self
.
assertAlmostEqual
(
np
.
sum
(
w
),
1.
)
self
.
assertTrue
(
np
.
all
(
w
<=
0.01
+
eplson
))
...
...
@@ -75,13 +75,13 @@ class TestLinearBuild(unittest.TestCase):
risk_lbound
[:
-
1
]
=
risk_lbound
[:
-
1
]
-
risk_tolerance
risk_ubound
[:
-
1
]
=
risk_ubound
[:
-
1
]
+
risk_tolerance
status
,
_
,
w
=
linear_build
(
self
.
er
,
0.
,
0.01
,
self
.
risk_exp
,
risk_target
=
(
risk_lbound
,
risk_ubound
),
turn_over_target
=
turn_over_target
,
current_position
=
self
.
current_pos
)
status
,
_
,
w
=
linear_build
er
(
self
.
er
,
0.
,
0.01
,
self
.
risk_exp
,
risk_target
=
(
risk_lbound
,
risk_ubound
),
turn_over_target
=
turn_over_target
,
current_position
=
self
.
current_pos
)
self
.
assertEqual
(
status
,
'optimal'
)
self
.
assertAlmostEqual
(
np
.
sum
(
w
),
1.
)
self
.
assertTrue
(
np
.
all
(
w
<=
0.01
+
eplson
))
...
...
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