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,229 +1,29 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2022/8/8 20:33
4
+ Date: 2024/6/26 15:33
5
5
  Desc: 英为财情-外汇-货币对历史数据
6
6
  https://cn.investing.com/currencies/
7
7
  https://cn.investing.com/currencies/eur-usd-historical-data
8
8
  """
9
- import json
10
9
 
11
10
  import pandas as pd
12
11
  import requests
13
12
  from bs4 import BeautifulSoup
14
- from tqdm import tqdm
13
+ from akshare.utils.tqdm import get_tqdm
15
14
 
16
- from akshare.index.cons import short_headers
17
15
 
18
-
19
- def _currency_name_url() -> dict:
20
- """
21
- 货币键值对
22
- :return: 货币键值对
23
- :rtype: dict
24
- """
25
- url = "https://cn.investing.com/currencies/"
26
- res = requests.post(url, headers=short_headers)
27
- data_table = pd.read_html(res.text)[0].iloc[:, 1:] # 实时货币行情
28
- data_table.columns = ["中文名称", "英文名称", "最新", "最高", "最低", "涨跌额", "涨跌幅", "时间"]
29
- name_code_dict = dict(
30
- zip(
31
- data_table["中文名称"].tolist(),
32
- [
33
- item.lower().replace("/", "-")
34
- for item in data_table["英文名称"].tolist()
35
- ],
36
- )
37
- )
38
- return name_code_dict
39
-
40
-
41
- def currency_hist_area_index_name_code(symbol: str = "usd-jpy") -> dict:
42
- """
43
- 指定 symbol 的所有指数和代码
44
- https://cn.investing.com/indices/
45
- :param symbol: 指定的国家或地区;ak._get_global_country_name_url() 函数返回的国家或地区的名称
46
- :type symbol: str
47
- :return: 指定 area 的所有指数和代码
48
- :rtype: dict
49
- """
50
- pd.set_option("mode.chained_assignment", None)
51
- url = f"https://cn.investing.com/currencies/{symbol}-historical-data"
52
- r = requests.get(url)
53
- soup = BeautifulSoup(r.text, "lxml")
54
- data_text = soup.find("script", attrs={"id": "__NEXT_DATA__"}).text
55
- data_json = json.loads(data_text)
56
- code = json.loads(data_json["props"]["pageProps"]["state"])["dataStore"][
57
- "pageInfoStore"
58
- ]["identifiers"]["instrument_id"]
59
- return code
60
-
61
-
62
- def currency_hist(
63
- symbol: str = "usd-jpy",
64
- period: str = "每日",
65
- start_date: str = "20030101",
66
- end_date: str = "20220808",
67
- ) -> pd.DataFrame:
68
- """
69
- 外汇历史数据, 注意获取数据区间的长短, 输入任意货币对, 具体能否获取, 通过 currency_name_code_dict 查询
70
- https://www.investing.com/
71
- :param symbol: 货币对
72
- :type symbol: str
73
- :param period: choice of {"每日", "每周", "每月"}
74
- :type period: str
75
- :param start_date: 日期
76
- :type start_date: str
77
- :param end_date: 日期
78
- :type end_date: str
79
- :return: 货币对历史数据
80
- :rtype: pandas.DataFrame
81
- """
82
- start_date = "-".join([start_date[:4], start_date[4:6], start_date[6:]])
83
- end_date = "-".join([end_date[:4], end_date[4:6], end_date[6:]])
84
- code = currency_hist_area_index_name_code(symbol)
85
- url = f"https://api.investing.com/api/financialdata/historical/{code}"
86
- period_map = {"每日": "Daily", "每周": "Weekly", "每月": "Monthly"}
87
- params = {
88
- "start-date": start_date,
89
- "end-date": end_date,
90
- "time-frame": period_map[period],
91
- "add-missing-rows": "false",
92
- }
93
- headers = {
94
- "accept": "application/json, text/plain, */*",
95
- "accept-encoding": "gzip, deflate, br",
96
- "accept-language": "zh-CN,zh;q=0.9,en;q=0.8",
97
- "cache-control": "no-cache",
98
- "domain-id": "cn",
99
- "origin": "https://cn.investing.com",
100
- "pragma": "no-cache",
101
- "referer": "https://cn.investing.com/",
102
- "sec-ch-ua": '"Google Chrome";v="105", "Not)A;Brand";v="8", "Chromium";v="105"',
103
- "sec-ch-ua-mobile": '"?0"',
104
- "sec-ch-ua-platform": '"Windows"',
105
- "sec-fetch-dest": "empty",
106
- "sec-fetch-mode": "cors",
107
- "sec-fetch-site": "same-site",
108
- "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36",
109
- }
110
- r = requests.get(url, params=params, headers=headers)
111
- data_json = r.json()
112
- df_data = pd.DataFrame(data_json["data"])
113
- df_data.columns = [
114
- "-",
115
- "-",
116
- "-",
117
- "日期",
118
- "-",
119
- "-",
120
- "-",
121
- "-",
122
- "-",
123
- "交易量",
124
- "-",
125
- "收盘",
126
- "开盘",
127
- "高",
128
- "低",
129
- "涨跌幅",
130
- ]
131
- df_data = df_data[["日期", "收盘", "开盘", "高", "低", "交易量", "涨跌幅"]]
132
- df_data["日期"] = pd.to_datetime(df_data["日期"]).dt.date
133
- df_data["收盘"] = pd.to_numeric(df_data["收盘"])
134
- df_data["开盘"] = pd.to_numeric(df_data["开盘"])
135
- df_data["高"] = pd.to_numeric(df_data["高"])
136
- df_data["低"] = pd.to_numeric(df_data["低"])
137
- df_data["交易量"] = pd.to_numeric(df_data["交易量"])
138
- df_data["涨跌幅"] = pd.to_numeric(df_data["涨跌幅"])
139
- df_data.sort_values("日期", inplace=True)
140
- df_data.reset_index(inplace=True, drop=True)
141
- return df_data
142
-
143
-
144
- def _currency_single() -> pd.DataFrame:
145
- """
146
- 英为财情-外汇-单种货币兑换汇率-单种货币列表
147
- :return: 单种货币列表
148
- :rtype: pandas.DataFrame
149
- """
150
- url = "https://cn.investing.com/currencies/single-currency-crosses"
151
- res = requests.post(url, headers=short_headers)
152
- soup = BeautifulSoup(res.text, "lxml")
153
- name_url_option_list = soup.find(
154
- "select", attrs={"class": "newInput selectBox"}
155
- ).find_all("option")
156
- temp_df = pd.DataFrame(
157
- [item.get_text().split("-", 1) for item in name_url_option_list]
158
- )
159
- temp_df.columns = ["short_name", "name"]
160
- temp_df["short_name"] = temp_df["short_name"].str.strip()
161
- temp_df["name"] = temp_df["name"].str.strip()
162
- temp_df["code"] = [item["value"] for item in name_url_option_list]
163
- return temp_df
164
-
165
-
166
- def currency_name_code(symbol: str = "usd/jpy") -> pd.DataFrame:
16
+ def currency_pair_map(symbol: str = "美元") -> pd.DataFrame:
167
17
  """
168
- 当前所有可兑换货币对
169
- :param symbol: "usd/jpy"
18
+ 指定货币的所有可获取货币对的数据
19
+ https://cn.investing.com/currencies/cny-jmd
20
+ :param symbol: 指定货币
170
21
  :type symbol: str
171
- :return: 中英文货币对
22
+ :return: 指定货币的所有可获取货币对的数据
172
23
  :rtype: pandas.DataFrame
173
- name code
174
- 0 欧元/美元 eur-usd
175
- 1 英镑/美元 gbp-usd
176
- 2 美元/日元 usd-jpy
177
- 3 美元/瑞士法郎 usd-chf
178
- 4 澳大利亚元/美元 aud-usd
179
- .. ... ...
180
- 268 日元/新加坡元 jpy-sgd
181
- 269 科威特第纳尔/日元 kwd-jpy
182
- 270 日元/白俄罗斯卢布 jpy-byn
183
- 271 日元/乌克兰赫里纳 jpy-uah
184
- 272 日元/土耳其里拉 jpy-try
185
24
  """
186
- symbol = symbol.upper()
187
- currency_df = _currency_single()
188
- url = "https://cn.investing.com/currencies/Service/ChangeCurrency"
189
- params = {
190
- "session_uniq_id": "53bee677662a2336ec07b40738753fc1",
191
- "currencies": currency_df[
192
- currency_df["short_name"] == symbol.split("/")[0]
193
- ]["code"].values[0],
194
- }
195
- headers = {
196
- "Accept": "application/json, text/javascript, */*; q=0.01",
197
- "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8",
198
- "Cache-Control": "no-cache",
199
- "Connection": "keep-alive",
200
- "Host": "cn.investing.com",
201
- "Pragma": "no-cache",
202
- "Referer": "https://cn.investing.com/currencies/single-currency-crosses",
203
- "Sec-Fetch-Mode": "cors",
204
- "Sec-Fetch-Site": "same-origin",
205
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36",
206
- "X-Requested-With": "XMLHttpRequest",
207
- }
208
- r = requests.get(url, params=params, headers=headers)
209
- temp_df = pd.read_html(r.json()["HTML"])[0].iloc[:, 1:]
210
- temp_df.rename(columns={"名称.1": "简称"}, inplace=True)
211
- temp_df["pids"] = [item[:-1] for item in r.json()["pids"]]
212
- name_code_dict_one = dict(
213
- zip(
214
- temp_df["名称"].tolist(),
215
- [
216
- item.lower().replace("/", "-")
217
- for item in temp_df["简称"].tolist()
218
- ],
219
- )
220
- )
221
- params = {
222
- "session_uniq_id": "53bee677662a2336ec07b40738753fc1",
223
- "currencies": currency_df[
224
- currency_df["short_name"] == symbol.split("/")[1]
225
- ]["code"].values[0],
226
- }
25
+ region_code = []
26
+ region_name = []
227
27
  headers = {
228
28
  "Accept": "application/json, text/javascript, */*; q=0.01",
229
29
  # "Accept-Encoding": "gzip, deflate, br",
@@ -235,64 +35,21 @@ def currency_name_code(symbol: str = "usd/jpy") -> pd.DataFrame:
235
35
  "Referer": "https://cn.investing.com/currencies/single-currency-crosses",
236
36
  "Sec-Fetch-Mode": "cors",
237
37
  "Sec-Fetch-Site": "same-origin",
238
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36",
38
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
39
+ "Chrome/79.0.3945.130 Safari/537.36",
239
40
  "X-Requested-With": "XMLHttpRequest",
240
41
  }
241
- r = requests.get(url, params=params, headers=headers)
242
- temp_df = pd.read_html(r.json()["HTML"])[0].iloc[:, 1:]
243
- temp_df.rename(columns={"名称.1": "简称"}, inplace=True)
244
- temp_df["pids"] = [item[:-1] for item in r.json()["pids"]]
245
- name_code_dict_two = dict(
246
- zip(
247
- temp_df["名称"].tolist(),
248
- [
249
- item.lower().replace("/", "-")
250
- for item in temp_df["简称"].tolist()
251
- ],
252
- )
253
- )
254
- name_code_dict_one.update(name_code_dict_two)
255
- temp_df = pd.DataFrame.from_dict(
256
- name_code_dict_one, orient="index"
257
- ).reset_index()
258
- temp_df.columns = ["name", "code"]
259
- return temp_df
260
-
261
-
262
- def currency_pair_map(symbol: str = "美元") -> pd.DataFrame:
263
- """
264
- 指定货币的所有可获取货币对的数据
265
- https://cn.investing.com/currencies/cny-jmd
266
- :param symbol: 指定货币
267
- :type symbol: str
268
- :return: 指定货币的所有可获取货币对的数据
269
- :rtype: pandas.DataFrame
270
- """
271
- region_code = []
272
- region_name = []
273
42
 
274
43
  def has_data_sml_id_but_no_id(tag):
275
44
  return tag.has_attr("data-sml-id") and not tag.has_attr("title")
276
45
 
46
+ tqdm = get_tqdm()
277
47
  for region_id in tqdm(["4", "1", "8", "7", "6"], leave=False):
278
48
  url = "https://cn.investing.com/currencies/Service/region"
279
49
  params = {"region_ID": region_id, "currency_ID": "false"}
280
- headers = {
281
- "Accept": "application/json, text/javascript, */*; q=0.01",
282
- # "Accept-Encoding": "gzip, deflate, br",
283
- "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8",
284
- "Cache-Control": "no-cache",
285
- "Connection": "keep-alive",
286
- "Host": "cn.investing.com",
287
- "Pragma": "no-cache",
288
- "Referer": "https://cn.investing.com/currencies/single-currency-crosses",
289
- "Sec-Fetch-Mode": "cors",
290
- "Sec-Fetch-Site": "same-origin",
291
- "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36",
292
- "X-Requested-With": "XMLHttpRequest",
293
- }
50
+
294
51
  r = requests.get(url, params=params, headers=headers)
295
- soup = BeautifulSoup(r.text, "lxml")
52
+ soup = BeautifulSoup(r.text, features="lxml")
296
53
  region_code.extend(
297
54
  [
298
55
  item["continentid"] + "-" + region_id
@@ -300,10 +57,7 @@ def currency_pair_map(symbol: str = "美元") -> pd.DataFrame:
300
57
  ]
301
58
  )
302
59
  region_name.extend(
303
- [
304
- item.find("i").text
305
- for item in soup.find_all(has_data_sml_id_but_no_id)
306
- ]
60
+ [item.find("i").text for item in soup.find_all(has_data_sml_id_but_no_id)]
307
61
  )
308
62
 
309
63
  name_id_map = dict(zip(region_name, region_code))
@@ -313,34 +67,14 @@ def currency_pair_map(symbol: str = "美元") -> pd.DataFrame:
313
67
  "currency_ID": name_id_map[symbol].split("-")[0],
314
68
  }
315
69
  r = requests.get(url, params=params, headers=headers)
316
- soup = BeautifulSoup(r.text, "lxml")
70
+ soup = BeautifulSoup(r.text, features="lxml")
317
71
 
318
- temp_code = [
319
- item["href"].split("/")[-1] for item in soup.find_all("a")
320
- ] # need
321
- temp_name = [
322
- item["title"].replace(" ", "-") for item in soup.find_all("a")
323
- ]
324
- temp_df = pd.DataFrame([temp_name, temp_code], index=["name", "code"]).T
72
+ temp_code = [item["href"].split("/")[-1] for item in soup.find_all("a")] # need
73
+ temp_name = [item["title"].replace(" ", "-") for item in soup.find_all("a")]
74
+ temp_df = pd.DataFrame(data=[temp_name, temp_code], index=["name", "code"]).T
325
75
  return temp_df
326
76
 
327
77
 
328
78
  if __name__ == "__main__":
329
- currency_hist_area_index_name_code_df = currency_hist_area_index_name_code(
330
- symbol="usd-jpy"
331
- )
332
- print(currency_hist_area_index_name_code_df)
333
-
334
79
  currency_pair_map_df = currency_pair_map(symbol="人民币")
335
80
  print(currency_pair_map_df)
336
-
337
- currency_name_code_df = currency_name_code(symbol="cny/dkk")
338
- print(currency_name_code_df)
339
-
340
- currency_hist_df = currency_hist(
341
- symbol="usd-jpy",
342
- period="每日",
343
- start_date="20050101",
344
- end_date="20220808",
345
- )
346
- print(currency_hist_df)
@@ -0,0 +1,62 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding:utf-8 -*-
3
+ """
4
+ Date: 2025/9/9 14:57
5
+ Desc: 中国外汇交易中心暨全国银行间同业拆借中心-基准-外汇市场-外汇掉期曲线-外汇掉漆 C-Swap 定盘曲线
6
+ https://www.chinamoney.org.cn/chinese/bkcurvfsw
7
+ """
8
+
9
+ import ssl
10
+
11
+ import pandas as pd
12
+ import requests
13
+ from requests.adapters import HTTPAdapter
14
+
15
+
16
+ class LegacySSLAdapter(HTTPAdapter):
17
+ def init_poolmanager(self, *args, **kwargs):
18
+ context = ssl.create_default_context()
19
+ # 允许不安全的 legacy renegotiation
20
+ context.options |= ssl.OP_LEGACY_SERVER_CONNECT
21
+ kwargs['ssl_context'] = context
22
+ return super().init_poolmanager(*args, **kwargs)
23
+
24
+
25
+ def fx_c_swap_cm():
26
+ """
27
+ 中国外汇交易中心暨全国银行间同业拆借中心-基准-外汇市场-外汇掉期曲线-外汇掉期 C-Swap 定盘曲线
28
+ https://www.chinamoney.org.cn/chinese/bkcurvfsw
29
+ :return: 外汇掉期 C-Swap 定盘曲线
30
+ :rtype: pandas.DataFrame
31
+ """
32
+ session = requests.Session()
33
+ session.mount(prefix='https://', adapter=LegacySSLAdapter())
34
+ url = "https://www.chinamoney.org.cn/r/cms/www/chinamoney/data/fx/fx-c-sw-curv-USD.CNY.json"
35
+ payload = {
36
+ "t": "1757402201554",
37
+ }
38
+ r = session.post(url, data=payload)
39
+ data_json = r.json()
40
+ temp_df = pd.DataFrame(data_json['records'])
41
+ temp_df.rename(columns={
42
+ "curveTime": "日期时间",
43
+ "tenor": "期限品种",
44
+ "swapPnt": "掉期点(Pips)",
45
+ "dataSource": "掉期点数据源",
46
+ "swapAllPrc": "全价汇率",
47
+ }, inplace=True)
48
+ temp_df = temp_df[[
49
+ "日期时间",
50
+ "期限品种",
51
+ "掉期点(Pips)",
52
+ "掉期点数据源",
53
+ "全价汇率",
54
+ ]]
55
+ temp_df["掉期点(Pips)"] = pd.to_numeric(temp_df["掉期点(Pips)"], errors='coerce')
56
+ temp_df["全价汇率"] = pd.to_numeric(temp_df["全价汇率"], errors='coerce')
57
+ return temp_df
58
+
59
+
60
+ if __name__ == '__main__':
61
+ fx_c_swap_cm_df = fx_c_swap_cm()
62
+ print(fx_c_swap_cm_df)
akshare/fx/fx_quote.py CHANGED
@@ -7,6 +7,7 @@ Desc: 中国外汇交易中心暨全国银行间同业拆借中心-市场数据-
7
7
  人民币外汇远掉报价: fx_swap_quote
8
8
  外币对即期报价: fx_pair_quote
9
9
  """
10
+
10
11
  import time
11
12
 
12
13
  import pandas as pd
@@ -49,7 +50,7 @@ def fx_swap_quote() -> pd.DataFrame:
49
50
  中国外汇交易中心暨全国银行间同业拆借中心-市场数据-市场行情-债券市场行情-人民币外汇远掉报价
50
51
  https://www.chinamoney.com.cn/chinese/index.html
51
52
  :return: 人民币外汇远掉报价
52
- :return: pandas.DataFrame
53
+ :rtype: pandas.DataFrame
53
54
  """
54
55
  payload = {"t": str(int(round(time.time() * 1000)))}
55
56
  res = requests.post(FX_SWAP_URL, data=payload, headers=SHORT_HEADERS)
@@ -82,7 +83,7 @@ def fx_pair_quote() -> pd.DataFrame:
82
83
  中国外汇交易中心暨全国银行间同业拆借中心-市场数据-市场行情-债券市场行情-外币对即期报价
83
84
  http://www.chinamoney.com.cn/chinese/mkdatapfx/
84
85
  :return: 外币对即期报价
85
- :return: pandas.DataFrame
86
+ :rtype: pandas.DataFrame
86
87
  """
87
88
  payload = {"t": str(int(round(time.time() * 1000)))}
88
89
  res = requests.post(FX_PAIR_URL, data=payload, headers=SHORT_HEADERS)
@@ -5,6 +5,7 @@ Date: 2023/3/5 18:12
5
5
  Desc: 百度股市通-外汇-行情榜单
6
6
  https://gushitong.baidu.com/top/foreign-common-%E5%B8%B8%E7%94%A8
7
7
  """
8
+
8
9
  import http.client
9
10
  import json
10
11
  import urllib
@@ -59,7 +60,7 @@ def fx_quote_baidu(symbol: str = "人民币") -> pd.DataFrame:
59
60
  big_df["涨跌幅"] = pd.to_numeric(big_df["涨跌幅"].str.strip("%")) / 100
60
61
  out_df = pd.concat([out_df, big_df], ignore_index=True)
61
62
  num = num + 20
62
- except:
63
+ except: # noqa: E722
63
64
  break
64
65
  return out_df
65
66
 
akshare/hf/__init__.py CHANGED
@@ -2,5 +2,5 @@
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
4
  Date: 2020/4/21 15:33
5
- Desc:
5
+ Desc:
6
6
  """
akshare/hf/hf_sp500.py CHANGED
@@ -7,6 +7,7 @@ https://github.com/FutureSharks/financial-data
7
7
  long history data for S&P 500 index daily
8
8
  http://www.econ.yale.edu/~shiller/data.htm
9
9
  """
10
+
10
11
  import pandas as pd
11
12
 
12
13
 
@@ -21,15 +22,15 @@ def hf_sp_500(year: str = "2017") -> pd.DataFrame:
21
22
  url = f"https://github.com/FutureSharks/financial-data/raw/master/pyfinancialdata/data/stocks/histdata/SPXUSD/DAT_ASCII_SPXUSD_M1_{year}.csv"
22
23
  temp_df = pd.read_table(url, header=None, sep=";")
23
24
  temp_df.columns = ["date", "open", "high", "low", "close", "price"]
24
- temp_df['date'] = pd.to_datetime(temp_df['date']).dt.date
25
- temp_df['open'] = pd.to_numeric(temp_df['open'])
26
- temp_df['high'] = pd.to_numeric(temp_df['high'])
27
- temp_df['low'] = pd.to_numeric(temp_df['low'])
28
- temp_df['close'] = pd.to_numeric(temp_df['close'])
29
- temp_df['price'] = pd.to_numeric(temp_df['price'])
25
+ temp_df["date"] = pd.to_datetime(temp_df["date"]).dt.date
26
+ temp_df["open"] = pd.to_numeric(temp_df["open"])
27
+ temp_df["high"] = pd.to_numeric(temp_df["high"])
28
+ temp_df["low"] = pd.to_numeric(temp_df["low"])
29
+ temp_df["close"] = pd.to_numeric(temp_df["close"])
30
+ temp_df["price"] = pd.to_numeric(temp_df["price"])
30
31
  return temp_df
31
32
 
32
33
 
33
- if __name__ == '__main__':
34
+ if __name__ == "__main__":
34
35
  hf_sp_500_df = hf_sp_500(year="2017")
35
36
  print(hf_sp_500_df)