gugu金融/投资领域数据分析及量化工具
gugu(股估)
0.1.8版本已于2020年4月20日发布
gugu(股估)是适用于金融/投资领域数据分析及量化工程的开源项目,通过对互联网上的公开数据进行采集、清洗和存储,完成了对股票/债券/基金等金融数据的统一调用和分析。其优点是速度快、可定制及高度的可复用性。您不仅可以将其作为单独的数据接口使用,还可以将其集成在您的项目中作为数据获取api进行调用。
大家可能之前用过类似的开源项目,本人之前在进行金融数据分析时也是使用其他开源项目获取数据的。然而现在很多开源项目变成了半开源甚至闭源,您需要获取许可才能使用或者需要累积积分才能获得更多的权限,这对于喜欢自己动手并自由定制的朋友会有很多的不便。为了充分发扬开源精神倡导自由软件理念本人开发了gugu,作为开源社区版的金融数据api,我们承诺gugu将永远开源并不做任何限制以提供给广大金融/投资数据分析及量化爱好者自由使用!
使用前提:
- python 2.x/3.x
安装方式:
- 方式1: pip install gugu or pip3 install gugu
- 方式2: python setup.py install
- 方式3:访问 https://pypi.python.org/pypi/gugu/ 下载安装
版本升级:
- pip install gugu --upgrade or pip3 install gugu --upgrade
- 查看当前版本的方法:
import gugu
print(gugu.__version__)
Quick Start
Example 1: 获取大盘指数行情
import gugu as gg
obj = gg.MarketData() # 创建市场数据类对象
data = obj.index() # 获取大盘指数行情
获取结果:
obj.output() # 输出结果
code name change open preclose close high \
0 sh000001 上证指数 1.30 2597.7777 2584.5724 2618.2323 2618.4765
1 sh000002 A股指数 1.30 2720.4606 2706.5853 2741.8442 2742.1007
2 sh000003 B股指数 1.18 271.9034 272.1140 275.3162 275.3162
3 sh000008 综合指数 0.61 2557.2054 2543.6348 2559.2362 2561.5066
4 sh000009 上证380 2.47 3892.8231 3880.0032 3975.8523 3976.0933
5 sh000010 上证180 1.07 7293.4790 7241.9589 7319.4839 7320.2873
6 sh000011 基金指数 0.90 5642.7602 5629.3801 5679.8086 5679.8339
7 sh000012 国债指数 0.01 170.9805 170.9642 170.9819 170.9892
8 sh000016 上证50 0.65 2502.1044 2483.4709 2499.6442 2503.5526
9 sh000017 新综指 1.30 2193.5148 2182.3286 2210.7524 2210.9592
10 sh000300 沪深300 1.43 3225.7335 3201.6331 3247.3971 3247.4956
11 sh000905 中证500 2.82 4189.1098 4176.4739 4294.2696 4295.0379
12 sz399001 深证成指 2.74 7524.6650 7479.2150 7683.9970 7684.1120
13 sz399002 深成指R 2.74 9097.7900 9042.8390 9290.4330 9290.5710
14 sz399003 成份B指 1.99 4442.0740 4445.4680 4534.0600 4534.0600
15 sz399004 深证100R 2.49 4063.9900 4029.3260 4129.5800 4130.6630
16 sz399005 中小板指 3.47 4866.8680 4836.6130 5004.4890 5004.4890
17 sz399006 创业板指 3.53 1233.3840 1227.9880 1271.2750 1272.1930
18 sz399008 中小300 3.27 947.0020 942.1740 973.0090 973.0090
19 sz399100 新 指 数 2.69 5850.7930 5819.9190 5976.5880 5976.5880
20 sz399101 中小板综 3.03 7393.8140 7358.2710 7581.1830 7581.1830
21 sz399106 深证综指 2.77 1281.1620 1274.7440 1309.9910 1309.9910
22 sz399107 深证A指 2.77 1339.4990 1332.7690 1369.6510 1369.6510
23 sz399108 深证B指 2.09 857.4780 856.8890 874.7950 874.7950
24 sz399333 中小板R 3.47 5412.0040 5378.3600 5565.0400 5565.0400
25 sz399606 创业板R 3.53 1292.0270 1286.3740 1331.7190 1332.6810
low volume amount
0 2590.5543 131986850 1115.2263
1 2712.8352 131757820 1114.1248
2 271.9034 229031 1.1015
3 2538.8951 35179591 275.8689
4 3892.8231 33132080 260.5541
5 7247.4721 45958066 529.0995
6 5637.2069 41987625 243.7168
7 170.9733 135921 1.3286
8 2479.3375 21950054 293.6402
9 2187.3669 130134579 1096.8641
10 3207.7168 82019641 947.6641
11 4189.1098 66099677 476.9347
12 7517.8340 18099026538 1502.2290
13 9089.5310 8948052337 883.8526
14 4442.0740 6063605 0.4918
15 4045.8820 3531953166 453.0613
16 4866.4270 2440239019 270.5996
17 1233.3840 1566379186 196.9856
18 947.0020 4974249025 426.8148
19 5850.7930 17446832212 1472.6754
20 7393.8140 8257066751 651.9033
21 1281.1620 18099026538 1502.2290
22 1339.4990 18082520936 1501.3883
23 857.4780 16505602 0.8408
24 5411.5130 2440239019 270.5996
25 1292.0270 1566379186 196.9856
Example 2: 获取指数ETF及其相关数据
obj = gg.MarketData() # 创建市场数据类对象
data = obj.indexETF() # 获取指数ETF及其相关数据
获取结果:
obj.output() # 输出结果
fund_id fund_nm index_id creation_unit amount unit_total \
0 159901 深100ETF 399330 20.0 101937.0 36.95
1 159902 中 小 板 399005 50.0 74693.0 18.28
2 159903 深成ETF 399001 300.0 44815.0 3.74
3 159905 深红利 399324 50.0 52744.0 7.64
4 159906 深成长 399346 100.0 14364.0 0.95
5 159907 中小300 399008 150.0 17660.0 1.79
6 159908 博时创业 399006 150.0 3623.0 0.40
7 159909 深TMT 399610 25.0 1552.0 0.52
8 159910 深F120 399702 100.0 48091.0 7.10
9 159911 民营ETF 399337 50.0 1307.0 0.39
.. ... ... ... ... ... ...
110 512660 军工ETF 399967 100.0 111508.0 7.25
111 512680 军工基金 399967 60.0 35932.0 2.29
112 512700 银行基金 399986 20.0 11058.0 1.11
113 512800 银行ETF 399986 30.0 57254.0 5.55
114 512810 军工行业 399967 100.0 8353.0 0.51
115 512880 证券ETF 399975 100.0 389729.0 30.94
116 512900 证券基金 399975 30.0 60671.0 4.64
117 512980 传媒ETF 399971 100.0 110272.0 7.29
118 513600 恒指ETF NaN 100.0 2883.0 0.72
119 513660 恒生通 NaN 100.0 33500.0 8.40
unit_incr price volume increase_rt estimate_value discount_rt \
0 0.33 3.625 18697.36 2.57 3.6215 0.10
1 -0.05 2.448 6731.85 3.51 2.4471 0.04
2 0.00 0.835 77.66 1.83 0.8382 -0.37
3 0.09 1.448 594.53 1.69 1.4477 0.03
4 0.00 0.663 9.30 2.31 0.6582 0.30
5 0.00 1.012 55.09 2.43 1.0128 -0.05
6 -0.01 1.097 28.92 3.49 1.0976 0.02
7 0.00 3.375 3.50 1.75 3.4384 -1.79
8 0.19 1.476 128.26 1.72 1.4767 -0.04
9 0.00 2.970 4.67 2.73 2.9834 -0.42
.. ... ... ... ... ... ...
110 0.08 0.650 2920.85 2.20 0.6495 0.08
111 0.01 0.637 20.94 2.25 0.6388 -0.25
112 0.00 1.000 69.16 0.10 1.0029 -0.29
113 -0.10 0.969 2861.82 0.21 0.9688 0.02
114 0.00 0.614 34.02 2.16 0.6154 -0.18
115 0.54 0.794 21511.10 2.72 0.7940 0.00
116 0.00 0.765 391.30 2.82 0.7654 -0.07
117 0.06 0.661 1043.38 2.64 0.6591 0.20
118 0.00 2.507 49.85 -0.36 2.5237 -0.81
119 0.00 2.507 99.09 0.68 2.4765 1.23
fund_nav nav_dt index_nm index_increase_rt pe pb
0 3.6212 2019-02-01 深证100 0.0 16.665 2.368
1 2.4470 2019-02-01 中小板指 0.0 20.140 2.814
2 0.8381 2019-02-01 深证成指 0.0 17.235 2.121
3 1.4475 2019-02-01 深证红利 0.0 13.370 2.079
4 0.6610 2019-02-01 深证成长 0.0 18.516 2.893
5 1.0125 2019-02-01 中小300 0.0 21.089 2.451
6 1.0968 2019-02-01 创业板指 0.0 28.853 3.598
7 3.4364 2019-02-01 TMT50 0.0 27.880 2.940
8 1.4766 2019-02-01 深证F120 0.0 13.895 1.844
9 2.9825 2019-02-01 深证民营 0.0 21.518 2.945
.. ... ... ... ... ... ...
110 0.6495 2019-02-01 中证军工 0.0 47.329 2.166
111 0.6386 2019-02-01 中证军工 0.0 47.329 2.166
112 1.0029 2019-02-01 中证银行 0.0 6.588 0.873
113 0.9688 2019-02-01 中证银行 0.0 6.588 0.873
114 0.6151 2019-02-01 中证军工 0.0 47.329 2.166
115 0.7940 2019-02-01 证券公司 0.0 25.216 1.341
116 0.7655 2019-02-01 证券公司 0.0 25.216 1.341
117 0.6597 2019-02-01 中证传媒 0.0 19.697 2.362
118 2.5274 2019-02-01 恒生指数 0.0 NaN NaN
119 2.4907 2019-01-30 恒生指数 0.0 NaN NaN
Example 3: 获取股票交易历史数据
obj = gg.StockData('600000') # 创建股票交易类对象
data = obj.history(start='2019-01-02', end='2019-01-31') # 获取浦发银行2019年1月份的历史数据
获取结果:
obj.output() # 输出结果
date open close high low volume code
0 2019-01-02 9.74 9.70 9.79 9.58 237628.0 600000
1 2019-01-03 9.70 9.81 9.82 9.66 186542.0 600000
2 2019-01-04 9.73 9.96 10.00 9.70 271728.0 600000
3 2019-01-07 10.09 9.98 10.09 9.92 235973.0 600000
4 2019-01-08 10.03 9.96 10.03 9.91 151049.0 600000
5 2019-01-09 10.06 9.99 10.16 9.98 231637.0 600000
6 2019-01-10 9.94 9.96 10.02 9.92 159235.0 600000
7 2019-01-11 10.03 10.05 10.15 9.96 190690.0 600000
8 2019-01-14 10.03 10.06 10.10 10.01 203528.0 600000
9 2019-01-15 10.10 10.11 10.15 10.05 156321.0 600000
10 2019-01-16 10.10 10.13 10.15 10.07 129883.0 600000
11 2019-01-17 10.17 10.17 10.28 10.07 227660.0 600000
12 2019-01-18 10.29 10.43 10.44 10.22 290871.0 600000
13 2019-01-21 10.36 10.35 10.46 10.30 189477.0 600000
14 2019-01-22 10.38 10.25 10.38 10.23 162505.0 600000
15 2019-01-23 10.29 10.27 10.34 10.25 165203.0 600000
16 2019-01-24 10.34 10.38 10.39 10.27 150066.0 600000
17 2019-01-25 10.45 10.50 10.56 10.38 196965.0 600000
18 2019-01-28 10.53 10.42 10.66 10.39 217690.0 600000
19 2019-01-29 10.39 10.58 10.63 10.38 237680.0 600000
20 2019-01-30 10.59 10.50 10.64 10.47 160542.0 600000
21 2019-01-31 10.59 10.73 10.73 10.51 251310.0 600000
Example 4: 获取三大需求对GDP贡献数据
obj = gg.Macro() # 创建宏观经济数据类对象
data = obj.demandsToGdp() # 获取获取三大需求对GDP贡献数据
获取结果:
obj.output() # 输出结果
year cons_to cons_rate asset_to asset_rate goods_to goods_rate
0 2017 58.8 4.1 32.1 2.2 9.1 0.6
1 2016 66.5 4.5 43.1 2.9 -9.6 -0.7
2 2015 59.7 4.1 41.6 2.9 -1.3 -0.1
3 2014 48.8 3.6 46.9 3.4 4.3 0.3
4 2013 48.2 3.6 54.2 4.3 -2.3 -0.1
5 2012 56.7 4.3 42.0 3.4 1.7 0.2
6 2011 61.9 5.9 46.2 4.4 -8.1 -0.8
7 2010 46.9 4.8 66.0 7.1 -11.2 -1.3
8 2009 56.1 5.3 86.5 8.1 -42.6 -4.0
9 2008 44.2 4.3 53.2 5.1 2.6 0.3
10 2007 45.3 6.4 44.1 6.3 10.6 1.5
11 2006 42.0 5.3 42.9 5.5 15.1 1.9
12 2005 54.4 6.2 33.1 3.8 12.5 1.4
13 2004 42.6 4.3 61.6 6.2 -4.2 -0.4
14 2003 35.4 3.6 70.0 7.0 -5.4 -0.6
15 2002 43.9 5.1 48.5 3.6 4.6 0.4
16 2001 49.0 4.1 64.0 5.3 -13.0 -1.1
17 2000 78.1 6.6 22.4 1.9 -0.5 NaN
18 1999 74.7 5.7 23.7 1.8 1.6 0.1
19 1998 57.1 4.4 26.4 2.1 16.5 1.3
20 1997 37.0 3.4 18.6 1.7 44.4 4.2
21 1996 60.1 6.0 34.3 3.4 5.6 0.6
22 1995 44.7 4.9 55.0 6.0 0.3 NaN
23 1994 30.2 4.0 43.8 5.7 26.0 3.4
24 1993 59.5 8.3 78.6 11.0 -38.1 -5.3
25 1992 72.5 10.3 34.2 4.9 -6.8 -1.0
26 1991 65.1 6.0 24.3 2.2 10.6 1.0
27 1990 47.8 1.8 1.8 0.1 50.4 1.9
28 1989 39.6 1.6 16.4 0.7 44.0 1.8
29 1988 49.6 5.6 39.4 4.5 11.0 1.2
30 1987 50.3 5.8 23.5 2.7 26.2 3.1
31 1986 45.0 4.0 23.2 2.0 31.8 2.8
32 1985 85.5 11.5 80.9 10.9 -66.4 -8.9
33 1984 69.3 10.5 40.5 6.2 -9.8 -1.5
34 1983 74.1 8.1 40.4 4.4 -14.5 -1.6
35 1982 64.7 5.9 23.8 2.2 11.5 1.0
36 1981 93.4 4.9 -4.3 -0.2 10.9 0.5
37 1980 71.8 5.6 26.4 2.1 1.8 0.1
38 1979 87.3 6.6 15.4 1.2 -2.7 -0.2
39 1978 39.4 4.6 66.0 7.7 -5.4 -0.6
Example 5: 获取可转债及其相关数据
obj = gg.LowRiskIntArb() # 创建低风险及套利类对象
data = obj.conBonds() # 获取可转债及其相关数据
获取结果:
obj.output() # 输出结果
bond_id bond_nm stock_id stock_nm market convert_price convert_dt \
0 127008 特发转债 sz000070 特发信息 sz 6.78 2019-05-22
1 113506 鼎信转债 sh603421 鼎信通讯 sh 21.65 2018-10-20
2 113507 天马转债 sh603668 天马科技 sh 7.37 2018-10-23
3 113520 百合转债 sh603313 梦百合 sh 19.03 2019-05-14
4 128041 盛路转债 sz002446 盛路通信 sz 6.88 2019-01-23
5 110032 三一转债 sh600031 三一重工 sh 7.25 2016-07-04
6 127009 冰轮转债 sz000811 冰轮环境 sz 5.52 2019-07-18
7 128052 凯龙转债 sz002783 凯龙股份 sz 6.97 2019-06-27
8 123018 溢利转债 sz300381 溢多利 sz 8.41 2019-06-26
9 123012 万顺转债 sz300057 万顺股份 sz 6.47 2019-01-26
.. ... ... ... ... ... ... ...
118 128018 时达转债 sz002527 新时达 sz 11.83 2018-05-10
119 128028 赣锋转债 sz002460 赣锋锂业 sz 42.58 2018-06-27
120 128023 亚太转债 sz002284 亚太股份 sz 10.34 2018-06-08
121 132008 17山高EB sh600350 山东高速 sh 9.62 2018-04-26
122 127004 模塑转债 sz000700 模塑科技 sz 7.72 2017-12-08
123 128010 顺昌转债 sz002245 澳洋顺昌 sz 9.28 2016-07-29
124 123003 蓝思转债 sz300433 蓝思科技 sz 16.08 2018-06-14
125 132011 17浙报EB sh600633 浙数文化 sh 24.39 2018-08-17
126 128012 辉丰转债 sz002496 ST辉丰 sz 7.71 2016-10-28
127 128013 洪涛转债 sz002325 洪涛股份 sz 9.98 2017-02-06
Example 6: 股票LOF基金及基相关数据
obj = gg.LowRiskIntArb() # 创建低风险及套利类对象
data = obj.stockLof() # 获取股票LOF基金及基相关数据
获取结果:
obj.output() # 输出结果
fund_id fund_nm price increase_rt volume amount fund_nav nav_dt \
0 160105 南方积配 0.812 1.37 6.73 2175.0 0.8155 2019-02-01
1 160106 南方高增 0.847 2.05 13.22 6851.0 0.8666 2019-02-01
2 160133 南方天元 1.956 0.98 28.82 22162.0 1.9830 2019-02-01
3 160211 国泰小盘 1.647 1.92 41.34 5115.0 1.6620 2019-02-01
4 160212 国泰估值 1.658 2.35 64.51 8375.0 1.6750 2019-02-01
5 160215 国泰价值 1.192 1.27 10.85 2205.0 1.1990 2019-02-01
6 160220 国泰民益 1.132 1.71 3.83 3223.0 1.1382 2019-02-01
7 160311 华夏蓝筹 1.297 0.93 27.65 10515.0 1.3040 2019-02-01
8 160314 华夏行业 0.842 1.45 12.76 13094.0 0.8490 2019-02-01
9 160323 华夏磐泰 1.009 0.00 0.00 145.0 0.9721 2019-02-01
.. ... ... ... ... ... ... ... ...
68 168401 红土定增 0.966 0.00 1.04 1010.0 1.0139 2019-02-01
69 169101 东证睿丰 1.252 1.54 356.30 39830.0 1.2600 2019-02-01
70 169201 浙商鼎盈 0.971 0.00 0.00 771.0 0.9783 2019-02-01
71 501000 国金鑫新 0.961 4.34 2.09 82.0 0.9460 2019-02-01
72 501001 财通精选 0.953 -2.46 10.37 5423.0 0.9590 2019-02-01
73 501015 财通升级 0.757 0.40 12.29 36579.0 0.7650 2019-02-01
74 501017 国泰融丰 0.783 0.00 0.00 5178.0 0.7768 2019-02-01
75 501022 银华鑫盛 0.779 0.39 3.33 12266.0 0.7980 2019-02-01
76 501027 国泰融信 0.989 0.00 0.00 311.0 1.0055 2019-02-01
77 501035 创金睿选 0.938 0.32 2.14 877.0 0.9627 2019-02-01
Change log:
0.1.8 2020/04/20
(1)Classify类中方法byIndustry去掉按申万行业(sw)获取行业分类数据,保留只使用按新浪行业(sina)获取行业分类数据
(2)LowRiskIntArb类中去掉获取A/H比价数据方法AHRatio
(3)Macro类中将montySupply方法更名为moneySupply;去掉获取贷款基础利率均值数据方法lprMa
(4)StockInfo类中方法stockProfiles经过重新修订可以高效获取上市公司基于基本面的汇总数据信息
(5)修复了N多因网页数据格式更改造成的某些api失效或错误的问题
(6)修复部分bugs
更多文档: