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
dc58dce6
Commit
dc58dce6
authored
Aug 07, 2017
by
Dr.李
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
using direct builder
parent
efbb91b1
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
28 additions
and
21 deletions
+28
-21
factoranalysis.py
alphamind/analysis/factoranalysis.py
+28
-21
No files found.
alphamind/analysis/factoranalysis.py
View file @
dc58dce6
...
...
@@ -185,9 +185,7 @@ def factor_analysis(factors: pd.DataFrame,
er
=
data_pack
.
factor_processing
(
pre_process
,
post_process
,
do_neutralize
)
@
factor_weights
if
benchmark
is
not
None
and
risk_exp
is
not
None
and
method
==
'risk_neutral'
:
# using linear programming portfolio builder
benchmark
=
benchmark
.
flatten
()
def
create_constraints
(
benchmark
,
**
kwargs
):
if
'lbound'
in
kwargs
:
lbound
=
kwargs
[
'lbound'
]
...
...
@@ -212,25 +210,37 @@ def factor_analysis(factors: pd.DataFrame,
risk_lbound
=
data_pack
.
benchmark_constraints
()
risk_ubound
=
data_pack
.
benchmark_constraints
()
weights
=
build_portfolio
(
er
,
builder
=
'linear'
,
risk_constraints
=
cons_exp
,
lbound
=
lbound
,
ubound
=
ubound
,
risk_target
=
(
risk_lbound
,
risk_ubound
),
**
kwargs
)
return
lbound
,
ubound
,
cons_exp
,
risk_lbound
,
risk_ubound
if
benchmark
is
not
None
and
risk_exp
is
not
None
and
method
==
'risk_neutral'
:
lbound
,
ubound
,
cons_exp
,
risk_lbound
,
risk_ubound
=
create_constraints
(
benchmark
,
**
kwargs
)
status
,
_
,
weights
=
linear_build
(
er
,
risk_constraints
=
cons_exp
,
lbound
=
lbound
,
ubound
=
ubound
,
risk_target
=
(
risk_lbound
,
risk_ubound
))
if
status
!=
'optimal'
:
raise
ValueError
(
'linear programming optimizer in status: {0}'
.
format
(
status
))
elif
method
==
'rank'
:
# using rank builder
weights
=
build_portfolio
(
er
,
builder
=
'rank'
,
**
kwargs
)
/
kwargs
[
'use_rank'
]
weights
=
rank_build
(
er
,
use_rank
=
kwargs
[
'use_rank'
])
.
flatten
()
elif
method
==
'ls'
or
method
==
'long_short'
:
weights
=
build_portfolio
(
er
,
builder
=
method
)
weights
=
long_short_build
(
er
)
.
flatten
()
elif
method
==
'mv'
or
method
==
'mean_variance'
:
weights
=
build_portfolio
(
er
,
builder
=
method
)
lbound
,
ubound
,
cons_exp
,
risk_lbound
,
risk_ubound
=
create_constraints
(
benchmark
,
**
kwargs
)
cov
=
kwargs
[
'cov'
]
status
,
_
,
weights
=
mean_variance_builder
(
er
,
cov
=
cov
,
bm
=
benchmark
,
lbound
=
lbound
,
ubound
=
ubound
,
risk_exposure
=
cons_exp
,
risk_target
=
(
risk_lbound
,
risk_ubound
))
if
status
!=
'optimal'
:
raise
ValueError
(
'mean variance optimizer in status: {0}'
.
format
(
status
))
else
:
raise
ValueError
(
"Unknown building tpe ({0})"
.
format
(
method
))
if
detail_analysis
:
analysis
=
data_pack
.
settle
(
weights
,
d1returns
)
...
...
@@ -241,6 +251,3 @@ def factor_analysis(factors: pd.DataFrame,
'er'
:
er
},
index
=
factors
.
index
),
\
analysis
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