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
03ea0ad0
Commit
03ea0ad0
authored
Jul 09, 2017
by
Dr.李
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update engines
parent
6c3e1b28
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
25 additions
and
18 deletions
+25
-18
factoranalysis.py
alphamind/analysis/factoranalysis.py
+3
-0
sqlengine.py
alphamind/data/engines/sqlengine.py
+20
-18
universe.py
alphamind/data/engines/universe.py
+2
-0
No files found.
alphamind/analysis/factoranalysis.py
View file @
03ea0ad0
...
@@ -166,6 +166,9 @@ def factor_analysis(factors: pd.DataFrame,
...
@@ -166,6 +166,9 @@ def factor_analysis(factors: pd.DataFrame,
method
=
'risk_neutral'
,
method
=
'risk_neutral'
,
**
kwargs
)
->
Tuple
[
pd
.
DataFrame
,
Optional
[
pd
.
DataFrame
]]:
**
kwargs
)
->
Tuple
[
pd
.
DataFrame
,
Optional
[
pd
.
DataFrame
]]:
if
risk_exp
is
not
None
:
risk_exp
=
risk_exp
[:,
risk_exp
.
sum
(
axis
=
0
)
!=
0
]
data_pack
=
FDataPack
(
raw_factors
=
factors
.
values
,
data_pack
=
FDataPack
(
raw_factors
=
factors
.
values
,
d1returns
=
d1returns
,
d1returns
=
d1returns
,
groups
=
industry
,
groups
=
industry
,
...
...
alphamind/data/engines/sqlengine.py
View file @
03ea0ad0
...
@@ -22,8 +22,7 @@ risk_styles = ['BETA',
...
@@ -22,8 +22,7 @@ risk_styles = ['BETA',
'BTOP'
,
'BTOP'
,
'LEVERAGE'
,
'LEVERAGE'
,
'LIQUIDTY'
,
'LIQUIDTY'
,
'SIZENL'
,
'SIZENL'
]
'COUNTRY'
]
industry_styles
=
[
industry_styles
=
[
'Bank'
,
'Bank'
,
...
@@ -68,12 +67,14 @@ def append_industry_info(df):
...
@@ -68,12 +67,14 @@ def append_industry_info(df):
class
SqlEngine
(
object
):
class
SqlEngine
(
object
):
def
__init__
(
self
,
def
__init__
(
self
,
db_url
:
str
,
db_url
:
str
):
universe
:
Universe
):
self
.
engine
=
sa
.
create_engine
(
db_url
)
self
.
engine
=
sa
.
create_engine
(
db_url
)
self
.
unv
=
universe
def
fetch_codes
(
self
,
ref_date
:
str
)
->
List
[
int
]:
def
fetch_factors_meta
(
self
)
->
pd
.
DataFrame
:
sql
=
"select * from factor_master"
return
pd
.
read_sql
(
sql
,
self
.
engine
)
def
fetch_codes
(
self
,
ref_date
:
str
,
univ
:
Universe
)
->
List
[
int
]:
def
get_universe
(
univ
,
ref_date
):
def
get_universe
(
univ
,
ref_date
):
univ_str
=
','
.
join
(
"'"
+
u
+
"'"
for
u
in
univ
)
univ_str
=
','
.
join
(
"'"
+
u
+
"'"
for
u
in
univ
)
...
@@ -85,19 +86,19 @@ class SqlEngine(object):
...
@@ -85,19 +86,19 @@ class SqlEngine(object):
codes_set
=
None
codes_set
=
None
if
self
.
un
v
.
include_universe
:
if
uni
v
.
include_universe
:
include_codes_set
=
get_universe
(
self
.
un
v
.
include_universe
,
ref_date
)
include_codes_set
=
get_universe
(
uni
v
.
include_universe
,
ref_date
)
codes_set
=
include_codes_set
codes_set
=
include_codes_set
if
self
.
un
v
.
exclude_universe
:
if
uni
v
.
exclude_universe
:
exclude_codes_set
=
get_universe
(
self
.
un
v
.
exclude_universe
,
ref_date
)
exclude_codes_set
=
get_universe
(
uni
v
.
exclude_universe
,
ref_date
)
codes_set
-=
exclude_codes_set
codes_set
-=
exclude_codes_set
if
self
.
un
v
.
include_codes
:
if
uni
v
.
include_codes
:
codes_set
=
codes_set
.
union
(
self
.
un
v
.
include_codes
)
codes_set
=
codes_set
.
union
(
uni
v
.
include_codes
)
if
self
.
un
v
.
exclude_codes
:
if
uni
v
.
exclude_codes
:
codes_set
-=
set
(
self
.
un
v
.
exclude_codes
)
codes_set
-=
set
(
uni
v
.
exclude_codes
)
return
sorted
(
codes_set
)
return
sorted
(
codes_set
)
...
@@ -154,16 +155,17 @@ class SqlEngine(object):
...
@@ -154,16 +155,17 @@ class SqlEngine(object):
if
__name__
==
'__main__'
:
if
__name__
==
'__main__'
:
db_url
=
'mysql+mysqldb://root:we083826@localhost/alpha?charset=utf8'
db_url
=
'mysql+mysqldb://root:we083826@localhost/alpha?charset=utf8'
universe
=
Universe
([
'zz500'
])
universe
=
Universe
(
'zz500'
,
[
'zz500'
])
engine
=
SqlEngine
(
db_url
,
universe
)
engine
=
SqlEngine
(
db_url
)
ref_date
=
'2017-07-04'
ref_date
=
'2017-07-04'
import
datetime
as
dt
import
datetime
as
dt
start
=
dt
.
datetime
.
now
()
start
=
dt
.
datetime
.
now
()
for
i
in
range
(
500
):
for
i
in
range
(
10
):
codes
=
engine
.
fetch_codes
(
'2017-07-04'
)
factors
=
engine
.
fetch_factors_meta
()
codes
=
engine
.
fetch_codes
(
'2017-07-04'
,
universe
)
total_data
=
engine
.
fetch_data
(
ref_date
,
[
'EPS'
],
[
1
,
5
],
905
)
total_data
=
engine
.
fetch_data
(
ref_date
,
[
'EPS'
],
[
1
,
5
],
905
)
print
(
dt
.
datetime
.
now
()
-
start
)
print
(
dt
.
datetime
.
now
()
-
start
)
...
...
alphamind/data/engines/universe.py
View file @
03ea0ad0
...
@@ -11,11 +11,13 @@ from typing import Iterable
...
@@ -11,11 +11,13 @@ from typing import Iterable
class
Universe
(
object
):
class
Universe
(
object
):
def
__init__
(
self
,
def
__init__
(
self
,
name
,
include_universe
:
Iterable
[
str
]
=
None
,
include_universe
:
Iterable
[
str
]
=
None
,
exclude_universe
:
Iterable
[
str
]
=
None
,
exclude_universe
:
Iterable
[
str
]
=
None
,
include_codes
:
Iterable
[
str
]
=
None
,
include_codes
:
Iterable
[
str
]
=
None
,
exclude_codes
:
Iterable
[
str
]
=
None
):
exclude_codes
:
Iterable
[
str
]
=
None
):
self
.
name
=
name
self
.
include_universe
=
include_universe
self
.
include_universe
=
include_universe
self
.
exclude_universe
=
exclude_universe
self
.
exclude_universe
=
exclude_universe
self
.
include_codes
=
include_codes
self
.
include_codes
=
include_codes
...
...
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