akshare 1.13.46__py3-none-any.whl → 1.17.99__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.
Files changed (388) hide show
  1. akshare/__init__.py +757 -161
  2. akshare/air/air_hebei.py +79 -53
  3. akshare/air/air_zhenqi.py +3 -7
  4. akshare/air/cons.py +1 -0
  5. akshare/air/crypto.js +1 -1
  6. akshare/air/outcrypto.js +1 -1
  7. akshare/air/sunrise_tad.py +32 -17
  8. akshare/article/cons.py +1 -0
  9. akshare/article/epu_index.py +4 -3
  10. akshare/article/ff_factor.py +19 -8
  11. akshare/article/fred_md.py +4 -1
  12. akshare/article/risk_rv.py +3 -8
  13. akshare/bank/bank_cbirc_2020.py +11 -11
  14. akshare/bank/cons.py +7 -6
  15. akshare/bond/bond_buy_back_em.py +228 -0
  16. akshare/bond/bond_cb_sina.py +1 -0
  17. akshare/bond/bond_cb_ths.py +17 -9
  18. akshare/bond/bond_cbond.py +19 -14
  19. akshare/bond/bond_china.py +38 -39
  20. akshare/bond/bond_china_money.py +75 -48
  21. akshare/bond/bond_convert.py +10 -9
  22. akshare/bond/bond_em.py +37 -17
  23. akshare/bond/bond_info_cm.py +28 -8
  24. akshare/bond/bond_issue_cninfo.py +73 -30
  25. akshare/bond/bond_summary.py +38 -37
  26. akshare/bond/bond_zh_cov.py +31 -40
  27. akshare/bond/bond_zh_sina.py +61 -51
  28. akshare/bond/cons.py +14 -11
  29. akshare/cal/__init__.py +0 -0
  30. akshare/cal/rv.py +170 -0
  31. akshare/cost/cost_living.py +7 -5
  32. akshare/crypto/__init__.py +1 -1
  33. akshare/crypto/crypto_bitcoin_cme.py +9 -7
  34. akshare/crypto/crypto_hold.py +4 -2
  35. akshare/currency/currency.py +1 -0
  36. akshare/currency/currency_china_bank_sina.py +11 -6
  37. akshare/currency/currency_safe.py +7 -6
  38. akshare/data/__init__.py +1 -1
  39. akshare/data/cninfo.js +1 -1
  40. akshare/datasets.py +10 -21
  41. akshare/economic/cons.py +10 -3
  42. akshare/economic/macro_australia.py +74 -69
  43. akshare/economic/macro_bank.py +95 -653
  44. akshare/economic/macro_canada.py +92 -81
  45. akshare/economic/macro_china.py +163 -117
  46. akshare/economic/macro_china_hk.py +0 -1
  47. akshare/economic/macro_china_nbs.py +24 -7
  48. akshare/economic/macro_euro.py +103 -56
  49. akshare/economic/macro_finance_ths.py +135 -0
  50. akshare/economic/macro_germany.py +1 -1
  51. akshare/economic/macro_info_ws.py +100 -0
  52. akshare/economic/macro_japan.py +0 -1
  53. akshare/economic/macro_other.py +1 -6
  54. akshare/economic/macro_swiss.py +2 -3
  55. akshare/economic/macro_uk.py +1 -1
  56. akshare/economic/macro_usa.py +7 -9
  57. akshare/economic/marco_cnbs.py +11 -6
  58. akshare/energy/energy_carbon.py +94 -126
  59. akshare/energy/energy_oil_em.py +1 -2
  60. akshare/event/cons.py +1 -0
  61. akshare/event/migration.py +3 -2
  62. akshare/exceptions.py +43 -0
  63. akshare/file_fold/calendar.json +245 -2
  64. akshare/forex/__init__.py +0 -0
  65. akshare/forex/cons.py +192 -0
  66. akshare/forex/forex_em.py +149 -0
  67. akshare/fortune/fortune_500.py +15 -48
  68. akshare/fortune/fortune_bloomberg.py +6 -3
  69. akshare/fortune/fortune_forbes_500.py +3 -6
  70. akshare/fortune/fortune_hurun.py +2 -1
  71. akshare/fortune/fortune_xincaifu_500.py +17 -14
  72. akshare/fund/fund_amac.py +38 -15
  73. akshare/fund/fund_announcement_em.py +145 -0
  74. akshare/fund/fund_aum_em.py +49 -35
  75. akshare/fund/fund_em.py +251 -220
  76. akshare/fund/fund_etf_em.py +44 -35
  77. akshare/fund/fund_etf_sina.py +76 -27
  78. akshare/fund/fund_etf_ths.py +95 -0
  79. akshare/fund/fund_fee_em.py +172 -0
  80. akshare/fund/fund_fhsp_em.py +42 -32
  81. akshare/fund/fund_init_em.py +8 -5
  82. akshare/fund/fund_lof_em.py +12 -19
  83. akshare/fund/fund_manager.py +25 -11
  84. akshare/fund/fund_overview_em.py +42 -0
  85. akshare/fund/fund_portfolio_em.py +78 -66
  86. akshare/fund/fund_position_lg.py +19 -8
  87. akshare/fund/fund_rank_em.py +90 -84
  88. akshare/fund/fund_rating.py +33 -12
  89. akshare/fund/fund_report_cninfo.py +63 -48
  90. akshare/fund/fund_scale_em.py +24 -13
  91. akshare/fund/fund_scale_sina.py +20 -10
  92. akshare/fund/fund_xq.py +3 -2
  93. akshare/futures/cons.py +141 -46
  94. akshare/futures/cot.py +89 -88
  95. akshare/futures/futures_basis.py +99 -33
  96. akshare/futures/futures_comex_em.py +1 -0
  97. akshare/futures/futures_comm_ctp.py +13 -2
  98. akshare/futures/futures_contract_detail.py +59 -9
  99. akshare/futures/futures_daily_bar.py +75 -62
  100. akshare/futures/futures_foreign.py +14 -8
  101. akshare/futures/futures_hf_em.py +215 -61
  102. akshare/futures/futures_hist_em.py +191 -0
  103. akshare/futures/futures_hq_sina.py +79 -61
  104. akshare/futures/futures_index_ccidx.py +24 -82
  105. akshare/futures/futures_inventory_99.py +70 -272
  106. akshare/futures/futures_inventory_em.py +14 -11
  107. akshare/futures/futures_news_shmet.py +2 -2
  108. akshare/futures/futures_roll_yield.py +11 -24
  109. akshare/futures/futures_rule.py +7 -3
  110. akshare/futures/futures_rule_em.py +38 -0
  111. akshare/futures/futures_settlement_price_sgx.py +21 -6
  112. akshare/futures/futures_stock_js.py +1 -2
  113. akshare/futures/futures_to_spot.py +43 -39
  114. akshare/futures/futures_warehouse_receipt.py +53 -48
  115. akshare/futures/futures_zh_sina.py +4 -4
  116. akshare/futures/receipt.py +298 -165
  117. akshare/futures/requests_fun.py +16 -3
  118. akshare/futures/symbol_var.py +32 -13
  119. akshare/futures_derivative/cons.py +100 -103
  120. akshare/futures_derivative/futures_contract_info_cffex.py +55 -39
  121. akshare/futures_derivative/futures_contract_info_czce.py +2 -0
  122. akshare/futures_derivative/futures_contract_info_dce.py +43 -17
  123. akshare/futures_derivative/futures_contract_info_gfex.py +43 -31
  124. akshare/futures_derivative/futures_contract_info_ine.py +43 -34
  125. akshare/futures_derivative/futures_contract_info_shfe.py +7 -8
  126. akshare/futures_derivative/futures_cot_sina.py +28 -19
  127. akshare/futures_derivative/futures_index_sina.py +25 -13
  128. akshare/fx/cons.py +12 -7
  129. akshare/fx/currency_investing.py +19 -285
  130. akshare/fx/fx_c_swap_cm.py +62 -0
  131. akshare/fx/fx_quote.py +3 -2
  132. akshare/fx/fx_quote_baidu.py +2 -1
  133. akshare/hf/__init__.py +1 -1
  134. akshare/hf/hf_sp500.py +8 -7
  135. akshare/index/cons.py +132 -28
  136. akshare/index/index_cflp.py +29 -26
  137. akshare/index/index_cni.py +89 -91
  138. akshare/index/index_cons.py +26 -10
  139. akshare/index/index_csindex.py +68 -0
  140. akshare/index/index_cx.py +263 -62
  141. akshare/index/index_drewry.py +17 -16
  142. akshare/index/index_eri.py +1 -0
  143. akshare/index/index_global_em.py +167 -0
  144. akshare/index/index_global_sina.py +82 -0
  145. akshare/index/index_kq_fz.py +17 -14
  146. akshare/index/index_kq_ss.py +1 -0
  147. akshare/index/index_option_qvix.py +351 -16
  148. akshare/index/index_research_sw.py +38 -38
  149. akshare/index/index_spot.py +9 -5
  150. akshare/index/index_stock_hk.py +6 -10
  151. akshare/index/index_stock_us_sina.py +1 -1
  152. akshare/index/index_stock_zh.py +193 -101
  153. akshare/index/index_stock_zh_csindex.py +15 -369
  154. akshare/index/index_sugar.py +18 -4
  155. akshare/index/index_sw.py +62 -34
  156. akshare/index/index_yw.py +53 -75
  157. akshare/index/index_zh_em.py +15 -82
  158. akshare/interest_rate/interbank_rate_em.py +14 -10
  159. akshare/movie/artist_yien.py +32 -5
  160. akshare/movie/jm.js +0 -1
  161. akshare/movie/movie_yien.py +92 -18
  162. akshare/movie/video_yien.py +28 -5
  163. akshare/news/__init__.py +1 -1
  164. akshare/news/news_baidu.py +395 -220
  165. akshare/news/news_cctv.py +38 -38
  166. akshare/news/news_stock.py +49 -13
  167. akshare/nlp/nlp_interface.py +7 -8
  168. akshare/option/cons.py +12 -12
  169. akshare/option/option_comm_qihuo.py +86 -0
  170. akshare/option/option_commodity.py +355 -211
  171. akshare/option/option_commodity_sina.py +22 -26
  172. akshare/option/option_contract_info_ctp.py +63 -0
  173. akshare/option/option_current_sse.py +61 -0
  174. akshare/option/option_current_szse.py +84 -0
  175. akshare/option/option_czce.py +37 -9
  176. akshare/option/option_daily_stats_sse_szse.py +145 -0
  177. akshare/option/option_em.py +4 -8
  178. akshare/option/option_finance.py +60 -12
  179. akshare/option/option_finance_sina.py +28 -26
  180. akshare/option/option_lhb_em.py +62 -57
  181. akshare/option/option_margin.py +62 -0
  182. akshare/option/option_premium_analysis_em.py +58 -53
  183. akshare/option/option_risk_analysis_em.py +11 -8
  184. akshare/option/option_risk_indicator_sse.py +18 -16
  185. akshare/option/option_value_analysis_em.py +62 -55
  186. akshare/other/__init__.py +1 -1
  187. akshare/other/other_car_cpca.py +20 -20
  188. akshare/pro/__init__.py +0 -1
  189. akshare/pro/client.py +6 -4
  190. akshare/pro/cons.py +3 -2
  191. akshare/pro/data_pro.py +6 -5
  192. akshare/qdii/__init__.py +0 -0
  193. akshare/qdii/qdii_jsl.py +233 -0
  194. akshare/qhkc/__init__.py +1 -6
  195. akshare/qhkc/qhkc_api.py +64 -22
  196. akshare/qhkc_web/__init__.py +1 -6
  197. akshare/qhkc_web/qhkc_fund.py +10 -6
  198. akshare/qhkc_web/qhkc_index.py +28 -14
  199. akshare/qhkc_web/qhkc_tool.py +62 -59
  200. akshare/rate/__init__.py +1 -1
  201. akshare/rate/repo_rate.py +36 -32
  202. akshare/reits/__init__.py +1 -1
  203. akshare/reits/reits_basic.py +149 -13
  204. akshare/request.py +117 -0
  205. akshare/spot/__init__.py +1 -1
  206. akshare/spot/spot_hog_soozhu.py +232 -0
  207. akshare/spot/spot_price_qh.py +121 -0
  208. akshare/spot/spot_sge.py +70 -9
  209. akshare/stock/cons.py +60 -23
  210. akshare/stock/stock_allotment_cninfo.py +10 -9
  211. akshare/stock/stock_ask_bid_em.py +3 -78
  212. akshare/stock/stock_board_concept_em.py +160 -35
  213. akshare/stock/stock_board_industry_em.py +163 -70
  214. akshare/stock/stock_cg_equity_mortgage.py +15 -11
  215. akshare/stock/stock_cg_guarantee.py +41 -51
  216. akshare/stock/stock_cg_lawsuit.py +36 -35
  217. akshare/stock/stock_dividend_cninfo.py +36 -16
  218. akshare/stock/stock_dzjy_em.py +347 -260
  219. akshare/stock/stock_fund_em.py +73 -64
  220. akshare/stock/stock_fund_hold.py +1 -2
  221. akshare/stock/stock_gsrl_em.py +1 -0
  222. akshare/stock/stock_hk_comparison_em.py +175 -0
  223. akshare/stock/stock_hk_famous.py +107 -0
  224. akshare/stock/stock_hk_fhpx_ths.py +2 -1
  225. akshare/stock/stock_hk_hot_rank_em.py +1 -0
  226. akshare/stock/stock_hk_sina.py +91 -42
  227. akshare/stock/stock_hold_control_cninfo.py +100 -15
  228. akshare/stock/stock_hold_control_em.py +4 -5
  229. akshare/stock/stock_hold_num_cninfo.py +18 -12
  230. akshare/stock/stock_hot_rank_em.py +4 -1
  231. akshare/stock/stock_hot_search_baidu.py +32 -19
  232. akshare/stock/stock_hot_up_em.py +4 -1
  233. akshare/stock/stock_hsgt_em.py +155 -0
  234. akshare/stock/stock_industry.py +1 -0
  235. akshare/stock/stock_industry_cninfo.py +25 -20
  236. akshare/stock/stock_industry_pe_cninfo.py +45 -31
  237. akshare/stock/stock_industry_sw.py +5 -9
  238. akshare/stock/stock_info.py +31 -19
  239. akshare/stock/stock_info_em.py +17 -11
  240. akshare/stock/stock_intraday_em.py +9 -80
  241. akshare/stock/stock_intraday_sina.py +2 -2
  242. akshare/stock/stock_ipo_summary_cninfo.py +25 -10
  243. akshare/stock/stock_new_cninfo.py +32 -19
  244. akshare/stock/stock_news_cx.py +39 -0
  245. akshare/stock/stock_profile_cninfo.py +9 -8
  246. akshare/stock/stock_profile_em.py +302 -0
  247. akshare/stock/stock_rank_forecast.py +8 -6
  248. akshare/stock/stock_repurchase_em.py +7 -2
  249. akshare/stock/stock_share_changes_cninfo.py +18 -14
  250. akshare/stock/stock_share_hold.py +24 -20
  251. akshare/stock/stock_stop.py +6 -6
  252. akshare/stock/stock_summary.py +153 -417
  253. akshare/stock/stock_us_famous.py +19 -11
  254. akshare/stock/stock_us_js.py +3 -2
  255. akshare/stock/stock_us_pink.py +38 -27
  256. akshare/stock/stock_us_sina.py +15 -12
  257. akshare/stock/stock_weibo_nlp.py +18 -20
  258. akshare/stock/stock_xq.py +36 -9
  259. akshare/stock/stock_zh_a_sina.py +58 -80
  260. akshare/stock/stock_zh_a_special.py +240 -243
  261. akshare/stock/stock_zh_a_tick_tx.py +11 -3
  262. akshare/stock/stock_zh_ah_tx.py +23 -26
  263. akshare/stock/stock_zh_b_sina.py +32 -55
  264. akshare/stock/stock_zh_comparison_em.py +250 -0
  265. akshare/stock/stock_zh_kcb_report.py +11 -9
  266. akshare/stock/stock_zh_kcb_sina.py +67 -64
  267. akshare/stock_a/__init__.py +0 -0
  268. akshare/stock_a/stock_board_concept_name_em.py +170 -0
  269. akshare/stock_a/stock_individual_fund_flow_rank.py +258 -0
  270. akshare/stock_a/stock_zh_a_spot.py +212 -0
  271. akshare/stock_feature/cons.py +1 -0
  272. akshare/stock_feature/stock_a_below_net_asset_statistics.py +5 -2
  273. akshare/stock_feature/stock_a_high_low.py +5 -2
  274. akshare/stock_feature/stock_a_indicator.py +15 -57
  275. akshare/stock_feature/stock_a_pe_and_pb.py +39 -9
  276. akshare/stock_feature/stock_account_em.py +0 -1
  277. akshare/stock_feature/stock_all_pb.py +2 -1
  278. akshare/stock_feature/stock_analyst_em.py +36 -30
  279. akshare/stock_feature/stock_board_concept_ths.py +144 -252
  280. akshare/stock_feature/stock_board_industry_ths.py +137 -401
  281. akshare/stock_feature/stock_buffett_index_lg.py +10 -8
  282. akshare/stock_feature/stock_classify_sina.py +3 -6
  283. akshare/stock_feature/stock_comment_em.py +81 -144
  284. akshare/stock_feature/stock_concept_futu.py +183 -0
  285. akshare/stock_feature/stock_congestion_lg.py +2 -1
  286. akshare/stock_feature/stock_cyq_em.py +5 -11
  287. akshare/stock_feature/stock_disclosure_cninfo.py +20 -10
  288. akshare/stock_feature/stock_dxsyl_em.py +121 -74
  289. akshare/stock_feature/stock_ebs_lg.py +5 -4
  290. akshare/stock_feature/stock_esg_sina.py +33 -15
  291. akshare/stock_feature/stock_fhps_em.py +62 -26
  292. akshare/stock_feature/stock_fhps_ths.py +34 -7
  293. akshare/stock_feature/stock_fund_flow.py +38 -25
  294. akshare/stock_feature/stock_gddh_em.py +19 -11
  295. akshare/stock_feature/stock_gdfx_em.py +226 -113
  296. akshare/stock_feature/stock_gdhs.py +75 -50
  297. akshare/stock_feature/stock_gdzjc_em.py +21 -10
  298. akshare/stock_feature/stock_gpzy_em.py +78 -46
  299. akshare/stock_feature/stock_gxl_lg.py +3 -2
  300. akshare/stock_feature/stock_hist_em.py +158 -237
  301. akshare/stock_feature/stock_hist_tx.py +13 -10
  302. akshare/stock_feature/stock_hk_valuation_baidu.py +20 -8
  303. akshare/stock_feature/stock_hot_xq.py +4 -6
  304. akshare/stock_feature/stock_hsgt_em.py +269 -97
  305. akshare/stock_feature/stock_hsgt_exchange_rate.py +115 -87
  306. akshare/stock_feature/stock_hsgt_min_em.py +13 -16
  307. akshare/stock_feature/stock_info.py +8 -81
  308. akshare/stock_feature/stock_inner_trade_xq.py +38 -31
  309. akshare/stock_feature/stock_irm_cninfo.py +32 -9
  310. akshare/stock_feature/stock_jgdy_em.py +43 -40
  311. akshare/stock_feature/stock_lh_yybpm.py +36 -37
  312. akshare/stock_feature/stock_lhb_em.py +165 -35
  313. akshare/stock_feature/stock_lhb_sina.py +93 -46
  314. akshare/stock_feature/stock_margin_em.py +101 -0
  315. akshare/stock_feature/{stock_sse_margin.py → stock_margin_sse.py} +21 -17
  316. akshare/stock_feature/{stock_szse_margin.py → stock_margin_szse.py} +7 -7
  317. akshare/stock_feature/stock_market_legu.py +4 -2
  318. akshare/stock_feature/stock_pankou_em.py +71 -35
  319. akshare/stock_feature/stock_qsjy_em.py +13 -4
  320. akshare/stock_feature/stock_report_em.py +152 -8
  321. akshare/stock_feature/stock_research_report_em.py +55 -20
  322. akshare/stock_feature/stock_sns_sseinfo.py +15 -12
  323. akshare/stock_feature/stock_sy_em.py +20 -15
  324. akshare/stock_feature/stock_technology_ths.py +152 -120
  325. akshare/stock_feature/stock_tfp_em.py +37 -14
  326. akshare/stock_feature/stock_three_report_em.py +120 -78
  327. akshare/stock_feature/stock_ttm_lyr.py +18 -9
  328. akshare/stock_feature/stock_value_em.py +83 -0
  329. akshare/stock_feature/stock_yjbb_em.py +58 -32
  330. akshare/stock_feature/stock_yjyg_cninfo.py +6 -2
  331. akshare/stock_feature/stock_yjyg_em.py +1 -1
  332. akshare/stock_feature/stock_yzxdr_em.py +24 -22
  333. akshare/stock_feature/stock_zdhtmx_em.py +20 -6
  334. akshare/stock_feature/stock_zh_valuation_baidu.py +3 -2
  335. akshare/stock_feature/stock_zh_vote_baidu.py +4 -1
  336. akshare/stock_feature/stock_ztb_em.py +39 -24
  337. akshare/stock_fundamental/__init__.py +1 -1
  338. akshare/stock_fundamental/stock_basic_info_xq.py +119 -0
  339. akshare/stock_fundamental/{stock_finance_hk.py → stock_finance_hk_em.py} +23 -16
  340. akshare/stock_fundamental/{stock_finance.py → stock_finance_sina.py} +203 -59
  341. akshare/stock_fundamental/stock_finance_ths.py +524 -57
  342. akshare/stock_fundamental/stock_finance_us_em.py +268 -0
  343. akshare/stock_fundamental/stock_gbjg_em.py +80 -0
  344. akshare/stock_fundamental/stock_hold.py +26 -17
  345. akshare/stock_fundamental/stock_ipo_declare.py +1 -0
  346. akshare/stock_fundamental/stock_kcb_detail_sse.py +10 -10
  347. akshare/stock_fundamental/stock_kcb_sse.py +26 -25
  348. akshare/stock_fundamental/stock_notice.py +41 -18
  349. akshare/stock_fundamental/stock_profit_forecast_em.py +31 -13
  350. akshare/stock_fundamental/stock_profit_forecast_hk_etnet.py +64 -41
  351. akshare/stock_fundamental/stock_profit_forecast_ths.py +86 -35
  352. akshare/stock_fundamental/stock_recommend.py +20 -4
  353. akshare/stock_fundamental/stock_register_em.py +448 -0
  354. akshare/stock_fundamental/stock_zygc.py +5 -62
  355. akshare/tool/trade_date_hist.py +1 -1
  356. akshare/utils/context.py +43 -0
  357. akshare/utils/demjson.py +2009 -1338
  358. akshare/utils/func.py +49 -2
  359. akshare/utils/multi_decrypt.py +53 -0
  360. akshare/utils/token_process.py +6 -5
  361. akshare/utils/tqdm.py +13 -3
  362. {akshare-1.13.46.dist-info → akshare-1.17.99.dist-info}/METADATA +56 -86
  363. akshare-1.17.99.dist-info/RECORD +409 -0
  364. {akshare-1.13.46.dist-info → akshare-1.17.99.dist-info}/WHEEL +1 -1
  365. {akshare-1.13.46.dist-info → akshare-1.17.99.dist-info/licenses}/LICENSE +1 -1
  366. tests/test_func.py +3 -5
  367. akshare/bond/bond_futures.py +0 -50
  368. akshare/bond/bond_investing.py +0 -139
  369. akshare/crypto/crypto_hist_investing.py +0 -249
  370. akshare/fortune/fortune_it_juzi.py +0 -123
  371. akshare/fund/fund_announcement.py +0 -56
  372. akshare/futures/futures_international.py +0 -170
  373. akshare/futures/futures_news_baidu.py +0 -54
  374. akshare/futures/inventory_data.py +0 -100
  375. akshare/futures_derivative/futures_index_price_nh.py +0 -61
  376. akshare/futures_derivative/futures_index_return_nh.py +0 -47
  377. akshare/futures_derivative/futures_index_volatility_nh.py +0 -51
  378. akshare/futures_derivative/futures_other_index_nh.py +0 -145
  379. akshare/index/index_fear_greed_funddb.py +0 -78
  380. akshare/index/index_investing.py +0 -232
  381. akshare/sport/__init__.py +0 -6
  382. akshare/sport/sport_olympic.py +0 -27
  383. akshare/sport/sport_olympic_winter.py +0 -39
  384. akshare/stock_feature/stock_wencai.py +0 -104
  385. akshare/stock_fundamental/stock_mda_ym.py +0 -40
  386. akshare/stock_fundamental/stock_register.py +0 -292
  387. akshare-1.13.46.dist-info/RECORD +0 -380
  388. {akshare-1.13.46.dist-info → akshare-1.17.99.dist-info}/top_level.txt +0 -0
@@ -1,12 +1,17 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2024/3/30 17:00
4
+ Date: 2024/7/6 18:00
5
5
  Desc: openctp 期货交易费用参照表
6
6
  http://openctp.cn/fees.html
7
7
  """
8
8
 
9
+ from datetime import datetime
10
+ from io import StringIO
11
+
9
12
  import pandas as pd
13
+ import requests
14
+ from bs4 import BeautifulSoup
10
15
 
11
16
 
12
17
  def futures_fees_info() -> pd.DataFrame:
@@ -17,7 +22,13 @@ def futures_fees_info() -> pd.DataFrame:
17
22
  :rtype: pandas.DataFrame
18
23
  """
19
24
  url = "http://openctp.cn/fees.html"
20
- temp_df = pd.read_html(url)[0]
25
+ r = requests.get(url)
26
+ r.encoding = "utf-8"
27
+ soup = BeautifulSoup(r.text, features="lxml")
28
+ datetime_str = soup.find("p").string.strip("Generated at ").strip(".")
29
+ datetime_raw = datetime.strptime(datetime_str, "%Y-%m-%d %H:%M:%S")
30
+ temp_df = pd.read_html(StringIO(r.text))[0]
31
+ temp_df["更新时间"] = datetime_raw.strftime("%Y-%m-%d %H:%M:%S")
21
32
  return temp_df
22
33
 
23
34
 
@@ -1,17 +1,19 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2024/1/29 17:00
4
+ Date: 2025/10/30 17:00
5
5
  Desc: 查询期货合约当前时刻的详情
6
6
  https://finance.sina.com.cn/futures/quotes/V2101.shtml
7
7
  """
8
+
8
9
  from io import StringIO
9
10
 
10
11
  import pandas as pd
11
12
  import requests
13
+ from bs4 import BeautifulSoup
12
14
 
13
15
 
14
- def futures_contract_detail(symbol: str = 'AP2101') -> pd.DataFrame:
16
+ def futures_contract_detail(symbol: str = "AP2101") -> pd.DataFrame:
15
17
  """
16
18
  查询期货合约详情
17
19
  https://finance.sina.com.cn/futures/quotes/V2101.shtml
@@ -22,18 +24,66 @@ def futures_contract_detail(symbol: str = 'AP2101') -> pd.DataFrame:
22
24
  """
23
25
  url = f"https://finance.sina.com.cn/futures/quotes/{symbol}.shtml"
24
26
  r = requests.get(url)
25
- r.encoding = 'gb2312'
27
+ r.encoding = "gb2312"
26
28
  temp_df = pd.read_html(StringIO(r.text))[6]
27
29
  data_one = temp_df.iloc[:, :2]
28
- data_one.columns = ['item', 'value']
30
+ data_one.columns = ["item", "value"]
29
31
  data_two = temp_df.iloc[:, 2:4]
30
- data_two.columns = ['item', 'value']
32
+ data_two.columns = ["item", "value"]
31
33
  data_three = temp_df.iloc[:, 4:]
32
- data_three.columns = ['item', 'value']
33
- temp_df = pd.concat(objs=[data_one, data_two, data_three], axis=0, ignore_index=True)
34
+ data_three.columns = ["item", "value"]
35
+ temp_df = pd.concat(
36
+ objs=[data_one, data_two, data_three], axis=0, ignore_index=True
37
+ )
38
+ return temp_df
39
+
40
+
41
+ def futures_contract_detail_em(symbol: str = "v2602F") -> pd.DataFrame:
42
+ """
43
+ 查询期货合约详情
44
+ https://quote.eastmoney.com/qihuo/v2602F.html
45
+ :param symbol: 合约
46
+ :type symbol: str
47
+ :return: 期货合约详情
48
+ :rtype: pandas.DataFrame
49
+ """
50
+ url = f"https://quote.eastmoney.com/qihuo/{symbol}.html"
51
+ r = requests.get(url)
52
+ soup = BeautifulSoup(r.text, features="lxml")
53
+ url_text = \
54
+ soup.find(name="div", attrs={"class": "sidertabbox_tsplit"}).find(name="div", attrs={"class": "onet"}).find(
55
+ "a")[
56
+ 'href']
57
+ inner_symbol = url_text.split("#")[-1].strip("futures_")
58
+ url = f"https://futsse-static.eastmoney.com/redis?msgid={inner_symbol}_info"
59
+ r = requests.get(url)
60
+ data_json = r.json()
61
+ temp_df = pd.DataFrame.from_dict(data_json, orient="index")
62
+ column_mapping = {
63
+ 'vname': '交易品种',
64
+ 'vcode': '交易代码',
65
+ 'jydw': '交易单位',
66
+ 'bjdw': '报价单位',
67
+ 'market': '上市交易所',
68
+ 'zxbddw': '最小变动价格',
69
+ 'zdtbfd': '跌涨停板幅度',
70
+ 'hyjgyf': '合约交割月份',
71
+ 'jysj': '交易时间',
72
+ 'zhjyr': '最后交易日',
73
+ 'zhjgr': '最后交割日',
74
+ 'jgpj': '交割品级',
75
+ 'zcjybzj': '最初交易保证金',
76
+ 'jgfs': '交割方式'
77
+ }
78
+ temp_df.rename(index=column_mapping, inplace=True)
79
+ temp_df.reset_index(drop=False, inplace=True)
80
+ temp_df.columns = ['item', 'value']
34
81
  return temp_df
35
82
 
36
83
 
37
- if __name__ == '__main__':
38
- futures_contract_detail_df = futures_contract_detail(symbol='IM2402')
84
+ if __name__ == "__main__":
85
+ futures_contract_detail_df = futures_contract_detail(symbol="V2101")
39
86
  print(futures_contract_detail_df)
87
+
88
+ futures_contract_detail_em_df = futures_contract_detail_em(symbol="l2602F")
89
+ print(futures_contract_detail_em_df)
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2023/7/14 15:19
4
+ Date: 2024/11/30 18:00
5
5
  Desc: 期货日线行情
6
6
  """
7
7
 
@@ -11,6 +11,7 @@ import re
11
11
  import zipfile
12
12
  from io import BytesIO, StringIO
13
13
 
14
+ import numpy as np
14
15
  import pandas as pd
15
16
  import requests
16
17
 
@@ -271,12 +272,12 @@ def get_gfex_daily(date: str = "20221223") -> pd.DataFrame:
271
272
  return result_df
272
273
 
273
274
 
274
- def get_ine_daily(date: str = "20220208") -> pd.DataFrame:
275
+ def get_ine_daily(date: str = "20241129") -> pd.DataFrame:
275
276
  """
276
277
  上海国际能源交易中心-日频率-量价数据
277
278
  上海国际能源交易中心: 原油期货(上市时间: 20180326); 20号胶期货(上市时间: 20190812)
278
- trade_price: http://www.ine.cn/statements/daily/?paramid=kx
279
- trade_note: http://www.ine.cn/data/datanote.dat
279
+ trade_price: https://www.ine.cn/statements/daily/?paramid=kx
280
+ trade_note: https://www.ine.cn/data/datanote.dat
280
281
  :param date: 日期 format:YYYY-MM-DD 或 YYYYMMDD 或 datetime.date对象,默认为当前交易日
281
282
  :type date: str or datetime.date
282
283
  :return: 上海国际能源交易中心-日频率-量价数据
@@ -286,7 +287,7 @@ def get_ine_daily(date: str = "20220208") -> pd.DataFrame:
286
287
  if day.strftime("%Y%m%d") not in calendar:
287
288
  # warnings.warn(f"{day.strftime('%Y%m%d')}非交易日")
288
289
  return pd.DataFrame()
289
- url = f"http://www.ine.cn/data/dailydata/kx/kx{day.strftime('%Y%m%d')}.dat"
290
+ url = f"https://www.ine.cn/data/tradedata/future/dailydata/kx{day.strftime('%Y%m%d')}.dat"
290
291
  r = requests.get(url, headers=cons.shfe_headers)
291
292
  result_df = pd.DataFrame()
292
293
  try:
@@ -452,7 +453,7 @@ def get_czce_daily(date: str = "20050525") -> pd.DataFrame:
452
453
  def get_shfe_daily(date: str = "20220415") -> pd.DataFrame:
453
454
  """
454
455
  上海期货交易所-日频率-量价数据
455
- https://www.shfe.com.cn/statements/dataview.html?paramid=kx
456
+ https://tsite.shfe.com.cn/statements/dataview.html?paramid=kx
456
457
  :param date: 日期 format:YYYY-MM-DD 或 YYYYMMDD 或 datetime.date对象, 默认为当前交易日
457
458
  :type date: str or datetime.date
458
459
  :return: 上海期货交易所-日频率-量价数据
@@ -479,13 +480,13 @@ def get_shfe_daily(date: str = "20220415") -> pd.DataFrame:
479
480
  try:
480
481
  json_data = json.loads(
481
482
  requests_link(
482
- cons.SHFE_DAILY_URL % (day.strftime("%Y%m%d")),
483
+ cons.SHFE_DAILY_URL_20250630 % (day.strftime("%Y%m%d")),
483
484
  headers=cons.shfe_headers,
484
485
  ).text
485
486
  )
486
487
  except requests.HTTPError as reason:
487
488
  if reason.response != 404:
488
- print(cons.SHFE_DAILY_URL % (day.strftime("%Y%m%d")), reason)
489
+ print(cons.SHFE_DAILY_URL_20250630 % (day.strftime("%Y%m%d")), reason)
489
490
  return pd.DataFrame()
490
491
 
491
492
  if len(json_data["o_curinstrument"]) == 0:
@@ -512,13 +513,18 @@ def get_shfe_daily(date: str = "20220415") -> pd.DataFrame:
512
513
  df["symbol"] = df["variety"] + df["DELIVERYMONTH"]
513
514
  df["date"] = day.strftime("%Y%m%d")
514
515
  df["VOLUME"] = df["VOLUME"].apply(lambda x: 0 if x == "" else x)
515
- df["turnover"] = df["TURNOVER"].apply(lambda x: 0 if x == "" else x)
516
+ try:
517
+ df["turnover"] = df["TURNOVER"].apply(lambda x: 0 if x == "" else x)
518
+ except KeyError:
519
+ df["turnover"] = np.nan
516
520
  df.rename(columns=cons.SHFE_COLUMNS, inplace=True)
517
521
  df = df[~df["symbol"].str.contains("efp")]
518
- return df[cons.OUTPUT_COLUMNS]
522
+ df = df[cons.OUTPUT_COLUMNS]
523
+ df.reset_index(inplace=True)
524
+ return df
519
525
 
520
526
 
521
- def get_dce_daily(date: str = "20220308") -> pd.DataFrame:
527
+ def get_dce_daily(date: str = "20251027") -> pd.DataFrame:
522
528
  """
523
529
  大连商品交易所日交易数据
524
530
  http://www.dce.com.cn/dalianshangpin/xqsj/tjsj26/rtj/rxq/index.html
@@ -531,42 +537,42 @@ def get_dce_daily(date: str = "20220308") -> pd.DataFrame:
531
537
  if day.strftime("%Y%m%d") not in calendar:
532
538
  # warnings.warn("%s非交易日" % day.strftime("%Y%m%d"))
533
539
  return pd.DataFrame()
534
- url = "http://www.dce.com.cn/publicweb/quotesdata/exportDayQuotesChData.html"
535
- headers = {
536
- "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,"
537
- "application/signed-exchange;v=b3;q=0.9",
538
- "Accept-Encoding": "gzip, deflate",
539
- "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8",
540
- "Cache-Control": "no-cache",
541
- "Connection": "keep-alive",
542
- "Content-Length": "86",
543
- "Content-Type": "application/x-www-form-urlencoded",
544
- "Host": "www.dce.com.cn",
545
- "Origin": "http://www.dce.com.cn",
546
- "Pragma": "no-cache",
547
- "Referer": "http://www.dce.com.cn/publicweb/quotesdata/dayQuotesCh.html",
548
- "Upgrade-Insecure-Requests": "1",
549
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
550
- "Chrome/84.0.4147.105 Safari/537.36",
540
+ url = "http://www.dce.com.cn/dcereport/publicweb/dailystat/dayQuotes"
541
+ payload = {
542
+ "contractId": "",
543
+ "lang": "zh",
544
+ "optionSeries": "",
545
+ "statisticsType": "0",
546
+ "tradeDate": date,
547
+ "tradeType": "1",
548
+ "varietyId": "all",
551
549
  }
552
- params = {
553
- "dayQuotes.variety": "all",
554
- "dayQuotes.trade_type": "0",
555
- "year": date[:4],
556
- "month": str(int(date[4:6]) - 1),
557
- "day": date[6:],
558
- "exportFlag": "excel",
559
- }
560
- r = requests.post(url, data=params, headers=headers)
561
- data_df = pd.read_excel(BytesIO(r.content), header=1)
562
-
563
- data_df = data_df[~data_df["商品名称"].str.contains("小计")]
564
- data_df = data_df[~data_df["商品名称"].str.contains("总计")]
565
- data_df["variety"] = data_df["商品名称"].map(lambda x: cons.DCE_MAP[x])
566
- data_df["symbol"] = data_df["合约名称"]
567
- del data_df["商品名称"]
568
- del data_df["合约名称"]
569
- data_df.columns = [
550
+ r = requests.post(url, json=payload)
551
+ data_json = r.json()
552
+ temp_df = pd.DataFrame(data_json['data'])
553
+ temp_df.rename(columns={
554
+ "variety": "品种名称",
555
+ "contractId": "合约",
556
+ "open": "开盘价",
557
+ "high": "最高价",
558
+ "low": "最低价",
559
+ "close": "收盘价",
560
+ "lastClear": "前结算价",
561
+ "clearPrice": "结算价",
562
+ "diff": "涨跌",
563
+ "diff1": "涨跌1",
564
+ "volumn": "成交量",
565
+ "openInterest": "持仓量",
566
+ "diffI": "持仓量变化",
567
+ "turnover": "成交额",
568
+ }, inplace=True)
569
+ temp_df = temp_df[~temp_df["品种名称"].str.contains("小计")]
570
+ temp_df = temp_df[~temp_df["品种名称"].str.contains("总计")]
571
+ temp_df["variety"] = temp_df["品种名称"].map(lambda x: cons.DCE_MAP[x])
572
+ temp_df["symbol"] = temp_df["合约"]
573
+ del temp_df["品种名称"]
574
+ del temp_df["合约"]
575
+ temp_df.columns = [
570
576
  "open",
571
577
  "high",
572
578
  "low",
@@ -575,15 +581,24 @@ def get_dce_daily(date: str = "20220308") -> pd.DataFrame:
575
581
  "settle",
576
582
  "_",
577
583
  "_",
584
+ "_",
578
585
  "volume",
579
586
  "open_interest",
580
587
  "_",
581
588
  "turnover",
589
+ "_",
590
+ "_",
591
+ "_",
592
+ "_",
593
+ "_",
594
+ "_",
595
+ "_",
596
+ "_",
582
597
  "variety",
583
598
  "symbol",
584
599
  ]
585
- data_df["date"] = date
586
- data_df = data_df[
600
+ temp_df["date"] = date
601
+ temp_df = temp_df[
587
602
  [
588
603
  "symbol",
589
604
  "date",
@@ -599,13 +614,7 @@ def get_dce_daily(date: str = "20220308") -> pd.DataFrame:
599
614
  "variety",
600
615
  ]
601
616
  ]
602
- # TODO pandas 2.1.0 change
603
- try:
604
- data_df = data_df.map(lambda x: x.replace(",", ""))
605
- except: # noqa: E722
606
- data_df = data_df.applymap(lambda x: x.replace(",", ""))
607
-
608
- data_df = data_df.astype(
617
+ temp_df = temp_df.astype(
609
618
  {
610
619
  "open": "float",
611
620
  "high": "float",
@@ -618,8 +627,8 @@ def get_dce_daily(date: str = "20220308") -> pd.DataFrame:
618
627
  "pre_settle": "float",
619
628
  }
620
629
  )
621
- data_df.reset_index(inplace=True, drop=True)
622
- return data_df
630
+ temp_df.reset_index(inplace=True, drop=True)
631
+ return temp_df
623
632
 
624
633
 
625
634
  def get_futures_daily(
@@ -668,23 +677,27 @@ def get_futures_daily(
668
677
  df_list = list()
669
678
  while start_date <= end_date:
670
679
  df = f(date=str(start_date).replace("-", ""))
671
- if df is not None:
680
+ if not df.empty:
672
681
  df_list.append(df)
673
682
  start_date += datetime.timedelta(days=1)
674
683
 
675
- if len(df_list) > 0:
684
+ if len(df_list) == 0:
685
+ return pd.DataFrame()
686
+ elif len(df_list) > 0:
676
687
  temp_df = pd.concat(df_list).reset_index(drop=True)
677
688
  temp_df = temp_df[~temp_df["symbol"].str.contains("efp")]
678
689
  return temp_df
690
+ else:
691
+ return pd.DataFrame()
679
692
 
680
693
 
681
694
  if __name__ == "__main__":
682
695
  get_futures_daily_df = get_futures_daily(
683
- start_date="20240410", end_date="20240415", market="SHFE"
696
+ start_date="20250708", end_date="20250708", market="DCE"
684
697
  )
685
698
  print(get_futures_daily_df)
686
699
 
687
- get_dce_daily_df = get_dce_daily(date="20230810")
700
+ get_dce_daily_df = get_dce_daily(date="20251029")
688
701
  print(get_dce_daily_df)
689
702
 
690
703
  get_cffex_daily_df = get_cffex_daily(date="20230810")
@@ -696,7 +709,7 @@ if __name__ == "__main__":
696
709
  get_czce_daily_df = get_czce_daily(date="20210513")
697
710
  print(get_czce_daily_df)
698
711
 
699
- get_shfe_daily_df = get_shfe_daily(date="20240415")
712
+ get_shfe_daily_df = get_shfe_daily(date="20250630")
700
713
  print(get_shfe_daily_df)
701
714
 
702
715
  get_gfex_daily_df = get_gfex_daily(date="20221228")
@@ -1,30 +1,36 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2024/1/19 23:10
4
+ Date: 2025/3/5 18:00
5
5
  Desc: 外盘期货-历史行情数据-日频率
6
6
  https://finance.sina.com.cn/money/future/hf.html
7
7
  """
8
+
8
9
  from datetime import datetime
9
10
  from io import StringIO
10
11
 
11
12
  import pandas as pd
12
13
  import requests
13
14
 
14
- from akshare.futures.futures_hq_sina import futures_foreign_commodity_subscribe_exchange_symbol
15
+ from akshare.futures.futures_hq_sina import (
16
+ futures_foreign_commodity_subscribe_exchange_symbol,
17
+ )
15
18
 
16
19
 
17
20
  def futures_foreign_hist(symbol: str = "ZSD") -> pd.DataFrame:
18
21
  """
19
22
  外盘期货-历史行情数据-日频率
20
23
  https://finance.sina.com.cn/money/future/hf.html
21
- :param symbol: futures symbol, you can get it from futures_foreign_commodity_subscribe_exchange_symbol
24
+ :param symbol: 外盘期货代码, 可以通过 ak.futures_foreign_commodity_subscribe_exchange_symbol() 来获取所有品种代码
22
25
  :type symbol: str
23
- :return: historical data from 2010
26
+ :return: 历史行情数据-日频率
24
27
  :rtype: pandas.DataFrame
25
28
  """
26
- today = f'{datetime.today().year}_{datetime.today().month}_{datetime.today().day}'
27
- url = f"https://stock2.finance.sina.com.cn/futures/api/jsonp.php/var%20_S{today}=/GlobalFuturesService.getGlobalFuturesDailyKLine"
29
+ today = f"{datetime.today().year}_{datetime.today().month}_{datetime.today().day}"
30
+ url = (
31
+ f"https://stock2.finance.sina.com.cn/futures/api/jsonp.php/var%20_S{today}=/"
32
+ f"GlobalFuturesService.getGlobalFuturesDailyKLine"
33
+ )
28
34
  params = {
29
35
  "symbol": symbol,
30
36
  "_": today,
@@ -32,7 +38,7 @@ def futures_foreign_hist(symbol: str = "ZSD") -> pd.DataFrame:
32
38
  }
33
39
  r = requests.get(url, params=params)
34
40
  data_text = r.text
35
- data_df = pd.read_json(StringIO(data_text[data_text.find("["):-2]))
41
+ data_df = pd.read_json(StringIO(data_text[data_text.find("[") : -2]))
36
42
  return data_df
37
43
 
38
44
 
@@ -52,7 +58,7 @@ def futures_foreign_detail(symbol: str = "ZSD") -> pd.DataFrame:
52
58
  return data_df
53
59
 
54
60
 
55
- if __name__ == '__main__':
61
+ if __name__ == "__main__":
56
62
  futures_foreign_hist_df = futures_foreign_hist(symbol="ZSD")
57
63
  print(futures_foreign_hist_df)
58
64