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
@@ -5,6 +5,7 @@ Date: 2022/1/23 10:21
5
5
  Desc: 新浪财经-商品期权
6
6
  https://stock.finance.sina.com.cn/futures/view/optionsDP.php
7
7
  """
8
+
8
9
  import pandas as pd
9
10
  import requests
10
11
  from bs4 import BeautifulSoup
@@ -21,9 +22,7 @@ def option_commodity_contract_sina(symbol: str = "玉米期权") -> pd.DataFrame
21
22
  :return: e.g., {'黄金期权': ['au2012', 'au2008', 'au2010', 'au2104', 'au2102', 'au2106', 'au2108']}
22
23
  :rtype: dict
23
24
  """
24
- url = (
25
- "https://stock.finance.sina.com.cn/futures/view/optionsDP.php/pg_o/dce"
26
- )
25
+ url = "https://stock.finance.sina.com.cn/futures/view/optionsDP.php/pg_o/dce"
27
26
  r = requests.get(url)
28
27
  soup = BeautifulSoup(r.text, "lxml")
29
28
  url_list = [
@@ -36,20 +35,15 @@ def option_commodity_contract_sina(symbol: str = "玉米期权") -> pd.DataFrame
36
35
  for item in soup.find_all("li", attrs={"class": "active"})
37
36
  if item.find("a") is not None
38
37
  ]
39
- comm_list_dict = {
40
- key: value for key, value in zip(commodity_list, url_list)
41
- }
38
+ comm_list_dict = {key: value for key, value in zip(commodity_list, url_list)}
42
39
  url = "https://stock.finance.sina.com.cn" + comm_list_dict[symbol]
43
40
  r = requests.get(url)
44
41
  soup = BeautifulSoup(r.text, "lxml")
45
42
  symbol = (
46
- soup.find(attrs={"id": "option_symbol"})
47
- .find(attrs={"class": "selected"})
48
- .text
43
+ soup.find(attrs={"id": "option_symbol"}).find(attrs={"class": "selected"}).text
49
44
  )
50
45
  contract = [
51
- item.text
52
- for item in soup.find(attrs={"id": "option_suffix"}).find_all("li")
46
+ item.text for item in soup.find(attrs={"id": "option_suffix"}).find_all("li")
53
47
  ]
54
48
  temp_df = pd.DataFrame({symbol: contract})
55
49
  temp_df.reset_index(inplace=True)
@@ -71,9 +65,7 @@ def option_commodity_contract_table_sina(
71
65
  :return: 合约实时行情
72
66
  :rtype: pandas.DataFrame
73
67
  """
74
- url = (
75
- "https://stock.finance.sina.com.cn/futures/view/optionsDP.php/pg_o/dce"
76
- )
68
+ url = "https://stock.finance.sina.com.cn/futures/view/optionsDP.php/pg_o/dce"
77
69
  r = requests.get(url)
78
70
  soup = BeautifulSoup(r.text, "lxml")
79
71
  url_list = [
@@ -86,9 +78,7 @@ def option_commodity_contract_table_sina(
86
78
  for item in soup.find_all("li", attrs={"class": "active"})
87
79
  if item.find("a") is not None
88
80
  ]
89
- comm_list_dict = {
90
- key: value for key, value in zip(commodity_list, url_list)
91
- }
81
+ comm_list_dict = {key: value for key, value in zip(commodity_list, url_list)}
92
82
  url = "https://stock.finance.sina.com.cn/futures/api/openapi.php/OptionService.getOptionData"
93
83
  params = {
94
84
  "type": "futures",
@@ -122,18 +112,26 @@ def option_commodity_contract_table_sina(
122
112
  ]
123
113
  temp_df["看涨合约-买量"] = pd.to_numeric(temp_df["看涨合约-买量"], errors="coerce")
124
114
  temp_df["看涨合约-买价"] = pd.to_numeric(temp_df["看涨合约-买价"], errors="coerce")
125
- temp_df["看涨合约-最新价"] = pd.to_numeric(temp_df["看涨合约-最新价"], errors="coerce")
115
+ temp_df["看涨合约-最新价"] = pd.to_numeric(
116
+ temp_df["看涨合约-最新价"], errors="coerce"
117
+ )
126
118
  temp_df["看涨合约-卖价"] = pd.to_numeric(temp_df["看涨合约-卖价"], errors="coerce")
127
119
  temp_df["看涨合约-卖量"] = pd.to_numeric(temp_df["看涨合约-卖量"], errors="coerce")
128
- temp_df["看涨合约-持仓量"] = pd.to_numeric(temp_df["看涨合约-持仓量"], errors="coerce")
120
+ temp_df["看涨合约-持仓量"] = pd.to_numeric(
121
+ temp_df["看涨合约-持仓量"], errors="coerce"
122
+ )
129
123
  temp_df["看涨合约-涨跌"] = pd.to_numeric(temp_df["看涨合约-涨跌"], errors="coerce")
130
124
  temp_df["行权价"] = pd.to_numeric(temp_df["行权价"], errors="coerce")
131
125
  temp_df["看跌合约-买量"] = pd.to_numeric(temp_df["看跌合约-买量"], errors="coerce")
132
126
  temp_df["看跌合约-买价"] = pd.to_numeric(temp_df["看跌合约-买价"], errors="coerce")
133
- temp_df["看跌合约-最新价"] = pd.to_numeric(temp_df["看跌合约-最新价"], errors="coerce")
127
+ temp_df["看跌合约-最新价"] = pd.to_numeric(
128
+ temp_df["看跌合约-最新价"], errors="coerce"
129
+ )
134
130
  temp_df["看跌合约-卖价"] = pd.to_numeric(temp_df["看跌合约-卖价"], errors="coerce")
135
131
  temp_df["看跌合约-卖量"] = pd.to_numeric(temp_df["看跌合约-卖量"], errors="coerce")
136
- temp_df["看跌合约-持仓量"] = pd.to_numeric(temp_df["看跌合约-持仓量"], errors="coerce")
132
+ temp_df["看跌合约-持仓量"] = pd.to_numeric(
133
+ temp_df["看跌合约-持仓量"], errors="coerce"
134
+ )
137
135
  temp_df["看跌合约-涨跌"] = pd.to_numeric(temp_df["看跌合约-涨跌"], errors="coerce")
138
136
  return temp_df
139
137
 
@@ -170,12 +168,10 @@ if __name__ == "__main__":
170
168
  )
171
169
  print(option_commodity_contract_sina_df)
172
170
 
173
- option_commodity_contract_table_sina_df = (
174
- option_commodity_contract_table_sina(symbol="棉花期权", contract="cf2301")
171
+ option_commodity_contract_table_sina_df = option_commodity_contract_table_sina(
172
+ symbol="棉花期权", contract="cf2301"
175
173
  )
176
174
  print(option_commodity_contract_table_sina_df)
177
175
 
178
- option_commodity_hist_sina_df = option_commodity_hist_sina(
179
- symbol="cf2301P21600"
180
- )
176
+ option_commodity_hist_sina_df = option_commodity_hist_sina(symbol="cf2301P21600")
181
177
  print(option_commodity_hist_sina_df)
@@ -0,0 +1,63 @@
1
+ #!/usr/bin/env python
2
+ # -*- coding:utf-8 -*-
3
+ """
4
+ Date: 2025/10/30 17:40
5
+ Desc: openctp-合约信息接口
6
+ http://openctp.cn/instruments.html
7
+ """
8
+
9
+ import pandas as pd
10
+ import requests
11
+
12
+
13
+ def option_contract_info_ctp() -> pd.DataFrame:
14
+ """
15
+ openctp-合约信息接口-期权合约
16
+ http://openctp.cn/instruments.html
17
+ :return: 期权合约信息
18
+ :rtype: pandas.DataFrame
19
+ """
20
+ url = "http://dict.openctp.cn/instruments?types=option"
21
+ r = requests.get(url)
22
+ data_json = r.json()
23
+ temp_df = pd.DataFrame(data_json['data'])
24
+
25
+ # 字段映射:英文字段名 -> 中文字段名
26
+ column_mapping = {
27
+ 'ExchangeID': '交易所ID',
28
+ 'InstrumentID': '合约ID',
29
+ 'InstrumentName': '合约名称',
30
+ 'ProductClass': '商品类别',
31
+ 'ProductID': '品种ID',
32
+ 'VolumeMultiple': '合约乘数',
33
+ 'PriceTick': '最小变动价位',
34
+ 'LongMarginRatioByMoney': '做多保证金率',
35
+ 'ShortMarginRatioByMoney': '做空保证金率',
36
+ 'LongMarginRatioByVolume': '做多保证金/手',
37
+ 'ShortMarginRatioByVolume': '做空保证金/手',
38
+ 'OpenRatioByMoney': '开仓手续费率',
39
+ 'OpenRatioByVolume': '开仓手续费/手',
40
+ 'CloseRatioByMoney': '平仓手续费率',
41
+ 'CloseRatioByVolume': '平仓手续费/手',
42
+ 'CloseTodayRatioByMoney': '平今手续费率',
43
+ 'CloseTodayRatioByVolume': '平今手续费/手',
44
+ 'DeliveryYear': '交割年份',
45
+ 'DeliveryMonth': '交割月份',
46
+ 'OpenDate': '上市日期',
47
+ 'ExpireDate': '最后交易日',
48
+ 'DeliveryDate': '交割日',
49
+ 'UnderlyingInstrID': '标的合约ID',
50
+ 'UnderlyingMultiple': '标的合约乘数',
51
+ 'OptionsType': '期权类型',
52
+ 'StrikePrice': '行权价',
53
+ 'InstLifePhase': '合约状态'
54
+ }
55
+ # 重命名列为中文
56
+ temp_df = temp_df.rename(columns=column_mapping)
57
+ return temp_df
58
+
59
+
60
+ # 使用示例
61
+ if __name__ == "__main__":
62
+ option_contract_info_ctp_df = option_contract_info_ctp()
63
+ print(option_contract_info_ctp_df)
@@ -0,0 +1,61 @@
1
+ # -*- coding:utf-8 -*-
2
+ # !/usr/bin/env python
3
+ """
4
+ Date: 2025/9/8 16:20
5
+ Desc: 上海证券交易所-产品-股票期权-信息披露-当日合约
6
+ http://www.sse.com.cn/assortment/options/disclo/preinfo/
7
+ """
8
+
9
+ import pandas as pd
10
+ import requests
11
+
12
+
13
+ def option_current_day_sse() -> pd.DataFrame:
14
+ """
15
+ 上海证券交易所-产品-股票期权-信息披露-当日合约
16
+ http://www.sse.com.cn/assortment/options/disclo/preinfo/
17
+ :return: 上交所期权当日合约
18
+ :rtype: pandas.DataFrame
19
+ """
20
+ url = "http://query.sse.com.cn/commonQuery.do"
21
+ params = {
22
+ "isPagination": "false",
23
+ "expireDate": "",
24
+ "securityId": "",
25
+ "sqlId": "SSE_ZQPZ_YSP_GGQQZSXT_XXPL_DRHY_SEARCH_L",
26
+ }
27
+ headers = {
28
+ "Accept": "*/*",
29
+ "Accept-Encoding": "gzip, deflate",
30
+ "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8",
31
+ "Cache-Control": "no-cache",
32
+ "Connection": "keep-alive",
33
+ "Host": "query.sse.com.cn",
34
+ "Pragma": "no-cache",
35
+ "Referer": "http://www.sse.com.cn/",
36
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
37
+ "Chrome/101.0.4951.67 Safari/537.36",
38
+ }
39
+ r = requests.get(url, params=params, headers=headers)
40
+ data_json = r.json()
41
+ temp_df = pd.DataFrame(data_json["result"])
42
+ dict_df = {
43
+ "SECURITY_ID": "合约编码",
44
+ "CONTRACT_ID": "合约交易代码",
45
+ "CONTRACT_SYMBOL": "合约简称",
46
+ "SECURITYNAMEBYID": "标的券名称及代码",
47
+ "CALL_OR_PUT": "类型",
48
+ "EXERCISE_PRICE": "行权价",
49
+ "CONTRACT_UNIT": "合约单位",
50
+ "END_DATE": "期权行权日",
51
+ "DELIVERY_DATE": "行权交收日",
52
+ "EXPIRE_DATE": "到期日",
53
+ "START_DATE": "开始日期",
54
+ }
55
+ temp_df = temp_df[dict_df.keys()].rename(columns=dict_df)
56
+ return temp_df
57
+
58
+
59
+ if __name__ == "__main__":
60
+ option_current_day_sse_df = option_current_day_sse()
61
+ print(option_current_day_sse_df)
@@ -0,0 +1,84 @@
1
+ # -*- coding:utf-8 -*-
2
+ # !/usr/bin/env python
3
+ """
4
+ Date: 2025/9/13 16:00
5
+ Desc: 深圳证券交易所-期权子网-行情数据-当日合约
6
+ """
7
+ from io import BytesIO
8
+
9
+ import pandas as pd
10
+ import requests
11
+
12
+
13
+ def option_current_day_szse() -> pd.DataFrame:
14
+ """
15
+ 深圳证券交易所-期权子网-行情数据-当日合约
16
+ https://www.sse.org.cn/option/quotation/contract/daycontract/index.html
17
+ :return: 深圳期权当日合约
18
+ :rtype: pandas.DataFrame
19
+ """
20
+ import warnings
21
+ warnings.filterwarnings(action='ignore', message="Workbook contains no default style")
22
+ url = "https://www.sse.org.cn/api/report/ShowReport"
23
+ params = {
24
+ "SHOWTYPE": "xlsx",
25
+ "CATALOGID": "option_drhy",
26
+ "TABKEY": "tab1",
27
+ }
28
+ r = requests.get(url, params=params)
29
+ temp_df = pd.read_excel(BytesIO(r.content))
30
+ temp_df['序号'] = pd.to_numeric(temp_df['序号'], errors='coerce')
31
+ temp_df['行权价'] = pd.to_numeric(temp_df['行权价'], errors='coerce')
32
+ temp_df['合约单位'] = pd.to_numeric(temp_df['合约单位'], errors='coerce')
33
+ temp_df['涨停价格'] = pd.to_numeric(temp_df['涨停价格'], errors='coerce')
34
+ temp_df['跌停价格'] = pd.to_numeric(temp_df['跌停价格'], errors='coerce')
35
+ temp_df['前结算价'] = pd.to_numeric(temp_df['前结算价'], errors='coerce')
36
+ temp_df['合约总持仓'] = pd.to_numeric(temp_df['合约总持仓'], errors='coerce')
37
+ temp_df['原行权价格'] = pd.to_numeric(temp_df['原行权价格'], errors='coerce')
38
+ temp_df['原合约单位'] = pd.to_numeric(temp_df['原合约单位'], errors='coerce')
39
+ temp_df['合约到期剩余交易天数'] = pd.to_numeric(temp_df['合约到期剩余交易天数'], errors='coerce')
40
+ temp_df['合约到期剩余自然天数'] = pd.to_numeric(temp_df['合约到期剩余自然天数'], errors='coerce')
41
+ temp_df['下次合约调整剩余交易天数'] = pd.to_numeric(temp_df['下次合约调整剩余交易天数'], errors='coerce')
42
+ temp_df['下次合约调整剩余自然天数'] = pd.to_numeric(temp_df['下次合约调整剩余自然天数'], errors='coerce')
43
+ temp_df['交易日期'] = pd.to_datetime(temp_df['交易日期'], errors='coerce').dt.date
44
+ temp_df['最后交易日'] = pd.to_datetime(temp_df['最后交易日'], errors='coerce').dt.date
45
+ temp_df['行权日'] = pd.to_datetime(temp_df['行权日'], errors='coerce').dt.date
46
+ temp_df['到期日'] = pd.to_datetime(temp_df['到期日'], errors='coerce').dt.date
47
+ temp_df['交收日'] = pd.to_datetime(temp_df['交收日'], errors='coerce').dt.date
48
+ temp_df = temp_df[[
49
+ '序号',
50
+ '合约编码',
51
+ '合约代码',
52
+ '合约简称',
53
+ '标的证券简称(代码)',
54
+ '合约类型',
55
+ '行权价',
56
+ '合约单位',
57
+ '最后交易日',
58
+ '行权日',
59
+ '到期日',
60
+ '交收日',
61
+ '新挂',
62
+ '涨停价格',
63
+ '跌停价格',
64
+ '前结算价',
65
+ '合约调整',
66
+ '停牌',
67
+ '合约总持仓',
68
+ '挂牌原因',
69
+ '原合约代码',
70
+ '原合约简称',
71
+ '原行权价格',
72
+ '原合约单位',
73
+ '合约到期剩余交易天数',
74
+ '合约到期剩余自然天数',
75
+ '下次合约调整剩余交易天数',
76
+ '下次合约调整剩余自然天数',
77
+ '交易日期',
78
+ ]]
79
+ return temp_df
80
+
81
+
82
+ if __name__ == "__main__":
83
+ option_current_day_szse_df = option_current_day_szse()
84
+ print(option_current_day_szse_df)
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2021/7/21 14:22
4
+ Date: 2025/10/17 16:30
5
5
  Desc: 郑州商品交易所-交易数据-历史行情下载-期权历史行情下载
6
6
  http://www.czce.com.cn/cn/jysj/lshqxz/H770319index_1.htm
7
7
  自 20200101 起,成交量、空盘量、成交额、行权量均为单边计算
@@ -12,19 +12,35 @@ http://www.czce.com.cn/cn/jysj/lshqxz/H770319index_1.htm
12
12
  "MA": "20191217"
13
13
  "RM": "20200116"
14
14
  "ZC": "20200630"
15
+ "OI": "20220826"
16
+ "PK": "20220826"
17
+ "PX": "20230915"
18
+ "SH": "20230915"
19
+ "SA": "20231020"
20
+ "PF": "20231020"
21
+ "SM": "20231020"
22
+ "SF": "20231020"
23
+ "UR": "20231020"
24
+ "AP": "20231020"
25
+ "CJ": "20240621"
26
+ "FG": "20240621"
27
+ "PR": "20241227"
15
28
  """
16
- from io import StringIO
29
+
17
30
  import warnings
31
+ from io import StringIO
18
32
 
19
33
  import pandas as pd
20
34
  import requests
21
35
 
22
36
 
23
- def option_czce_hist(symbol: str = "SR", year: str = "2021") -> pd.DataFrame:
37
+ def option_hist_yearly_czce(symbol: str = "SR", year: str = "2021") -> pd.DataFrame:
24
38
  """
25
39
  郑州商品交易所-交易数据-历史行情下载-期权历史行情下载
26
40
  http://www.czce.com.cn/cn/jysj/lshqxz/H770319index_1.htm
27
- :param symbol: choice of {"白糖": "SR", "棉花": "CF", "PTA": "TA", "甲醇": "MA", "菜籽粕": "RM", "动力煤": "ZC"}
41
+ :param symbol: choice of {"白糖": "SR", "棉花": "CF", "PTA": "TA", "甲醇": "MA", "菜籽粕": "RM",
42
+ "动力煤": "ZC", "菜籽油": "OI", "花生": "PK", "对二甲苯": "PX", "烧碱": "SH", "纯碱": "SA", "短纤": "PF",
43
+ "锰硅": "SM", "硅铁": "SF", "尿素": "UR", "苹果": "AP", "红枣": "CJ", "玻璃": "FG", "瓶片": "PR"}
28
44
  :type symbol: str
29
45
  :param year: 需要获取数据的年份, 注意品种的上市时间
30
46
  :type year: str
@@ -38,17 +54,29 @@ def option_czce_hist(symbol: str = "SR", year: str = "2021") -> pd.DataFrame:
38
54
  "MA": "2019",
39
55
  "RM": "2020",
40
56
  "ZC": "2020",
57
+ "OI": "2022",
58
+ "PK": "2022",
59
+ "PX": "2023",
60
+ "SH": "2023",
61
+ "SA": "2023",
62
+ "PF": "2023",
63
+ "SM": "2023",
64
+ "SF": "2023",
65
+ "UR": "2023",
66
+ "AP": "2023",
67
+ "CJ": "2024",
68
+ "FG": "2024",
69
+ "PR": "2024",
41
70
  }
42
71
  if int(symbol_year_dict[symbol]) > int(year):
43
72
  warnings.warn(f"{year} year, symbol {symbol} is not on trade")
44
- return None
45
- warnings.warn("正在下载中, 请稍等")
46
- url = f'http://www.czce.com.cn/cn/DFSStaticFiles/Option/2021/OptionDataAllHistory/{symbol}OPTIONS{year}.txt'
73
+ return pd.DataFrame()
74
+ url = f"http://www.czce.com.cn/cn/DFSStaticFiles/Option/{year}/OptionDataAllHistory/{symbol}OPTIONS{year}.txt"
47
75
  r = requests.get(url)
48
76
  option_df = pd.read_table(StringIO(r.text), skiprows=1, sep="|", low_memory=False)
49
77
  return option_df
50
78
 
51
79
 
52
80
  if __name__ == "__main__":
53
- option_czce_hist_df = option_czce_hist(symbol="ZC", year="2021")
54
- print(option_czce_hist_df)
81
+ option_hist_yearly_czce_df = option_hist_yearly_czce(symbol="RM", year="2025")
82
+ print(option_hist_yearly_czce_df)
@@ -0,0 +1,145 @@
1
+ # -*- coding:utf-8 -*-
2
+ # !/usr/bin/env python
3
+ """
4
+ Date: 2024/6/27 22:20
5
+ Desc: 上海证券交易所-产品-股票期权-每日统计
6
+ https://www.sse.com.cn/assortment/options/date/
7
+ 深圳证券交易所-市场数据-期权数据-日度概况
8
+ https://investor.szse.cn/market/option/day/index.html
9
+ """
10
+
11
+ import pandas as pd
12
+ import requests
13
+
14
+
15
+ def option_daily_stats_sse(date: str = "20240626") -> pd.DataFrame:
16
+ """
17
+ 上海证券交易所-产品-股票期权-每日统计
18
+ https://www.sse.com.cn/assortment/options/date/
19
+ :param date: 交易日
20
+ :type date: str
21
+ :return: 每日统计
22
+ :rtype: pandas.DataFrame
23
+ """
24
+ url = "http://query.sse.com.cn/commonQuery.do"
25
+ params = {
26
+ "isPagination": "false",
27
+ "sqlId": "COMMON_SSE_ZQPZ_YSP_QQ_SJTJ_MRTJ_CX",
28
+ "tradeDate": date,
29
+ }
30
+ headers = {
31
+ "Accept": "*/*",
32
+ "Accept-Encoding": "gzip, deflate",
33
+ "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8",
34
+ "Cache-Control": "no-cache",
35
+ "Connection": "keep-alive",
36
+ "Host": "query.sse.com.cn",
37
+ "Pragma": "no-cache",
38
+ "Referer": "https://www.sse.com.cn/",
39
+ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
40
+ "Chrome/101.0.4951.67 Safari/537.36",
41
+ }
42
+ r = requests.get(url, params=params, headers=headers)
43
+ data_json = r.json()
44
+ temp_df = pd.DataFrame(data_json["result"])
45
+ temp_df.rename(
46
+ columns={
47
+ "CONTRACT_VOLUME": "合约数量",
48
+ "CALL_VOLUME": "认购成交量",
49
+ "LEAVES_QTY": "未平仓合约总数",
50
+ "CP_RATE": "认沽/认购",
51
+ "PUT_VOLUME": "认沽成交量",
52
+ "TRADE_DATE": "交易日",
53
+ "TOTAL_MONEY": "总成交额",
54
+ "TOTAL_VOLUME": "总成交量",
55
+ "SECURITY_CODE": "合约标的代码",
56
+ "LEAVES_CALL_QTY": "未平仓认购合约数",
57
+ "LEAVES_PUT_QTY": "未平仓认沽合约数",
58
+ "SECURITY_ABBR": "合约标的名称",
59
+ },
60
+ inplace=True,
61
+ )
62
+ temp_df = temp_df[
63
+ [
64
+ "合约标的代码",
65
+ "合约标的名称",
66
+ "合约数量",
67
+ "总成交额",
68
+ "总成交量",
69
+ "认购成交量",
70
+ "认沽成交量",
71
+ "认沽/认购",
72
+ "未平仓合约总数",
73
+ "未平仓认购合约数",
74
+ "未平仓认沽合约数",
75
+ "交易日",
76
+ ]
77
+ ]
78
+ temp_df["交易日"] = pd.to_datetime(temp_df["交易日"], errors="coerce").dt.date
79
+ for item in temp_df.columns[2:-1]:
80
+ temp_df[item] = temp_df[item].str.replace(",", "")
81
+ temp_df[item] = pd.to_numeric(temp_df[item], errors="coerce")
82
+ return temp_df
83
+
84
+
85
+ def option_daily_stats_szse(date: str = "20240626") -> pd.DataFrame:
86
+ """
87
+ 深圳证券交易所-市场数据-期权数据-日度概况
88
+ https://investor.szse.cn/market/option/day/index.html
89
+ :param date: 交易日
90
+ :type date: str
91
+ :return: 每日统计
92
+ :rtype: pandas.DataFrame
93
+ """
94
+ url = "https://investor.szse.cn/api/report/ShowReport/data"
95
+ params = {
96
+ "SHOWTYPE": "JSON",
97
+ "CATALOGID": "ysprdzb",
98
+ "TABKEY": "tab1",
99
+ "txtQueryDate": "-".join([date[:4], date[4:6], date[6:]]),
100
+ "random": "0.0652692406565949",
101
+ }
102
+ r = requests.get(url, params=params)
103
+ data_json = r.json()
104
+ temp_df = pd.DataFrame(data_json[0]["data"])
105
+ temp_df.rename(
106
+ columns={
107
+ "bddm": "合约标的代码",
108
+ "bdmc": "合约标的名称",
109
+ "cjl": "成交量",
110
+ "rccjl": "认购成交量",
111
+ "rpcjl": "认沽成交量",
112
+ "rcrpccb": "认沽/认购持仓比",
113
+ "wpchyzs": "未平仓合约总数",
114
+ "wpcrchys": "未平仓认购合约数",
115
+ "wpcrphys": "未平仓认沽合约数",
116
+ },
117
+ inplace=True,
118
+ )
119
+ temp_df = temp_df[
120
+ [
121
+ "合约标的代码",
122
+ "合约标的名称",
123
+ "成交量",
124
+ "认购成交量",
125
+ "认沽成交量",
126
+ "认沽/认购持仓比",
127
+ "未平仓合约总数",
128
+ "未平仓认购合约数",
129
+ "未平仓认沽合约数",
130
+ ]
131
+ ]
132
+ temp_df["交易日"] = "-".join([date[:4], date[4:6], date[6:]])
133
+ temp_df["交易日"] = pd.to_datetime(temp_df["交易日"], errors="coerce").dt.date
134
+ for item in temp_df.columns[2:-1]:
135
+ temp_df[item] = temp_df[item].str.replace(",", "")
136
+ temp_df[item] = pd.to_numeric(temp_df[item], errors="coerce")
137
+ return temp_df
138
+
139
+
140
+ if __name__ == "__main__":
141
+ option_daily_stats_sse_df = option_daily_stats_sse(date="20240626")
142
+ print(option_daily_stats_sse_df)
143
+
144
+ option_daily_stats_szse_df = option_daily_stats_szse(date="20240626")
145
+ print(option_daily_stats_szse_df)
@@ -1,13 +1,14 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2024/1/31 16:30
4
+ Date: 2025/2/18 16:30
5
5
  Desc: 东方财富网-行情中心-期权市场
6
6
  https://quote.eastmoney.com/center/qqsc.html
7
7
  """
8
8
 
9
9
  import pandas as pd
10
10
  import requests
11
+ from akshare.utils.func import fetch_paginated_data
11
12
 
12
13
 
13
14
  def option_current_em() -> pd.DataFrame:
@@ -20,7 +21,7 @@ def option_current_em() -> pd.DataFrame:
20
21
  url = "https://23.push2.eastmoney.com/api/qt/clist/get"
21
22
  params = {
22
23
  "pn": "1",
23
- "pz": "200000",
24
+ "pz": "100",
24
25
  "po": "1",
25
26
  "np": "1",
26
27
  "ut": "bd1d9ddb04089700cf9c27f6f7426281",
@@ -30,13 +31,8 @@ def option_current_em() -> pd.DataFrame:
30
31
  "fs": "m:10,m:12,m:140,m:141,m:151,m:163,m:226",
31
32
  "fields": "f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,f20,f21,"
32
33
  "f23,f24,f25,f22,f28,f11,f62,f128,f136,f115,f152,f133,f108,f163,f161,f162",
33
- "_": "1606225274063",
34
34
  }
35
- r = requests.get(url, params=params)
36
- data_json = r.json()
37
- temp_df = pd.DataFrame(data_json["data"]["diff"])
38
- temp_df.reset_index(inplace=True)
39
- temp_df["index"] = temp_df["index"] + 1
35
+ temp_df = fetch_paginated_data(url=url, base_params=params)
40
36
  temp_df.columns = [
41
37
  "序号",
42
38
  "_",