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
ebd16b85
Commit
ebd16b85
authored
Jan 24, 2018
by
Dr.李
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
added more industry styles
parent
4944d755
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
102 additions
and
20 deletions
+102
-20
industries.py
alphamind/data/engines/industries.py
+68
-0
sqlengine.py
alphamind/data/engines/sqlengine.py
+23
-19
utilities.py
alphamind/data/engines/utilities.py
+11
-1
No files found.
alphamind/data/engines/industries.py
0 → 100644
View file @
ebd16b85
# -*- coding: utf-8 -*-
"""
Created on 2018-1-24
@author: cheng.li
"""
INDUSTRY_MAPPING
=
{
'sw'
:
{
1
:
[
"采掘"
,
"传媒"
,
"电气设备"
,
"电子"
,
"房地产"
,
"纺织服装"
,
"非银金融"
,
"钢铁"
,
"公用事业"
,
"国防军工"
,
"化工"
,
"机械设备"
,
"计算机"
,
"家用电器"
,
"建筑材料"
,
"建筑装饰"
,
"交通运输"
,
"农林牧渔"
,
"汽车"
,
"轻工制造"
,
"商业贸易"
,
"食品饮料"
,
"通信"
,
"休闲服务"
,
"医药生物"
,
"银行"
,
"有色金属"
,
"综合"
],
2
:
[
"白色家电"
,
"半导体"
,
"包装印刷"
,
"保险"
,
"玻璃制造"
,
"采掘服务"
,
"餐饮"
,
"畜禽养殖"
,
"船舶制造"
,
"地面兵装"
,
"电机"
,
"电力"
,
"电气自动化设备"
,
"电源设备"
,
"电子制造"
,
"动物保健"
,
"多元金融"
,
"房地产开发"
,
"房屋建设"
,
"纺织制造"
,
"服装家纺"
,
"钢铁"
,
"港口"
,
"高低压设备"
,
"高速公路"
,
"工业金属"
,
"公交"
,
"光学光电子"
,
"航空运输"
,
"航空装备"
,
"航天装备"
,
"航运"
,
"互联网传媒"
,
"化学纤维"
,
"化学原料"
,
"化学制品"
,
"化学制药"
,
"环保工程及服务"
,
"黄金"
,
"机场"
,
"基础建设"
,
"计算机设备"
,
"计算机应用"
,
"家用轻工"
,
"金属非金属新材料"
,
"金属制品"
,
"景点"
,
"酒店"
,
"林业"
,
"旅游综合"
,
"贸易"
,
"煤炭开采"
,
"农产品加工"
,
"农业综合"
,
"其他采掘"
,
"其他电子"
,
"其他建材"
,
"其他交运设备"
,
"其他轻工制造"
,
"其他休闲服务"
,
"汽车服务"
,
"汽车零部件"
,
"汽车整车"
,
"燃气"
,
"商业物业经营"
,
"生物制品"
,
"石油化工"
,
"石油开采"
,
"食品加工"
,
"视听器材"
,
"水泥制造"
,
"水务"
,
"饲料"
,
"塑料"
,
"铁路运输"
,
"通信设备"
,
"通信运营"
,
"通用机械"
,
"文化传媒"
,
"物流"
,
"稀有金属"
,
"橡胶"
,
"一般零售"
,
"医疗服务"
,
"医疗器械"
,
"医药商业"
,
"仪器仪表"
,
"银行"
,
"饮料制造"
,
"营销传播"
,
"渔业"
,
"元件"
,
"园林工程"
,
"园区开发"
,
"运输设备"
,
"造纸"
,
"证券"
,
"中药"
,
"种植业"
,
"专业工程"
,
"专业零售"
,
"专用设备"
,
"装修装饰"
,
"综合"
],
3
:
[
"IT服务"
,
"LED"
,
"氨纶"
,
"白酒"
,
"百货"
,
"半导体材料"
,
"包装印刷"
,
"保险"
,
"被动元件"
,
"冰箱"
,
"玻璃制造"
,
"玻纤"
,
"彩电"
,
"餐饮"
,
"超市"
,
"城轨建设"
,
"乘用车"
,
"储能设备"
,
"畜禽养殖"
,
"船舶制造"
,
"纯碱"
,
"磁性材料"
,
"氮肥"
,
"低压设备"
,
"涤纶"
,
"地面兵装"
,
"电机"
,
"电网自动化"
,
"电子零部件制造"
,
"电子系统组装"
,
"动物保健"
,
"多业态零售"
,
"多元金融"
,
"房地产开发"
,
"房屋建设"
,
"纺织服装设备"
,
"纺织化学用品"
,
"非金属新材料"
,
"分立器件"
,
"风电设备"
,
"氟化工及制冷剂"
,
"辅料"
,
"复合肥"
,
"改性塑料"
,
"钢结构"
,
"港口"
,
"高速公路"
,
"高压设备"
,
"工程机械"
,
"工控自动化"
,
"公交"
,
"管材"
,
"光伏设备"
,
"光学元件"
,
"国际工程承包"
,
"果蔬加工"
,
"海洋捕捞"
,
"航空运输"
,
"航空装备"
,
"航天装备"
,
"航运"
,
"合成革"
,
"互联网信息服务"
,
"化学工程"
,
"化学原料药"
,
"化学制剂"
,
"环保工程及服务"
,
"环保设备"
,
"黄金"
,
"黄酒"
,
"火电"
,
"火电设备"
,
"机场"
,
"机床工具"
,
"机械基础件"
,
"集成电路"
,
"计量仪表"
,
"计算机设备"
,
"家电零部件"
,
"家纺"
,
"家具"
,
"钾肥"
,
"焦炭加工"
,
"金属新材料"
,
"金属制品"
,
"酒店"
,
"聚氨酯"
,
"空调"
,
"锂"
,
"粮食种植"
,
"粮油加工"
,
"林业"
,
"磷肥"
,
"磷化工及磷酸盐"
,
"楼宇设备"
,
"路桥施工"
,
"轮胎"
,
"旅游综合"
,
"铝"
,
"氯碱"
,
"毛纺"
,
"贸易"
,
"煤炭开采"
,
"棉纺"
,
"民爆用品"
,
"磨具磨料"
,
"耐火材料"
,
"男装"
,
"内燃机"
,
"农药"
,
"农业综合"
,
"农用机械"
,
"女装"
,
"啤酒"
,
"平面媒体"
,
"葡萄酒"
,
"普钢"
,
"其他采掘"
,
"其他采掘服务"
,
"其他电子"
,
"其他纺织"
,
"其他服装"
,
"其他互联网服务"
,
"其他化学原料"
,
"其他化学制品"
,
"其他基础建设"
,
"其他家用轻工"
,
"其他建材"
,
"其他交运设备"
,
"其他酒类"
,
"其他农产品加工"
,
"其他轻工制造"
,
"其他塑料制品"
,
"其他文化传媒"
,
"其他稀有小金属"
,
"其他纤维"
,
"其他橡胶制品"
,
"其他休闲服务"
,
"其他种植业"
,
"其他专业工程"
,
"其它电源设备"
,
"其它视听器材"
,
"其它通用机械"
,
"其它专用机械"
,
"汽车服务"
,
"汽车零部件"
,
"铅锌"
,
"燃机发电"
,
"燃气"
,
"热电"
,
"人工景点"
,
"日用化学产品"
,
"肉制品"
,
"乳品"
,
"软件开发"
,
"软饮料"
,
"商用载货车"
,
"商用载客车"
,
"生物制品"
,
"石油加工"
,
"石油开采"
,
"石油贸易"
,
"食品综合"
,
"水产养殖"
,
"水电"
,
"水利工程"
,
"水泥制造"
,
"水务"
,
"丝绸"
,
"饲料"
,
"炭黑"
,
"特钢"
,
"调味发酵品"
,
"铁路建设"
,
"铁路设备"
,
"铁路运输"
,
"通信传输设备"
,
"通信配套服务"
,
"通信运营"
,
"铜"
,
"涂料油漆油墨制造"
,
"维纶"
,
"文娱用品"
,
"钨"
,
"无机盐"
,
"物流"
,
"稀土"
,
"洗衣机"
,
"显示器件"
,
"线缆部件及其他"
,
"小家电"
,
"鞋帽"
,
"新能源发电"
,
"休闲服装"
,
"冶金矿采化工设备"
,
"一般物业经营"
,
"医疗服务"
,
"医疗器械"
,
"医药商业"
,
"仪器仪表"
,
"移动互联网服务"
,
"银行"
,
"印染"
,
"印刷包装机械"
,
"印制电路板"
,
"营销服务"
,
"影视动漫"
,
"油气钻采服务"
,
"有线电视网络"
,
"园林工程"
,
"园区开发"
,
"造纸"
,
"粘胶"
,
"证券"
,
"制冷空调设备"
,
"中压设备"
,
"中药"
,
"终端设备"
,
"种子生产"
,
"重型机械"
,
"珠宝首饰"
,
"专业连锁"
,
"专业市场"
,
"装修装饰"
,
"自然景点"
,
"综合"
,
"综合电力设备商"
]
},
'zz'
:
{
1
:
[
"电信业务"
,
"工业"
,
"公用事业"
,
"金融地产"
,
"可选消费"
,
"能源"
,
"信息技术"
,
"医药卫生"
,
"原材料"
,
"主要消费"
],
2
:
[
"半导体"
,
"保险"
,
"传媒"
,
"电信服务"
,
"房地产"
,
"公用事业"
,
"计算机及电子设备"
,
"计算机运用"
,
"家庭与个人用品"
,
"交通运输"
,
"零售业"
,
"耐用消费品与服装"
,
"能源"
,
"其他金融"
,
"汽车与汽车零部件"
,
"商业服务与用品"
,
"食品、饮料与烟草"
,
"食品与主要用品零售"
,
"通信设备"
,
"消费者服务"
,
"医疗器械与服务"
,
"医药生物"
,
"银行"
,
"原材料"
,
"资本品"
,
"资本市场"
],
3
:
[
"半导体"
,
"包装食品与肉类"
,
"保险"
,
"传媒"
,
"道路运输"
,
"电力"
,
"电脑与外围设备"
,
"电气设备"
,
"电网"
,
"电信运营服务"
,
"电信增值服务"
,
"电子设备"
,
"多元化零售"
,
"房地产管理与服务"
,
"房地产开发与园区"
,
"纺织服装"
,
"非金属采矿及制品"
,
"钢铁"
,
"个人用品"
,
"工业集团企业"
,
"供热或其他公用事业"
,
"航空公司"
,
"航空航天与国防"
,
"航空货运与物流"
,
"航运"
,
"互联网服务"
,
"互联网零售"
,
"化学原料"
,
"化学制品"
,
"环保设备、工程与服务"
,
"机械制造"
,
"家常用品"
,
"家庭耐用消费品"
,
"建筑材料"
,
"建筑产品"
,
"建筑与工程"
,
"交通基本设施"
,
"酒店、餐馆与休闲"
,
"煤炭"
,
"能源开采设备与服务"
,
"农牧渔产品"
,
"其他金融服务"
,
"其他零售"
,
"汽车零配件与轮胎"
,
"汽车与摩托车"
,
"燃气"
,
"日用品经销商"
,
"容器与包装"
,
"软件开发"
,
"商业服务与用品"
,
"商业银行"
,
"生物科技"
,
"石油与天然气"
,
"食品与主要用品零售"
,
"水务"
,
"通信设备"
,
"消费信贷"
,
"信息技术服务"
,
"休闲设备与用品"
,
"医疗器械"
,
"医疗用品与服务提供商"
,
"饮料"
,
"有色金属"
,
"纸类与林业产品"
,
"制药"
,
"制药与生物科技服务"
,
"珠宝与奢侈品"
,
"资本市场"
,
"综合消费者服务"
]
},
'zjh'
:
{
1
:
[
"采矿业"
,
"电力、热力、燃气及水生产和供应业"
,
"房地产业"
,
"建筑业"
,
"交通运输、仓储和邮政业"
,
"教育"
,
"金融业"
,
"居民服务、修理和其他服务业"
,
"科学研究和技术服务业"
,
"农、林、牧、渔业"
,
"批发和零售业"
,
"水利、环境和公共设施管理业"
,
"卫生和社会工作"
,
"文化、体育和娱乐业"
,
"信息传输、软件和信息技术服务业"
,
"制造业"
,
"住宿和餐饮业"
,
"综合"
,
"租赁和商务服务业"
],
2
:
[
"保险业"
,
"餐饮业"
,
"仓储业"
,
"畜牧业"
,
"道路运输业"
,
"电力、热力生产和供应业"
,
"电气机械和器材制造业"
,
"电信、广播电视和卫星传输服务"
,
"房地产业"
,
"房屋建筑业"
,
"纺织服装、服饰业"
,
"纺织业"
,
"非金属矿采选业"
,
"非金属矿物制品业"
,
"废弃资源综合利用业"
,
"公共设施管理业"
,
"广播、电视、电影和影视录音制作业"
,
"航空运输业"
,
"黑色金属矿采选业"
,
"黑色金属冶炼和压延加工业"
,
"互联网和相关服务"
,
"化学纤维制造业"
,
"化学原料和化学制品制造业"
,
"货币金融服务"
,
"机动车、电子产品和日用产品修理业"
,
"计算机、通信和其他电子设备制造业"
,
"家具制造业"
,
"建筑安装业"
,
"建筑装饰和其他建筑业"
,
"教育"
,
"金属制品业"
,
"酒、饮料和精制茶制造业"
,
"开采辅助活动"
,
"林业"
,
"零售业"
,
"煤炭开采和洗选业"
,
"木材加工和木、竹、藤、棕、草制品业"
,
"农、林、牧、渔服务业"
,
"农副食品加工业"
,
"农业"
,
"批发业"
,
"皮革、毛皮、羽毛及其制品和制鞋业"
,
"其他金融业"
,
"其他制造业"
,
"汽车制造业"
,
"燃气生产和供应业"
,
"软件和信息技术服务业"
,
"商务服务业"
,
"生态保护和环境治理业"
,
"石油和天然气开采业"
,
"石油加工、炼焦和核燃料加工业"
,
"食品制造业"
,
"水的生产和供应业"
,
"水利管理业"
,
"水上运输业"
,
"体育"
,
"铁路、船舶、航空航天和其它运输设备制造业"
,
"铁路运输业"
,
"通用设备制造业"
,
"土木工程建筑业"
,
"卫生"
,
"文化艺术业"
,
"文教、工美、体育和娱乐用品制造业"
,
"橡胶和塑料制品业"
,
"新闻和出版业"
,
"研究和试验发展"
,
"医药制造业"
,
"仪器仪表制造业"
,
"印刷和记录媒介复制业"
,
"邮政业"
,
"有色金属矿采选业"
,
"有色金属冶炼和压延加工业"
,
"渔业"
,
"造纸和纸制品业"
,
"住宿业"
,
"专业技术服务业"
,
"专用设备制造业"
,
"装卸搬运和运输代理业"
,
"资本市场服务"
,
"综合"
,
"租赁业"
],
},
'dx'
:
{
1
:
[
"Cyclical"
,
"Defensive"
,
"Sensitive"
],
2
:
[
"ConsumerDiscretionary"
,
"ConsumerStaples"
,
"Financials"
,
"HealthCare"
,
"Industrials"
,
"IT"
,
"Materials"
,
"RealEstate"
,
"Utilities"
]
}
}
alphamind/data/engines/sqlengine.py
View file @
ebd16b85
...
...
@@ -207,12 +207,12 @@ class SqlEngine(object):
cond
=
universe
.
_query_statements
(
start_date
,
end_date
,
None
)
big_table
=
join
(
Market
,
UniverseTable
,
and_
(
Market
.
trade_date
==
UniverseTable
.
trade_date
,
Market
.
code
==
UniverseTable
.
code
,
cond
)
)
and_
(
Market
.
trade_date
==
UniverseTable
.
trade_date
,
Market
.
code
==
UniverseTable
.
code
,
cond
)
)
query
=
select
([
Market
.
trade_date
,
Market
.
code
,
stats
])
\
.
select_from
(
big_table
)
...
...
@@ -379,7 +379,7 @@ class SqlEngine(object):
FullFactor
.
code
==
UniverseTable
.
code
,
cond
)
)
)
query
=
select
(
[
FullFactor
.
trade_date
,
FullFactor
.
code
,
FullFactor
.
isOpen
]
+
list
(
factor_cols
.
keys
()))
\
...
...
@@ -498,7 +498,7 @@ class SqlEngine(object):
FullFactor
.
code
==
UniverseTable
.
code
,
cond
)
)
)
query
=
select
(
[
FullFactor
.
trade_date
,
FullFactor
.
code
,
special_risk_col
]
+
risk_exposure_cols
)
.
select_from
(
big_table
)
\
...
...
@@ -508,7 +508,8 @@ class SqlEngine(object):
if
universe
.
is_filtered
:
codes
=
universe
.
query
(
self
,
start_date
,
end_date
,
dates
)
risk_exp
=
pd
.
merge
(
risk_exp
,
codes
,
how
=
'inner'
,
on
=
[
'trade_date'
,
'code'
])
.
sort_values
([
'trade_date'
,
'code'
])
risk_exp
=
pd
.
merge
(
risk_exp
,
codes
,
how
=
'inner'
,
on
=
[
'trade_date'
,
'code'
])
.
sort_values
(
[
'trade_date'
,
'code'
])
return
risk_cov
,
risk_exp
...
...
@@ -536,7 +537,8 @@ class SqlEngine(object):
start_date
:
str
=
None
,
end_date
:
str
=
None
,
dates
:
Iterable
[
str
]
=
None
,
category
:
str
=
'sw'
):
category
:
str
=
'sw'
,
level
:
int
=
1
):
industry_category_name
=
_map_industry_category
(
category
)
cond
=
universe
.
_query_statements
(
start_date
,
end_date
,
dates
)
...
...
@@ -548,12 +550,15 @@ class SqlEngine(object):
Industry
.
industry
==
industry_category_name
,
cond
)
)
)
code_name
=
'industryID'
+
str
(
level
)
category_name
=
'industryName'
+
str
(
level
)
query
=
select
([
Industry
.
trade_date
,
Industry
.
code
,
Industry
.
industryID1
.
label
(
'industry_code'
),
Industry
.
industryName1
.
label
(
'industry'
)])
.
select_from
(
big_table
)
.
distinct
()
getattr
(
Industry
,
code_name
)
.
label
(
'industry_code'
),
getattr
(
Industry
,
category_name
)
.
label
(
'industry'
)])
.
select_from
(
big_table
)
.
distinct
()
df
=
pd
.
read_sql
(
query
,
self
.
engine
)
if
universe
.
is_filtered
:
...
...
@@ -802,10 +807,10 @@ class SqlEngine(object):
else
:
id_filter
=
'in_'
t
=
select
([
table
.
trade_id
])
.
\
t
=
select
([
table
.
trade_id
])
.
\
where
(
and_
(
table
.
trade_date
<=
ref_date
,
table
.
operation
==
'withdraw'
))
.
alias
(
't'
)
query
=
select
([
table
])
.
\
query
=
select
([
table
])
.
\
where
(
and_
(
getattr
(
table
.
trade_id
,
id_filter
)(
t
),
table
.
trade_date
<=
ref_date
,
table
.
operation
==
'lend'
))
...
...
@@ -823,7 +828,7 @@ class SqlEngine(object):
rule
=
x
[
'price_rule'
]
.
split
(
'@'
)
if
rule
[
0
]
in
[
'closePrice'
,
'openPrice'
]:
query
=
select
([
getattr
(
Market
,
rule
[
0
])])
.
\
query
=
select
([
getattr
(
Market
,
rule
[
0
])])
.
\
where
(
and_
(
Market
.
code
==
code
,
Market
.
trade_date
==
rule
[
1
]))
data
=
pd
.
read_sql
(
query
,
self
.
engine
)
if
not
data
.
empty
:
...
...
@@ -835,6 +840,7 @@ class SqlEngine(object):
else
:
raise
KeyError
(
'do not have rule for
%
s'
%
x
[
'price_rule'
])
return
price
df
[
'price'
]
=
df
.
apply
(
lambda
x
:
parse_price_rule
(
x
),
axis
=
1
)
df
.
drop
([
'remark'
,
'price_rule'
,
'operation'
],
axis
=
1
,
inplace
=
True
)
...
...
@@ -848,12 +854,10 @@ class SqlEngine(object):
if
__name__
==
'__main__'
:
universe
=
Universe
(
'ss'
,
[
'hs300'
])
engine
=
SqlEngine
()
df
=
engine
.
fetch_
outright_status
(
'2017-12-28'
)
df
=
engine
.
fetch_
industry_range
(
universe
,
'2017-12-28'
,
'2017-12-31'
,
category
=
'dx'
,
level
=
3
)
print
(
df
)
alphamind/data/engines/utilities.py
View file @
ebd16b85
...
...
@@ -43,5 +43,15 @@ def _map_factors(factors: Iterable[str], used_factor_tables) -> Dict:
def
_map_industry_category
(
category
:
str
)
->
str
:
if
category
==
'sw'
:
return
'申万行业分类'
elif
category
==
'zz'
:
return
'中证行业分类'
elif
category
==
'dx'
:
return
'中证行业分类'
elif
category
==
'zjh'
:
return
'证监会行业V2012'
else
:
raise
ValueError
(
"No other industry is supported at the current time"
)
\ No newline at end of file
raise
ValueError
(
"No other industry is supported at the current time"
)
def
industry_list
(
catrgory
,
level
=
1
):
pass
\ No newline at end of file
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