akshare 1.12.95__py3-none-any.whl → 1.15.72__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of akshare might be problematic. Click here for more details.

Files changed (240) hide show
  1. akshare/__init__.py +446 -139
  2. akshare/air/air_hebei.py +79 -53
  3. akshare/air/air_zhenqi.py +29 -43
  4. akshare/air/sunrise_tad.py +32 -17
  5. akshare/bank/bank_cbirc_2020.py +12 -9
  6. akshare/bond/bond_cb_ths.py +17 -9
  7. akshare/bond/bond_china.py +38 -39
  8. akshare/bond/bond_china_money.py +75 -48
  9. akshare/bond/bond_convert.py +40 -16
  10. akshare/bond/bond_info_cm.py +28 -8
  11. akshare/bond/bond_issue_cninfo.py +73 -30
  12. akshare/bond/{bond_zh_cov_sina.py → bond_zh_cov.py} +41 -17
  13. akshare/bond/bond_zh_sina.py +57 -51
  14. akshare/cal/__init__.py +0 -0
  15. akshare/cal/rv.py +170 -0
  16. akshare/cost/cost_living.py +7 -5
  17. akshare/currency/currency_safe.py +7 -6
  18. akshare/data/cninfo.js +15 -0
  19. akshare/datasets.py +10 -21
  20. akshare/economic/macro_bank.py +95 -653
  21. akshare/economic/macro_china.py +772 -1024
  22. akshare/economic/macro_china_hk.py +65 -243
  23. akshare/economic/macro_china_nbs.py +24 -7
  24. akshare/economic/macro_constitute.py +17 -12
  25. akshare/economic/macro_euro.py +13 -6
  26. akshare/economic/macro_finance_ths.py +133 -0
  27. akshare/economic/macro_info_ws.py +100 -0
  28. akshare/economic/macro_japan.py +5 -4
  29. akshare/economic/macro_other.py +12 -9
  30. akshare/economic/macro_usa.py +376 -1940
  31. akshare/economic/marco_cnbs.py +11 -6
  32. akshare/energy/energy_carbon.py +94 -125
  33. akshare/event/migration.py +3 -2
  34. akshare/exceptions.py +43 -0
  35. akshare/file_fold/calendar.json +245 -2
  36. akshare/fortune/fortune_500.py +15 -48
  37. akshare/fund/fund_amac.py +157 -75
  38. akshare/fund/fund_em.py +191 -184
  39. akshare/fund/fund_etf_em.py +20 -19
  40. akshare/fund/fund_etf_sina.py +71 -23
  41. akshare/fund/fund_etf_ths.py +93 -0
  42. akshare/fund/fund_fee_em.py +98 -0
  43. akshare/fund/fund_lof_em.py +10 -8
  44. akshare/fund/fund_portfolio_em.py +60 -50
  45. akshare/fund/fund_rank_em.py +91 -82
  46. akshare/fund/fund_report_cninfo.py +63 -48
  47. akshare/fund/fund_scale_sina.py +20 -10
  48. akshare/fund/fund_xq.py +139 -109
  49. akshare/futures/cons.py +8 -31
  50. akshare/futures/cot.py +185 -137
  51. akshare/futures/futures_basis.py +97 -32
  52. akshare/futures/futures_comm_ctp.py +37 -0
  53. akshare/futures/futures_comm_qihuo.py +74 -45
  54. akshare/futures/futures_daily_bar.py +121 -184
  55. akshare/futures/futures_hf_em.py +66 -61
  56. akshare/futures/futures_hq_sina.py +79 -61
  57. akshare/futures/futures_index_ccidx.py +6 -3
  58. akshare/futures/futures_inventory_99.py +61 -272
  59. akshare/futures/futures_news_shmet.py +4 -2
  60. akshare/futures/futures_roll_yield.py +12 -25
  61. akshare/futures/futures_spot_stock_em.py +19 -13
  62. akshare/futures/futures_stock_js.py +14 -12
  63. akshare/futures/futures_to_spot.py +38 -33
  64. akshare/futures/futures_warehouse_receipt.py +75 -71
  65. akshare/futures/futures_zh_sina.py +73 -50
  66. akshare/futures/symbol_var.py +18 -13
  67. akshare/futures_derivative/futures_contract_info_czce.py +60 -52
  68. akshare/futures_derivative/futures_contract_info_ine.py +43 -34
  69. akshare/futures_derivative/futures_contract_info_shfe.py +46 -35
  70. akshare/futures_derivative/futures_cot_sina.py +26 -19
  71. akshare/futures_derivative/futures_spot_sys.py +21 -8
  72. akshare/fx/currency_investing.py +19 -285
  73. akshare/index/index_cflp.py +29 -26
  74. akshare/index/index_cni.py +86 -88
  75. akshare/index/index_cons.py +26 -10
  76. akshare/index/index_cx.py +248 -47
  77. akshare/index/index_drewry.py +17 -16
  78. akshare/index/index_hog.py +27 -26
  79. akshare/index/index_option_qvix.py +329 -0
  80. akshare/index/index_research_fund_sw.py +134 -0
  81. akshare/index/{index_sw_research.py → index_research_sw.py} +122 -58
  82. akshare/index/index_spot.py +9 -5
  83. akshare/index/index_stock_hk.py +35 -16
  84. akshare/index/index_stock_us_sina.py +1 -1
  85. akshare/index/index_stock_zh.py +180 -89
  86. akshare/index/index_stock_zh_csindex.py +15 -369
  87. akshare/index/index_sw.py +62 -34
  88. akshare/index/index_yw.py +46 -23
  89. akshare/index/index_zh_a_scope.py +48 -0
  90. akshare/index/index_zh_em.py +17 -14
  91. akshare/interest_rate/interbank_rate_em.py +14 -9
  92. akshare/movie/artist_yien.py +32 -5
  93. akshare/movie/movie_yien.py +92 -18
  94. akshare/movie/video_yien.py +28 -5
  95. akshare/news/news_baidu.py +78 -44
  96. akshare/news/news_cctv.py +38 -38
  97. akshare/news/news_stock.py +6 -3
  98. akshare/nlp/nlp_interface.py +7 -8
  99. akshare/option/cons.py +11 -11
  100. akshare/option/option_comm_qihuo.py +86 -0
  101. akshare/option/option_commodity.py +178 -51
  102. akshare/option/option_daily_stats_sse_szse.py +146 -0
  103. akshare/option/option_em.py +147 -138
  104. akshare/option/option_finance_sina.py +160 -137
  105. akshare/option/option_lhb_em.py +62 -56
  106. akshare/option/option_risk_indicator_sse.py +17 -14
  107. akshare/other/other_car_cpca.py +934 -0
  108. akshare/other/{other_car.py → other_car_gasgoo.py} +15 -54
  109. akshare/qdii/__init__.py +0 -0
  110. akshare/qdii/qdii_jsl.py +233 -0
  111. akshare/request.py +117 -0
  112. akshare/spot/spot_hog_soozhu.py +232 -0
  113. akshare/spot/spot_price_qh.py +121 -0
  114. akshare/spot/spot_sge.py +63 -10
  115. akshare/stock/stock_allotment_cninfo.py +10 -9
  116. akshare/stock/stock_ask_bid_em.py +27 -3
  117. akshare/stock/stock_board_concept_em.py +23 -14
  118. akshare/stock/stock_board_industry_em.py +40 -34
  119. akshare/stock/stock_cg_equity_mortgage.py +15 -11
  120. akshare/stock/stock_cg_guarantee.py +41 -51
  121. akshare/stock/stock_cg_lawsuit.py +36 -35
  122. akshare/stock/stock_dividend_cninfo.py +12 -6
  123. akshare/stock/stock_dzjy_em.py +347 -260
  124. akshare/stock/stock_fund_em.py +332 -84
  125. akshare/stock/stock_hk_famous.py +108 -0
  126. akshare/stock/stock_hk_sina.py +8 -7
  127. akshare/stock/stock_hold_control_cninfo.py +100 -15
  128. akshare/stock/stock_hold_control_em.py +4 -3
  129. akshare/stock/stock_hold_num_cninfo.py +18 -12
  130. akshare/stock/stock_hot_rank_em.py +2 -1
  131. akshare/stock/stock_hot_search_baidu.py +5 -2
  132. akshare/stock/stock_industry_cninfo.py +24 -18
  133. akshare/stock/stock_industry_pe_cninfo.py +45 -31
  134. akshare/stock/stock_industry_sw.py +9 -10
  135. akshare/stock/stock_info.py +25 -15
  136. akshare/stock/stock_info_em.py +5 -2
  137. akshare/stock/stock_intraday_em.py +5 -2
  138. akshare/stock/stock_intraday_sina.py +22 -18
  139. akshare/stock/stock_ipo_summary_cninfo.py +25 -10
  140. akshare/stock/stock_new_cninfo.py +32 -19
  141. akshare/stock/stock_news_cx.py +39 -0
  142. akshare/stock/stock_profile_cninfo.py +9 -8
  143. akshare/stock/stock_rank_forecast.py +8 -6
  144. akshare/stock/stock_share_changes_cninfo.py +18 -14
  145. akshare/stock/stock_share_hold.py +24 -19
  146. akshare/stock/stock_summary.py +54 -26
  147. akshare/stock/stock_us_famous.py +15 -6
  148. akshare/stock/stock_us_pink.py +7 -5
  149. akshare/stock/stock_us_sina.py +15 -12
  150. akshare/stock/stock_xq.py +38 -12
  151. akshare/stock/stock_zh_a_sina.py +53 -78
  152. akshare/stock/stock_zh_b_sina.py +32 -55
  153. akshare/stock/stock_zh_kcb_report.py +11 -9
  154. akshare/stock/stock_zh_kcb_sina.py +67 -64
  155. akshare/stock_feature/stock_a_below_net_asset_statistics.py +5 -2
  156. akshare/stock_feature/stock_a_high_low.py +5 -2
  157. akshare/stock_feature/stock_a_indicator.py +12 -9
  158. akshare/stock_feature/stock_a_pe_and_pb.py +27 -6
  159. akshare/stock_feature/stock_account_em.py +58 -40
  160. akshare/stock_feature/stock_analyst_em.py +36 -27
  161. akshare/stock_feature/stock_board_industry_ths.py +136 -400
  162. akshare/stock_feature/stock_comment_em.py +118 -85
  163. akshare/stock_feature/stock_concept_futu.py +183 -0
  164. akshare/stock_feature/stock_cyq_em.py +58 -54
  165. akshare/stock_feature/stock_disclosure_cninfo.py +147 -102
  166. akshare/stock_feature/stock_esg_sina.py +216 -11
  167. akshare/stock_feature/stock_fhps_em.py +60 -25
  168. akshare/stock_feature/stock_fhps_ths.py +25 -6
  169. akshare/stock_feature/stock_fund_flow.py +38 -25
  170. akshare/stock_feature/stock_gdfx_em.py +180 -95
  171. akshare/stock_feature/stock_gdhs.py +73 -49
  172. akshare/stock_feature/stock_gpzy_em.py +78 -46
  173. akshare/stock_feature/stock_hist_em.py +164 -111
  174. akshare/stock_feature/stock_hk_valuation_baidu.py +20 -8
  175. akshare/stock_feature/stock_hsgt_em.py +184 -452
  176. akshare/stock_feature/stock_info.py +52 -29
  177. akshare/stock_feature/stock_inner_trade_xq.py +39 -31
  178. akshare/stock_feature/stock_irm_cninfo.py +32 -9
  179. akshare/stock_feature/stock_jgdy_em.py +41 -38
  180. akshare/stock_feature/stock_lh_yybpm.py +36 -37
  181. akshare/stock_feature/stock_lhb_em.py +135 -71
  182. akshare/stock_feature/stock_lhb_sina.py +93 -46
  183. akshare/stock_feature/stock_margin_em.py +102 -0
  184. akshare/stock_feature/{stock_sse_margin.py → stock_margin_sse.py} +21 -15
  185. akshare/stock_feature/{stock_szse_margin.py → stock_margin_szse.py} +23 -19
  186. akshare/stock_feature/stock_market_legu.py +13 -8
  187. akshare/stock_feature/stock_pankou_em.py +72 -34
  188. akshare/stock_feature/stock_report_em.py +244 -54
  189. akshare/stock_feature/stock_research_report_em.py +48 -19
  190. akshare/stock_feature/stock_sns_sseinfo.py +15 -12
  191. akshare/stock_feature/stock_sy_em.py +86 -33
  192. akshare/stock_feature/stock_technology_ths.py +152 -120
  193. akshare/stock_feature/stock_tfp_em.py +35 -13
  194. akshare/stock_feature/stock_three_report_em.py +119 -77
  195. akshare/stock_feature/stock_ttm_lyr.py +4 -7
  196. akshare/stock_feature/stock_value_em.py +83 -0
  197. akshare/stock_feature/stock_wencai.py +21 -9
  198. akshare/stock_feature/stock_yjyg_em.py +63 -28
  199. akshare/stock_feature/stock_zf_pg.py +61 -38
  200. akshare/stock_feature/stock_zh_valuation_baidu.py +3 -2
  201. akshare/stock_feature/stock_ztb_em.py +62 -40
  202. akshare/stock_fundamental/stock_finance.py +150 -58
  203. akshare/stock_fundamental/stock_finance_ths.py +116 -31
  204. akshare/stock_fundamental/stock_mda_ym.py +5 -3
  205. akshare/stock_fundamental/stock_notice.py +29 -15
  206. akshare/stock_fundamental/stock_profit_forecast_em.py +31 -13
  207. akshare/stock_fundamental/stock_profit_forecast_ths.py +19 -10
  208. akshare/stock_fundamental/stock_register_em.py +448 -0
  209. akshare/stock_fundamental/stock_restricted_em.py +79 -32
  210. akshare/stock_fundamental/stock_zygc.py +10 -8
  211. akshare/stock_fundamental/stock_zyjs_ths.py +5 -3
  212. akshare/tool/trade_date_hist.py +4 -3
  213. akshare/utils/cons.py +10 -0
  214. akshare/utils/context.py +43 -0
  215. akshare/utils/demjson.py +2 -2
  216. akshare/utils/func.py +26 -0
  217. akshare/utils/tqdm.py +13 -3
  218. {akshare-1.12.95.dist-info → akshare-1.15.72.dist-info}/METADATA +52 -69
  219. akshare-1.15.72.dist-info/RECORD +385 -0
  220. {akshare-1.12.95.dist-info → akshare-1.15.72.dist-info}/WHEEL +1 -1
  221. tests/test_func.py +3 -5
  222. akshare/bond/bond_futures.py +0 -50
  223. akshare/bond/bond_investing.py +0 -139
  224. akshare/crypto/crypto_hist_investing.py +0 -249
  225. akshare/fortune/fortune_it_juzi.py +0 -123
  226. akshare/futures/futures_international.py +0 -170
  227. akshare/futures/futures_news_baidu.py +0 -54
  228. akshare/futures/inventory_data.py +0 -100
  229. akshare/futures_derivative/futures_index_price_nh.py +0 -61
  230. akshare/futures_derivative/futures_index_return_nh.py +0 -47
  231. akshare/futures_derivative/futures_index_volatility_nh.py +0 -51
  232. akshare/futures_derivative/futures_other_index_nh.py +0 -145
  233. akshare/index/index_fear_greed_funddb.py +0 -71
  234. akshare/index/index_investing.py +0 -232
  235. akshare/sport/sport_olympic_winter.py +0 -39
  236. akshare/stock_feature/stock_board_concept_ths.py +0 -422
  237. akshare/stock_fundamental/stock_register.py +0 -292
  238. akshare-1.12.95.dist-info/RECORD +0 -374
  239. {akshare-1.12.95.dist-info → akshare-1.15.72.dist-info}/LICENSE +0 -0
  240. {akshare-1.12.95.dist-info → akshare-1.15.72.dist-info}/top_level.txt +0 -0
@@ -92,6 +92,293 @@ def index_option_300etf_min_qvix() -> pd.DataFrame:
92
92
  return temp_df
93
93
 
94
94
 
95
+ def index_option_500etf_qvix() -> pd.DataFrame:
96
+ """
97
+ 500 ETF 期权波动率指数 QVIX
98
+ http://1.optbbs.com/s/vix.shtml?500ETF
99
+ :return: 500 ETF 期权波动率指数 QVIX
100
+ :rtype: pandas.DataFrame
101
+ """
102
+ url = "http://1.optbbs.com/d/csv/d/k.csv"
103
+ temp_df = pd.read_csv(url).iloc[:, [0, 67, 68, 69, 70]]
104
+ temp_df.columns = [
105
+ "date",
106
+ "open",
107
+ "high",
108
+ "low",
109
+ "close",
110
+ ]
111
+ temp_df["date"] = pd.to_datetime(temp_df["date"], errors="coerce").dt.date
112
+ temp_df["open"] = pd.to_numeric(temp_df["open"], errors="coerce")
113
+ temp_df["high"] = pd.to_numeric(temp_df["high"], errors="coerce")
114
+ temp_df["low"] = pd.to_numeric(temp_df["low"], errors="coerce")
115
+ temp_df["close"] = pd.to_numeric(temp_df["close"], errors="coerce")
116
+ return temp_df
117
+
118
+
119
+ def index_option_500etf_min_qvix() -> pd.DataFrame:
120
+ """
121
+ 500 ETF 期权波动率指数 QVIX-分时
122
+ http://1.optbbs.com/s/vix.shtml?500ETF
123
+ :return: 500 ETF 期权波动率指数 QVIX-分时
124
+ :rtype: pandas.DataFrame
125
+ """
126
+ url = "http://1.optbbs.com/d/csv/d/vix500.csv"
127
+ temp_df = pd.read_csv(url).iloc[:, :2]
128
+ temp_df.columns = [
129
+ "time",
130
+ "qvix",
131
+ ]
132
+ temp_df["qvix"] = pd.to_numeric(temp_df["qvix"], errors="coerce")
133
+ return temp_df
134
+
135
+
136
+ def index_option_cyb_qvix() -> pd.DataFrame:
137
+ """
138
+ 创业板 期权波动率指数 QVIX
139
+ http://1.optbbs.com/s/vix.shtml?CYB
140
+ :return: 创业板 期权波动率指数 QVIX
141
+ :rtype: pandas.DataFrame
142
+ """
143
+ url = "http://1.optbbs.com/d/csv/d/k.csv"
144
+ temp_df = pd.read_csv(url).iloc[:, [0, 71, 72, 73, 74]]
145
+ temp_df.columns = [
146
+ "date",
147
+ "open",
148
+ "high",
149
+ "low",
150
+ "close",
151
+ ]
152
+ temp_df["date"] = pd.to_datetime(temp_df["date"], errors="coerce").dt.date
153
+ temp_df["open"] = pd.to_numeric(temp_df["open"], errors="coerce")
154
+ temp_df["high"] = pd.to_numeric(temp_df["high"], errors="coerce")
155
+ temp_df["low"] = pd.to_numeric(temp_df["low"], errors="coerce")
156
+ temp_df["close"] = pd.to_numeric(temp_df["close"], errors="coerce")
157
+ return temp_df
158
+
159
+
160
+ def index_option_cyb_min_qvix() -> pd.DataFrame:
161
+ """
162
+ 创业板 期权波动率指数 QVIX-分时
163
+ http://1.optbbs.com/s/vix.shtml?CYB
164
+ :return: 创业板 期权波动率指数 QVIX-分时
165
+ :rtype: pandas.DataFrame
166
+ """
167
+ url = "http://1.optbbs.com/d/csv/d/vixcyb.csv"
168
+ temp_df = pd.read_csv(url).iloc[:, :2]
169
+ temp_df.columns = [
170
+ "time",
171
+ "qvix",
172
+ ]
173
+ temp_df["qvix"] = pd.to_numeric(temp_df["qvix"], errors="coerce")
174
+ return temp_df
175
+
176
+
177
+ def index_option_kcb_qvix() -> pd.DataFrame:
178
+ """
179
+ 科创板 期权波动率指数 QVIX
180
+ http://1.optbbs.com/s/vix.shtml?KCB
181
+ :return: 科创板 期权波动率指数 QVIX
182
+ :rtype: pandas.DataFrame
183
+ """
184
+ url = "http://1.optbbs.com/d/csv/d/k.csv"
185
+ temp_df = pd.read_csv(url).iloc[:, [0, 83, 84, 85, 86]]
186
+ temp_df.columns = [
187
+ "date",
188
+ "open",
189
+ "high",
190
+ "low",
191
+ "close",
192
+ ]
193
+ temp_df["date"] = pd.to_datetime(temp_df["date"], errors="coerce").dt.date
194
+ temp_df["open"] = pd.to_numeric(temp_df["open"], errors="coerce")
195
+ temp_df["high"] = pd.to_numeric(temp_df["high"], errors="coerce")
196
+ temp_df["low"] = pd.to_numeric(temp_df["low"], errors="coerce")
197
+ temp_df["close"] = pd.to_numeric(temp_df["close"], errors="coerce")
198
+ return temp_df
199
+
200
+
201
+ def index_option_kcb_min_qvix() -> pd.DataFrame:
202
+ """
203
+ 科创板 期权波动率指数 QVIX-分时
204
+ http://1.optbbs.com/s/vix.shtml?KCB
205
+ :return: 科创板 期权波动率指数 QVIX-分时
206
+ :rtype: pandas.DataFrame
207
+ """
208
+ url = "http://1.optbbs.com/d/csv/d/vixkcb.csv"
209
+ temp_df = pd.read_csv(url).iloc[:, :2]
210
+ temp_df.columns = [
211
+ "time",
212
+ "qvix",
213
+ ]
214
+ temp_df["qvix"] = pd.to_numeric(temp_df["qvix"], errors="coerce")
215
+ return temp_df
216
+
217
+
218
+ def index_option_100etf_qvix() -> pd.DataFrame:
219
+ """
220
+ 深证100ETF 期权波动率指数 QVIX
221
+ http://1.optbbs.com/s/vix.shtml?100ETF
222
+ :return: 深证100ETF 期权波动率指数 QVIX
223
+ :rtype: pandas.DataFrame
224
+ """
225
+ url = "http://1.optbbs.com/d/csv/d/k.csv"
226
+ temp_df = pd.read_csv(url).iloc[:, [0, 75, 76, 77, 78]]
227
+ temp_df.columns = [
228
+ "date",
229
+ "open",
230
+ "high",
231
+ "low",
232
+ "close",
233
+ ]
234
+ temp_df["date"] = pd.to_datetime(temp_df["date"], errors="coerce").dt.date
235
+ temp_df["open"] = pd.to_numeric(temp_df["open"], errors="coerce")
236
+ temp_df["high"] = pd.to_numeric(temp_df["high"], errors="coerce")
237
+ temp_df["low"] = pd.to_numeric(temp_df["low"], errors="coerce")
238
+ temp_df["close"] = pd.to_numeric(temp_df["close"], errors="coerce")
239
+ return temp_df
240
+
241
+
242
+ def index_option_100etf_min_qvix() -> pd.DataFrame:
243
+ """
244
+ 深证100ETF 期权波动率指数 QVIX-分时
245
+ http://1.optbbs.com/s/vix.shtml?100ETF
246
+ :return: 深证100ETF 期权波动率指数 QVIX-分时
247
+ :rtype: pandas.DataFrame
248
+ """
249
+ url = "http://1.optbbs.com/d/csv/d/vix100.csv"
250
+ temp_df = pd.read_csv(url).iloc[:, :2]
251
+ temp_df.columns = [
252
+ "time",
253
+ "qvix",
254
+ ]
255
+ temp_df["qvix"] = pd.to_numeric(temp_df["qvix"], errors="coerce")
256
+ return temp_df
257
+
258
+
259
+ def index_option_300index_qvix() -> pd.DataFrame:
260
+ """
261
+ 中证300股指 期权波动率指数 QVIX
262
+ http://1.optbbs.com/s/vix.shtml?Index
263
+ :return: 中证300股指 期权波动率指数 QVIX
264
+ :rtype: pandas.DataFrame
265
+ """
266
+ url = "http://1.optbbs.com/d/csv/d/k.csv"
267
+ temp_df = pd.read_csv(url).iloc[:, [0, 17, 18, 19, 20]]
268
+ temp_df.columns = [
269
+ "date",
270
+ "open",
271
+ "high",
272
+ "low",
273
+ "close",
274
+ ]
275
+ temp_df["date"] = pd.to_datetime(temp_df["date"], errors="coerce").dt.date
276
+ temp_df["open"] = pd.to_numeric(temp_df["open"], errors="coerce")
277
+ temp_df["high"] = pd.to_numeric(temp_df["high"], errors="coerce")
278
+ temp_df["low"] = pd.to_numeric(temp_df["low"], errors="coerce")
279
+ temp_df["close"] = pd.to_numeric(temp_df["close"], errors="coerce")
280
+ return temp_df
281
+
282
+
283
+ def index_option_300index_min_qvix() -> pd.DataFrame:
284
+ """
285
+ 中证300股指 期权波动率指数 QVIX-分时
286
+ http://1.optbbs.com/s/vix.shtml?Index
287
+ :return: 中证300股指 期权波动率指数 QVIX-分时
288
+ :rtype: pandas.DataFrame
289
+ """
290
+ url = "http://1.optbbs.com/d/csv/d/vixindex.csv"
291
+ temp_df = pd.read_csv(url).iloc[:, :2]
292
+ temp_df.columns = [
293
+ "time",
294
+ "qvix",
295
+ ]
296
+ temp_df["qvix"] = pd.to_numeric(temp_df["qvix"], errors="coerce")
297
+ return temp_df
298
+
299
+
300
+ def index_option_1000index_qvix() -> pd.DataFrame:
301
+ """
302
+ 中证1000股指 期权波动率指数 QVIX
303
+ http://1.optbbs.com/s/vix.shtml?Index1000
304
+ :return: 中证1000股指 期权波动率指数 QVIX
305
+ :rtype: pandas.DataFrame
306
+ """
307
+ url = "http://1.optbbs.com/d/csv/d/k.csv"
308
+ temp_df = pd.read_csv(url).iloc[:, [0, 25, 26, 27, 28]]
309
+ temp_df.columns = [
310
+ "date",
311
+ "open",
312
+ "high",
313
+ "low",
314
+ "close",
315
+ ]
316
+ temp_df["date"] = pd.to_datetime(temp_df["date"], errors="coerce").dt.date
317
+ temp_df["open"] = pd.to_numeric(temp_df["open"], errors="coerce")
318
+ temp_df["high"] = pd.to_numeric(temp_df["high"], errors="coerce")
319
+ temp_df["low"] = pd.to_numeric(temp_df["low"], errors="coerce")
320
+ temp_df["close"] = pd.to_numeric(temp_df["close"], errors="coerce")
321
+ return temp_df
322
+
323
+
324
+ def index_option_1000index_min_qvix() -> pd.DataFrame:
325
+ """
326
+ 中证1000股指 期权波动率指数 QVIX-分时
327
+ http://1.optbbs.com/s/vix.shtml?Index1000
328
+ :return: 中证1000股指 期权波动率指数 QVIX-分时
329
+ :rtype: pandas.DataFrame
330
+ """
331
+ url = "http://1.optbbs.com/d/csv/d/vixindex1000.csv"
332
+ temp_df = pd.read_csv(url).iloc[:, :2]
333
+ temp_df.columns = [
334
+ "time",
335
+ "qvix",
336
+ ]
337
+ temp_df["qvix"] = pd.to_numeric(temp_df["qvix"], errors="coerce")
338
+ return temp_df
339
+
340
+
341
+ def index_option_50index_qvix() -> pd.DataFrame:
342
+ """
343
+ 上证50股指 期权波动率指数 QVIX
344
+ http://1.optbbs.com/s/vix.shtml?50index
345
+ :return: 上证50股指 期权波动率指数 QVIX
346
+ :rtype: pandas.DataFrame
347
+ """
348
+ url = "http://1.optbbs.com/d/csv/d/k.csv"
349
+ temp_df = pd.read_csv(url).iloc[:, [0, 79, 80, 81, 82]]
350
+ temp_df.columns = [
351
+ "date",
352
+ "open",
353
+ "high",
354
+ "low",
355
+ "close",
356
+ ]
357
+ temp_df["date"] = pd.to_datetime(temp_df["date"], errors="coerce").dt.date
358
+ temp_df["open"] = pd.to_numeric(temp_df["open"], errors="coerce")
359
+ temp_df["high"] = pd.to_numeric(temp_df["high"], errors="coerce")
360
+ temp_df["low"] = pd.to_numeric(temp_df["low"], errors="coerce")
361
+ temp_df["close"] = pd.to_numeric(temp_df["close"], errors="coerce")
362
+ return temp_df
363
+
364
+
365
+ def index_option_50index_min_qvix() -> pd.DataFrame:
366
+ """
367
+ 上证50股指 期权波动率指数 QVIX-分时
368
+ http://1.optbbs.com/s/vix.shtml?50index
369
+ :return: 上证50股指 期权波动率指数 QVIX-分时
370
+ :rtype: pandas.DataFrame
371
+ """
372
+ url = "http://1.optbbs.com/d/csv/d/vix50index.csv"
373
+ temp_df = pd.read_csv(url).iloc[:, :2]
374
+ temp_df.columns = [
375
+ "time",
376
+ "qvix",
377
+ ]
378
+ temp_df["qvix"] = pd.to_numeric(temp_df["qvix"], errors="coerce")
379
+ return temp_df
380
+
381
+
95
382
  if __name__ == "__main__":
96
383
  index_option_50etf_qvix_df = index_option_50etf_qvix()
97
384
  print(index_option_50etf_qvix_df)
@@ -104,3 +391,45 @@ if __name__ == "__main__":
104
391
 
105
392
  index_option_300etf_min_qvix_df = index_option_300etf_min_qvix()
106
393
  print(index_option_300etf_min_qvix_df)
394
+
395
+ index_option_500etf_qvix_df = index_option_500etf_qvix()
396
+ print(index_option_500etf_qvix_df)
397
+
398
+ index_option_500etf_min_qvix_df = index_option_500etf_min_qvix()
399
+ print(index_option_500etf_min_qvix_df)
400
+
401
+ index_option_cyb_qvix_df = index_option_cyb_qvix()
402
+ print(index_option_cyb_qvix_df)
403
+
404
+ index_option_cyb_min_qvix_df = index_option_cyb_min_qvix()
405
+ print(index_option_cyb_min_qvix_df)
406
+
407
+ index_option_kcb_qvix_df = index_option_kcb_qvix()
408
+ print(index_option_kcb_qvix_df)
409
+
410
+ index_option_kcb_min_qvix_df = index_option_kcb_min_qvix()
411
+ print(index_option_kcb_min_qvix_df)
412
+
413
+ index_option_100etf_qvix_df = index_option_100etf_qvix()
414
+ print(index_option_100etf_qvix_df)
415
+
416
+ index_option_100etf_min_qvix_df = index_option_100etf_min_qvix()
417
+ print(index_option_100etf_min_qvix_df)
418
+
419
+ index_option_300index_qvix_df = index_option_300index_qvix()
420
+ print(index_option_300index_qvix_df)
421
+
422
+ index_option_300index_min_qvix_df = index_option_300index_min_qvix()
423
+ print(index_option_300index_min_qvix_df)
424
+
425
+ index_option_1000index_qvix_df = index_option_1000index_qvix()
426
+ print(index_option_1000index_qvix_df)
427
+
428
+ index_option_1000index_min_qvix_df = index_option_1000index_min_qvix()
429
+ print(index_option_1000index_min_qvix_df)
430
+
431
+ index_option_50index_qvix_df = index_option_50index_qvix()
432
+ print(index_option_50index_qvix_df)
433
+
434
+ index_option_50index_min_qvix_df = index_option_50index_min_qvix()
435
+ print(index_option_50index_min_qvix_df)
@@ -0,0 +1,134 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding:utf-8 -*-
3
+ """
4
+ Date: 2024/4/11 17:40
5
+ Desc: 申万宏源研究-申万指数-指数发布-基金指数-实时行情
6
+ https://www.swsresearch.com/institute_sw/allIndex/releasedIndex
7
+ """
8
+
9
+ import pandas as pd
10
+ import requests
11
+
12
+ from akshare.utils.cons import headers
13
+
14
+
15
+ def index_realtime_fund_sw(symbol: str = "基础一级") -> pd.DataFrame:
16
+ """
17
+ 申万宏源研究-申万指数-指数发布-基金指数-实时行情
18
+ https://www.swsresearch.com/institute_sw/allIndex/releasedIndex
19
+ :param symbol: choice of {"基础一级", "基础二级", "基础三级", "特色指数"}
20
+ :type symbol: str
21
+ :return: 基金指数-实时行情
22
+ :rtype: pandas.DataFrame
23
+ """
24
+ url = "https://www.swsresearch.com/insWechatSw/fundIndex/pageList"
25
+ payload = {
26
+ "pageNo": 1,
27
+ "pageSize": 50,
28
+ "indexTypeName": symbol,
29
+ "sortField": "",
30
+ "rule": "",
31
+ "indexType": 1,
32
+ }
33
+ r = requests.post(url, json=payload, headers=headers)
34
+ data_json = r.json()
35
+ temp_df = pd.DataFrame(data_json["data"]["list"])
36
+ temp_df.rename(
37
+ columns={
38
+ "swIndexCode": "指数代码",
39
+ "swIndexName": "指数名称",
40
+ "lastCloseIndex": "昨收盘",
41
+ "lastMarkup": "日涨跌幅",
42
+ "yearMarkup": "年涨跌幅",
43
+ },
44
+ inplace=True,
45
+ )
46
+ temp_df = temp_df[
47
+ [
48
+ "指数代码",
49
+ "指数名称",
50
+ "昨收盘",
51
+ "日涨跌幅",
52
+ "年涨跌幅",
53
+ ]
54
+ ]
55
+ temp_df["昨收盘"] = pd.to_numeric(temp_df["昨收盘"], errors="coerce")
56
+ temp_df["日涨跌幅"] = pd.to_numeric(temp_df["日涨跌幅"], errors="coerce")
57
+ temp_df["年涨跌幅"] = pd.to_numeric(temp_df["年涨跌幅"], errors="coerce")
58
+ return temp_df
59
+
60
+
61
+ def index_hist_fund_sw(symbol: str = "807200", period: str = "day") -> pd.DataFrame:
62
+ """
63
+ 申万宏源研究-申万指数-指数发布-基金指数-历史行情
64
+ https://www.swsresearch.com/institute_sw/allIndex/releasedIndex/fundDetail?code=807100
65
+ :param symbol: 基金指数代码
66
+ :type symbol: str
67
+ :param period: 周期
68
+ :type period: str
69
+ :return: 历史行情
70
+ :rtype: pandas.DataFrame
71
+ """
72
+ period_map = {
73
+ "day": "DAY",
74
+ "week": "WEEK",
75
+ "month": "MONTH",
76
+ }
77
+ url = "https://www.swsresearch.com/insWechatSw/fundIndex/getFundKChartData"
78
+ payload = {"swIndexCode": symbol, "type": period_map[period]}
79
+ r = requests.post(url, json=payload, headers=headers)
80
+ data_json = r.json()
81
+ temp_df = pd.DataFrame(data_json["data"])
82
+ temp_df.rename(
83
+ columns={
84
+ "bargaindate": "日期",
85
+ "swIndexName": "指数名称",
86
+ "swindexcode": "指数代码",
87
+ "closeindex": "收盘指数",
88
+ "maxindex": "最高指数",
89
+ "minindex": "最低指数",
90
+ "openindex": "开盘指数",
91
+ "markup": "涨跌幅",
92
+ },
93
+ inplace=True,
94
+ )
95
+ temp_df = temp_df[
96
+ [
97
+ "日期",
98
+ "收盘指数",
99
+ "开盘指数",
100
+ "最高指数",
101
+ "最低指数",
102
+ "涨跌幅",
103
+ ]
104
+ ]
105
+ temp_df["日期"] = pd.to_datetime(temp_df["日期"], errors="coerce").dt.date
106
+ temp_df["收盘指数"] = pd.to_numeric(temp_df["收盘指数"], errors="coerce")
107
+ temp_df["最高指数"] = pd.to_numeric(temp_df["最高指数"], errors="coerce")
108
+ temp_df["最低指数"] = pd.to_numeric(temp_df["最低指数"], errors="coerce")
109
+ temp_df["开盘指数"] = pd.to_numeric(temp_df["开盘指数"], errors="coerce")
110
+ temp_df["涨跌幅"] = pd.to_numeric(temp_df["涨跌幅"], errors="coerce")
111
+ return temp_df
112
+
113
+
114
+ if __name__ == "__main__":
115
+ index_realtime_fund_sw_df = index_realtime_fund_sw(symbol="基础一级")
116
+ print(index_realtime_fund_sw_df)
117
+
118
+ index_realtime_fund_sw_df = index_realtime_fund_sw(symbol="基础二级")
119
+ print(index_realtime_fund_sw_df)
120
+
121
+ index_realtime_fund_sw_df = index_realtime_fund_sw(symbol="基础三级")
122
+ print(index_realtime_fund_sw_df)
123
+
124
+ index_realtime_fund_sw_df = index_realtime_fund_sw(symbol="特色指数")
125
+ print(index_realtime_fund_sw_df)
126
+
127
+ index_hist_fund_sw_df = index_hist_fund_sw(symbol="807200", period="day")
128
+ print(index_hist_fund_sw_df)
129
+
130
+ index_hist_fund_sw_df = index_hist_fund_sw(symbol="807200", period="week")
131
+ print(index_hist_fund_sw_df)
132
+
133
+ index_hist_fund_sw_df = index_hist_fund_sw(symbol="807200", period="month")
134
+ print(index_hist_fund_sw_df)