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
f3dd843e
Commit
f3dd843e
authored
Nov 07, 2020
by
Dr.李
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
FEATURE: added risk model tables
parent
8be2302c
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
335 additions
and
15 deletions
+335
-15
models_rl.py
alphamind/data/dbmodel/models_rl.py
+255
-0
sqlengine_rl.py
alphamind/data/engines/sqlengine_rl.py
+52
-2
utilities.py
alphamind/data/engines/utilities.py
+27
-12
pfopt
alphamind/pfopt
+1
-1
No files found.
alphamind/data/dbmodel/models_rl.py
View file @
f3dd843e
...
...
@@ -105,8 +105,263 @@ class _SwIndustryDaily(Base):
Industry_code4
=
Column
(
Text
)
Industry_name4
=
Column
(
Text
)
flag
=
Column
(
INT
,
server_default
=
text
(
"'1'"
))
is_verify
=
Column
(
INT
)
class
_RiskExposure
(
Base
):
__tablename__
=
'risk_exposure'
__table_args__
=
(
Index
(
'risk_exposure_idx'
,
'trade_date'
,
'security_code'
,
unique
=
True
),
)
id
=
Column
(
INT
,
primary_key
=
True
)
trade_date
=
Column
(
Date
,
nullable
=
False
)
code
=
Column
(
"security_code"
,
Text
)
BETA
=
Column
(
FLOAT
)
MOMENTUM
=
Column
(
FLOAT
)
SIZE
=
Column
(
FLOAT
)
EARNYILD
=
Column
(
FLOAT
)
RESVOL
=
Column
(
FLOAT
)
GROWTH
=
Column
(
FLOAT
)
BTOP
=
Column
(
FLOAT
)
LEVERAGE
=
Column
(
FLOAT
)
LIQUIDTY
=
Column
(
FLOAT
)
SIZENL
=
Column
(
FLOAT
)
Bank
=
Column
(
INT
)
RealEstate
=
Column
(
INT
)
Health
=
Column
(
INT
)
Transportation
=
Column
(
INT
)
Mining
=
Column
(
INT
)
NonFerMetal
=
Column
(
INT
)
HouseApp
=
Column
(
INT
)
LeiService
=
Column
(
INT
)
MachiEquip
=
Column
(
INT
)
BuildDeco
=
Column
(
INT
)
CommeTrade
=
Column
(
INT
)
CONMAT
=
Column
(
INT
)
Auto
=
Column
(
INT
)
Textile
=
Column
(
INT
)
FoodBever
=
Column
(
INT
)
Electronics
=
Column
(
INT
)
Computer
=
Column
(
INT
)
LightIndus
=
Column
(
INT
)
Utilities
=
Column
(
INT
)
Telecom
=
Column
(
INT
)
AgriForest
=
Column
(
INT
)
CHEM
=
Column
(
INT
)
Media
=
Column
(
INT
)
IronSteel
=
Column
(
INT
)
NonBankFinan
=
Column
(
INT
)
ELECEQP
=
Column
(
INT
)
AERODEF
=
Column
(
INT
)
Conglomerates
=
Column
(
INT
)
COUNTRY
=
Column
(
INT
)
class
_RiskCovDay
(
Base
):
__tablename__
=
'risk_cov_day'
__table_args__
=
(
Index
(
'risk_cov_day_idx'
,
'trade_date'
,
'FactorID'
,
'Factor'
,
unique
=
True
),
)
id
=
Column
(
INT
,
primary_key
=
True
)
trade_date
=
Column
(
Date
,
nullable
=
False
)
FactorID
=
Column
(
INT
,
nullable
=
False
)
Factor
=
Column
(
Text
,
nullable
=
False
)
BETA
=
Column
(
FLOAT
)
MOMENTUM
=
Column
(
FLOAT
)
SIZE
=
Column
(
FLOAT
)
EARNYILD
=
Column
(
FLOAT
)
RESVOL
=
Column
(
FLOAT
)
GROWTH
=
Column
(
FLOAT
)
BTOP
=
Column
(
FLOAT
)
LEVERAGE
=
Column
(
FLOAT
)
LIQUIDTY
=
Column
(
FLOAT
)
SIZENL
=
Column
(
FLOAT
)
Bank
=
Column
(
FLOAT
)
RealEstate
=
Column
(
FLOAT
)
Health
=
Column
(
FLOAT
)
Transportation
=
Column
(
FLOAT
)
Mining
=
Column
(
FLOAT
)
NonFerMetal
=
Column
(
FLOAT
)
HouseApp
=
Column
(
FLOAT
)
LeiService
=
Column
(
FLOAT
)
MachiEquip
=
Column
(
FLOAT
)
BuildDeco
=
Column
(
FLOAT
)
CommeTrade
=
Column
(
FLOAT
)
CONMAT
=
Column
(
FLOAT
)
Auto
=
Column
(
FLOAT
)
Textile
=
Column
(
FLOAT
)
FoodBever
=
Column
(
FLOAT
)
Electronics
=
Column
(
FLOAT
)
Computer
=
Column
(
FLOAT
)
LightIndus
=
Column
(
FLOAT
)
Utilities
=
Column
(
FLOAT
)
Telecom
=
Column
(
FLOAT
)
AgriForest
=
Column
(
FLOAT
)
CHEM
=
Column
(
FLOAT
)
Media
=
Column
(
FLOAT
)
IronSteel
=
Column
(
FLOAT
)
NonBankFinan
=
Column
(
FLOAT
)
ELECEQP
=
Column
(
FLOAT
)
AERODEF
=
Column
(
FLOAT
)
Conglomerates
=
Column
(
FLOAT
)
COUNTRY
=
Column
(
FLOAT
)
class
_RiskCovLong
(
Base
):
__tablename__
=
'risk_cov_long'
__table_args__
=
(
Index
(
'risk_cov_long_Date_Factor_uindex'
,
'trade_date'
,
'Factor'
,
unique
=
True
),
Index
(
'risk_cov_long_Date_FactorID_uindex'
,
'trade_date'
,
'FactorID'
,
unique
=
True
)
)
id
=
Column
(
INT
,
primary_key
=
True
)
trade_date
=
Column
(
Date
,
nullable
=
False
)
FactorID
=
Column
(
INT
)
Factor
=
Column
(
Text
,
nullable
=
False
)
BETA
=
Column
(
FLOAT
)
MOMENTUM
=
Column
(
FLOAT
)
SIZE
=
Column
(
FLOAT
)
EARNYILD
=
Column
(
FLOAT
)
RESVOL
=
Column
(
FLOAT
)
GROWTH
=
Column
(
FLOAT
)
BTOP
=
Column
(
FLOAT
)
LEVERAGE
=
Column
(
FLOAT
)
LIQUIDTY
=
Column
(
FLOAT
)
SIZENL
=
Column
(
FLOAT
)
Bank
=
Column
(
FLOAT
)
RealEstate
=
Column
(
FLOAT
)
Health
=
Column
(
FLOAT
)
Transportation
=
Column
(
FLOAT
)
Mining
=
Column
(
FLOAT
)
NonFerMetal
=
Column
(
FLOAT
)
HouseApp
=
Column
(
FLOAT
)
LeiService
=
Column
(
FLOAT
)
MachiEquip
=
Column
(
FLOAT
)
BuildDeco
=
Column
(
FLOAT
)
CommeTrade
=
Column
(
FLOAT
)
CONMAT
=
Column
(
FLOAT
)
Auto
=
Column
(
FLOAT
)
Textile
=
Column
(
FLOAT
)
FoodBever
=
Column
(
FLOAT
)
Electronics
=
Column
(
FLOAT
)
Computer
=
Column
(
FLOAT
)
LightIndus
=
Column
(
FLOAT
)
Utilities
=
Column
(
FLOAT
)
Telecom
=
Column
(
FLOAT
)
AgriForest
=
Column
(
FLOAT
)
CHEM
=
Column
(
FLOAT
)
Media
=
Column
(
FLOAT
)
IronSteel
=
Column
(
FLOAT
)
NonBankFinan
=
Column
(
FLOAT
)
ELECEQP
=
Column
(
FLOAT
)
AERODEF
=
Column
(
FLOAT
)
Conglomerates
=
Column
(
FLOAT
)
COUNTRY
=
Column
(
FLOAT
)
class
_RiskCovShort
(
Base
):
__tablename__
=
'risk_cov_short'
__table_args__
=
(
Index
(
'risk_cov_short_Date_FactorID_uindex'
,
'trade_date'
,
'FactorID'
,
unique
=
True
),
Index
(
'risk_cov_short_Date_Factor_uindex'
,
'trade_date'
,
'Factor'
,
unique
=
True
)
)
id
=
Column
(
INT
,
primary_key
=
True
)
trade_date
=
Column
(
Date
,
nullable
=
False
)
FactorID
=
Column
(
INT
)
Factor
=
Column
(
Text
,
nullable
=
False
)
BETA
=
Column
(
FLOAT
)
MOMENTUM
=
Column
(
FLOAT
)
SIZE
=
Column
(
FLOAT
)
EARNYILD
=
Column
(
FLOAT
)
RESVOL
=
Column
(
FLOAT
)
GROWTH
=
Column
(
FLOAT
)
BTOP
=
Column
(
FLOAT
)
LEVERAGE
=
Column
(
FLOAT
)
LIQUIDTY
=
Column
(
FLOAT
)
SIZENL
=
Column
(
FLOAT
)
Bank
=
Column
(
FLOAT
)
RealEstate
=
Column
(
FLOAT
)
Health
=
Column
(
FLOAT
)
Transportation
=
Column
(
FLOAT
)
Mining
=
Column
(
FLOAT
)
NonFerMetal
=
Column
(
FLOAT
)
HouseApp
=
Column
(
FLOAT
)
LeiService
=
Column
(
FLOAT
)
MachiEquip
=
Column
(
FLOAT
)
BuildDeco
=
Column
(
FLOAT
)
CommeTrade
=
Column
(
FLOAT
)
CONMAT
=
Column
(
FLOAT
)
Auto
=
Column
(
FLOAT
)
Textile
=
Column
(
FLOAT
)
FoodBever
=
Column
(
FLOAT
)
Electronics
=
Column
(
FLOAT
)
Computer
=
Column
(
FLOAT
)
LightIndus
=
Column
(
FLOAT
)
Utilities
=
Column
(
FLOAT
)
Telecom
=
Column
(
FLOAT
)
AgriForest
=
Column
(
FLOAT
)
CHEM
=
Column
(
FLOAT
)
Media
=
Column
(
FLOAT
)
IronSteel
=
Column
(
FLOAT
)
NonBankFinan
=
Column
(
FLOAT
)
ELECEQP
=
Column
(
FLOAT
)
AERODEF
=
Column
(
FLOAT
)
Conglomerates
=
Column
(
FLOAT
)
COUNTRY
=
Column
(
FLOAT
)
class
_SpecificRiskDay
(
Base
):
__tablename__
=
'specific_risk_day'
__table_args__
=
(
Index
(
'specific_risk_day_Date_Code_uindex'
,
'trade_date'
,
'security_code'
,
unique
=
True
),
)
id
=
Column
(
INT
,
primary_key
=
True
)
trade_date
=
Column
(
Date
,
nullable
=
False
)
code
=
Column
(
"security_code"
,
Text
,
nullable
=
False
)
exchangeCD
=
Column
(
Text
)
secShortName
=
Column
(
Text
)
SRISK
=
Column
(
FLOAT
)
class
_SpecificRiskLong
(
Base
):
__tablename__
=
'specific_risk_long'
__table_args__
=
(
Index
(
'specific_risk_long_Date_Code_uindex'
,
'trade_date'
,
'security_code'
,
unique
=
True
),
)
id
=
Column
(
INT
,
primary_key
=
True
)
trade_date
=
Column
(
Date
,
nullable
=
False
)
code
=
Column
(
"security_code"
,
Text
,
nullable
=
False
)
exchangeCD
=
Column
(
Text
)
secShortName
=
Column
(
Text
)
SRISK
=
Column
(
FLOAT
)
class
_SpecificRiskShort
(
Base
):
__tablename__
=
'specific_risk_short'
__table_args__
=
(
Index
(
'specific_risk_short_Date_Code_uindex'
,
'trade_date'
,
'security_code'
,
unique
=
True
),
)
id
=
Column
(
INT
,
primary_key
=
True
)
trade_date
=
Column
(
Date
,
nullable
=
False
)
code
=
Column
(
"security_code"
,
Text
,
nullable
=
False
)
exchangeCD
=
Column
(
Text
)
secShortName
=
Column
(
Text
)
SRISK
=
Column
(
FLOAT
)
Market
=
_StkDailyPricePro
Universe
=
_StkUniverse
Industry
=
_SwIndustryDaily
RiskExposure
=
_RiskExposure
RiskCovDay
=
_RiskCovDay
RiskCovShort
=
_RiskCovShort
RiskCovLong
=
_RiskCovLong
SpecificRiskDay
=
_SpecificRiskDay
SpecificRiskShort
=
_SpecificRiskShort
SpecificRiskLong
=
_SpecificRiskLong
alphamind/data/engines/sqlengine_rl.py
View file @
f3dd843e
...
...
@@ -19,7 +19,8 @@ import sqlalchemy as sa
import
sqlalchemy.orm
as
orm
from
sqlalchemy
import
(
and_
,
select
join
,
select
,
)
from
PyFin.api
import
advanceDateByCalendar
...
...
@@ -37,7 +38,56 @@ else:
from
alphamind.data.engines.universe
import
Universe
from
alphamind.data.processing
import
factor_processing
from
alphamind.data.engines.utilities
import
_map_industry_category
from
alphamind.data.engines.utilities
import
_map_risk_model_table
from
alphamind.portfolio.riskmodel
import
FactorRiskModel
risk_styles
=
[
'BETA'
,
'MOMENTUM'
,
'SIZE'
,
'EARNYILD'
,
'RESVOL'
,
'GROWTH'
,
'BTOP'
,
'LEVERAGE'
,
'LIQUIDTY'
,
'SIZENL'
]
industry_styles
=
[
'Bank'
,
'RealEstate'
,
'Health'
,
'Transportation'
,
'Mining'
,
'NonFerMetal'
,
'HouseApp'
,
'LeiService'
,
'MachiEquip'
,
'BuildDeco'
,
'CommeTrade'
,
'CONMAT'
,
'Auto'
,
'Textile'
,
'FoodBever'
,
'Electronics'
,
'Computer'
,
'LightIndus'
,
'Utilities'
,
'Telecom'
,
'AgriForest'
,
'CHEM'
,
'Media'
,
'IronSteel'
,
'NonBankFinan'
,
'ELECEQP'
,
'AERODEF'
,
'Conglomerates'
]
macro_styles
=
[
'COUNTRY'
]
total_risk_factors
=
risk_styles
+
industry_styles
+
macro_styles
DAILY_RETURN_OFFSET
=
0
...
...
alphamind/data/engines/utilities.py
View file @
f3dd843e
...
...
@@ -9,19 +9,34 @@ import os
from
typing
import
Dict
from
typing
import
Iterable
from
alphamind.data.dbmodel.models
import
Categories
from
alphamind.data.dbmodel.models
import
Market
from
alphamind.data.dbmodel.models
import
RiskCovDay
from
alphamind.data.dbmodel.models
import
RiskCovLong
from
alphamind.data.dbmodel.models
import
RiskCovShort
from
alphamind.data.dbmodel.models
import
RiskExposure
from
alphamind.data.dbmodel.models
import
SpecificRiskDay
from
alphamind.data.dbmodel.models
import
SpecificRiskLong
from
alphamind.data.dbmodel.models
import
SpecificRiskShort
from
alphamind.data.dbmodel.models
import
Uqer
from
alphamind.data.engines.industries
import
INDUSTRY_MAPPING
if
"DB_VENDOR"
in
os
.
environ
and
os
.
environ
[
"DB_VENDOR"
]
.
lower
()
==
"rl"
:
from
alphamind.data.dbmodel.models
import
Categories
from
alphamind.data.dbmodel.models
import
Market
from
alphamind.data.dbmodel.models
import
RiskCovDay
from
alphamind.data.dbmodel.models
import
RiskCovLong
from
alphamind.data.dbmodel.models
import
RiskCovShort
from
alphamind.data.dbmodel.models
import
RiskExposure
from
alphamind.data.dbmodel.models
import
SpecificRiskDay
from
alphamind.data.dbmodel.models
import
SpecificRiskLong
from
alphamind.data.dbmodel.models
import
SpecificRiskShort
from
alphamind.data.dbmodel.models
import
Uqer
from
alphamind.data.engines.industries
import
INDUSTRY_MAPPING
factor_tables
=
[
Market
,
RiskExposure
,
Uqer
,
Categories
]
else
:
from
alphamind.data.dbmodel.models
import
Categories
from
alphamind.data.dbmodel.models
import
Market
from
alphamind.data.dbmodel.models_rl
import
RiskCovDay
from
alphamind.data.dbmodel.models_rl
import
RiskCovLong
from
alphamind.data.dbmodel.models_rl
import
RiskCovShort
from
alphamind.data.dbmodel.models_rl
import
RiskExposure
from
alphamind.data.dbmodel.models_rl
import
SpecificRiskDay
from
alphamind.data.dbmodel.models_rl
import
SpecificRiskLong
from
alphamind.data.dbmodel.models_rl
import
SpecificRiskShort
from
alphamind.data.dbmodel.models
import
Uqer
from
alphamind.data.engines.industries
import
INDUSTRY_MAPPING
factor_tables
=
[
Market
,
RiskExposure
,
Uqer
,
Categories
]
factor_tables
=
[
Market
,
RiskExposure
,
Uqer
,
Categories
]
def
_map_risk_model_table
(
risk_model
:
str
)
->
tuple
:
...
...
pfopt
@
a231c326
Subproject commit
cf21f072c71d003666e984c9d5ea761cf74670a9
Subproject commit
a231c326626db460cd40c162b3df932f31409db3
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