akshare 1.14.49__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 (343) hide show
  1. akshare/__init__.py +595 -129
  2. akshare/air/air_hebei.py +77 -54
  3. akshare/air/air_zhenqi.py +0 -4
  4. akshare/air/cons.py +1 -0
  5. akshare/air/crypto.js +1 -1
  6. akshare/air/outcrypto.js +1 -1
  7. akshare/article/cons.py +1 -0
  8. akshare/article/epu_index.py +4 -3
  9. akshare/article/ff_factor.py +19 -8
  10. akshare/article/fred_md.py +4 -1
  11. akshare/article/risk_rv.py +3 -8
  12. akshare/bank/bank_cbirc_2020.py +11 -11
  13. akshare/bank/cons.py +7 -6
  14. akshare/bond/bond_buy_back_em.py +228 -0
  15. akshare/bond/bond_cb_sina.py +1 -0
  16. akshare/bond/bond_cb_ths.py +17 -9
  17. akshare/bond/bond_cbond.py +19 -14
  18. akshare/bond/bond_china.py +38 -39
  19. akshare/bond/bond_china_money.py +1 -1
  20. akshare/bond/bond_convert.py +10 -9
  21. akshare/bond/bond_em.py +37 -17
  22. akshare/bond/bond_summary.py +38 -37
  23. akshare/bond/bond_zh_cov.py +31 -40
  24. akshare/bond/bond_zh_sina.py +4 -0
  25. akshare/bond/cons.py +14 -11
  26. akshare/cal/__init__.py +0 -0
  27. akshare/cal/rv.py +170 -0
  28. akshare/cost/cost_living.py +7 -5
  29. akshare/crypto/__init__.py +1 -1
  30. akshare/crypto/crypto_bitcoin_cme.py +9 -7
  31. akshare/crypto/crypto_hold.py +4 -2
  32. akshare/currency/currency.py +1 -0
  33. akshare/currency/currency_china_bank_sina.py +11 -6
  34. akshare/data/__init__.py +1 -1
  35. akshare/data/cninfo.js +1 -1
  36. akshare/datasets.py +10 -21
  37. akshare/economic/cons.py +10 -3
  38. akshare/economic/macro_australia.py +74 -69
  39. akshare/economic/macro_bank.py +95 -653
  40. akshare/economic/macro_canada.py +92 -81
  41. akshare/economic/macro_china.py +97 -105
  42. akshare/economic/macro_china_hk.py +0 -1
  43. akshare/economic/macro_euro.py +103 -56
  44. akshare/economic/macro_finance_ths.py +7 -5
  45. akshare/economic/macro_germany.py +1 -1
  46. akshare/economic/macro_japan.py +0 -1
  47. akshare/economic/macro_other.py +1 -6
  48. akshare/economic/macro_swiss.py +2 -3
  49. akshare/economic/macro_uk.py +1 -1
  50. akshare/economic/macro_usa.py +7 -9
  51. akshare/economic/marco_cnbs.py +11 -6
  52. akshare/energy/energy_carbon.py +0 -1
  53. akshare/energy/energy_oil_em.py +1 -2
  54. akshare/event/cons.py +1 -0
  55. akshare/exceptions.py +43 -0
  56. akshare/file_fold/calendar.json +245 -2
  57. akshare/forex/__init__.py +0 -0
  58. akshare/forex/cons.py +192 -0
  59. akshare/forex/forex_em.py +149 -0
  60. akshare/fortune/fortune_500.py +1 -37
  61. akshare/fortune/fortune_bloomberg.py +6 -3
  62. akshare/fortune/fortune_forbes_500.py +3 -6
  63. akshare/fortune/fortune_hurun.py +2 -1
  64. akshare/fortune/fortune_xincaifu_500.py +17 -14
  65. akshare/fund/fund_announcement_em.py +145 -0
  66. akshare/fund/fund_aum_em.py +49 -35
  67. akshare/fund/fund_em.py +251 -220
  68. akshare/fund/fund_etf_em.py +44 -35
  69. akshare/fund/fund_etf_sina.py +75 -27
  70. akshare/fund/fund_etf_ths.py +2 -0
  71. akshare/fund/fund_fee_em.py +172 -0
  72. akshare/fund/fund_fhsp_em.py +42 -32
  73. akshare/fund/fund_init_em.py +8 -5
  74. akshare/fund/fund_lof_em.py +12 -19
  75. akshare/fund/fund_manager.py +25 -11
  76. akshare/fund/fund_overview_em.py +42 -0
  77. akshare/fund/fund_portfolio_em.py +23 -21
  78. akshare/fund/fund_position_lg.py +19 -8
  79. akshare/fund/fund_rank_em.py +2 -5
  80. akshare/fund/fund_rating.py +33 -12
  81. akshare/fund/fund_scale_em.py +24 -13
  82. akshare/fund/fund_scale_sina.py +20 -10
  83. akshare/fund/fund_xq.py +3 -2
  84. akshare/futures/cons.py +135 -39
  85. akshare/futures/cot.py +55 -56
  86. akshare/futures/futures_basis.py +49 -11
  87. akshare/futures/futures_comex_em.py +1 -0
  88. akshare/futures/futures_comm_ctp.py +1 -1
  89. akshare/futures/futures_contract_detail.py +59 -9
  90. akshare/futures/futures_daily_bar.py +66 -59
  91. akshare/futures/futures_foreign.py +14 -8
  92. akshare/futures/futures_hf_em.py +215 -61
  93. akshare/futures/futures_hist_em.py +191 -0
  94. akshare/futures/futures_hq_sina.py +5 -3
  95. akshare/futures/futures_index_ccidx.py +24 -82
  96. akshare/futures/futures_inventory_99.py +70 -272
  97. akshare/futures/futures_inventory_em.py +14 -11
  98. akshare/futures/futures_news_shmet.py +2 -2
  99. akshare/futures/futures_roll_yield.py +11 -24
  100. akshare/futures/futures_rule.py +7 -3
  101. akshare/futures/futures_rule_em.py +38 -0
  102. akshare/futures/futures_settlement_price_sgx.py +21 -6
  103. akshare/futures/futures_stock_js.py +0 -1
  104. akshare/futures/futures_to_spot.py +5 -6
  105. akshare/futures/futures_warehouse_receipt.py +48 -47
  106. akshare/futures/futures_zh_sina.py +3 -3
  107. akshare/futures/receipt.py +298 -165
  108. akshare/futures/requests_fun.py +16 -3
  109. akshare/futures/symbol_var.py +32 -13
  110. akshare/futures_derivative/cons.py +100 -103
  111. akshare/futures_derivative/futures_contract_info_cffex.py +55 -39
  112. akshare/futures_derivative/futures_contract_info_czce.py +2 -0
  113. akshare/futures_derivative/futures_contract_info_dce.py +43 -17
  114. akshare/futures_derivative/futures_contract_info_gfex.py +43 -31
  115. akshare/futures_derivative/futures_contract_info_ine.py +43 -34
  116. akshare/futures_derivative/futures_contract_info_shfe.py +3 -4
  117. akshare/futures_derivative/futures_cot_sina.py +8 -6
  118. akshare/futures_derivative/futures_index_sina.py +25 -13
  119. akshare/fx/cons.py +12 -7
  120. akshare/fx/fx_c_swap_cm.py +62 -0
  121. akshare/fx/fx_quote.py +3 -2
  122. akshare/fx/fx_quote_baidu.py +2 -1
  123. akshare/hf/__init__.py +1 -1
  124. akshare/hf/hf_sp500.py +8 -7
  125. akshare/index/cons.py +132 -28
  126. akshare/index/index_cni.py +7 -7
  127. akshare/index/index_cons.py +2 -2
  128. akshare/index/index_csindex.py +68 -0
  129. akshare/index/index_cx.py +20 -20
  130. akshare/index/index_drewry.py +17 -16
  131. akshare/index/index_eri.py +1 -0
  132. akshare/index/index_global_em.py +167 -0
  133. akshare/index/index_global_sina.py +82 -0
  134. akshare/index/index_kq_fz.py +17 -14
  135. akshare/index/index_kq_ss.py +1 -0
  136. akshare/index/index_option_qvix.py +351 -16
  137. akshare/index/index_research_sw.py +21 -21
  138. akshare/index/index_spot.py +9 -5
  139. akshare/index/index_stock_hk.py +5 -9
  140. akshare/index/index_stock_zh.py +111 -24
  141. akshare/index/index_stock_zh_csindex.py +3 -367
  142. akshare/index/index_sugar.py +18 -4
  143. akshare/index/index_sw.py +10 -2
  144. akshare/index/index_yw.py +53 -75
  145. akshare/index/index_zh_em.py +15 -82
  146. akshare/interest_rate/interbank_rate_em.py +0 -1
  147. akshare/movie/jm.js +0 -1
  148. akshare/news/__init__.py +1 -1
  149. akshare/news/news_baidu.py +395 -222
  150. akshare/news/news_stock.py +49 -16
  151. akshare/option/cons.py +2 -2
  152. akshare/option/option_commodity.py +341 -220
  153. akshare/option/option_commodity_sina.py +22 -26
  154. akshare/option/option_contract_info_ctp.py +63 -0
  155. akshare/option/option_current_sse.py +61 -0
  156. akshare/option/option_current_szse.py +84 -0
  157. akshare/option/option_czce.py +37 -9
  158. akshare/option/option_daily_stats_sse_szse.py +0 -1
  159. akshare/option/option_em.py +4 -8
  160. akshare/option/option_finance.py +60 -12
  161. akshare/option/option_finance_sina.py +7 -7
  162. akshare/option/option_lhb_em.py +0 -1
  163. akshare/option/option_margin.py +62 -0
  164. akshare/option/option_premium_analysis_em.py +58 -53
  165. akshare/option/option_risk_analysis_em.py +11 -8
  166. akshare/option/option_risk_indicator_sse.py +3 -4
  167. akshare/option/option_value_analysis_em.py +62 -55
  168. akshare/other/__init__.py +1 -1
  169. akshare/pro/__init__.py +0 -1
  170. akshare/pro/client.py +6 -4
  171. akshare/pro/cons.py +3 -2
  172. akshare/pro/data_pro.py +6 -5
  173. akshare/qdii/__init__.py +0 -0
  174. akshare/qdii/qdii_jsl.py +233 -0
  175. akshare/qhkc/__init__.py +1 -6
  176. akshare/qhkc/qhkc_api.py +64 -22
  177. akshare/qhkc_web/__init__.py +1 -6
  178. akshare/qhkc_web/qhkc_fund.py +10 -6
  179. akshare/qhkc_web/qhkc_index.py +28 -14
  180. akshare/qhkc_web/qhkc_tool.py +62 -59
  181. akshare/rate/__init__.py +1 -1
  182. akshare/rate/repo_rate.py +36 -32
  183. akshare/reits/__init__.py +1 -1
  184. akshare/reits/reits_basic.py +149 -13
  185. akshare/request.py +117 -0
  186. akshare/spot/__init__.py +1 -1
  187. akshare/spot/spot_hog_soozhu.py +165 -3
  188. akshare/spot/spot_sge.py +70 -9
  189. akshare/stock/cons.py +60 -23
  190. akshare/stock/stock_allotment_cninfo.py +8 -8
  191. akshare/stock/stock_ask_bid_em.py +3 -78
  192. akshare/stock/stock_board_concept_em.py +160 -35
  193. akshare/stock/stock_board_industry_em.py +163 -70
  194. akshare/stock/stock_dividend_cninfo.py +31 -17
  195. akshare/stock/stock_dzjy_em.py +347 -260
  196. akshare/stock/stock_fund_em.py +72 -64
  197. akshare/stock/stock_fund_hold.py +1 -2
  198. akshare/stock/stock_gsrl_em.py +1 -0
  199. akshare/stock/stock_hk_comparison_em.py +175 -0
  200. akshare/stock/stock_hk_famous.py +4 -5
  201. akshare/stock/stock_hk_fhpx_ths.py +2 -1
  202. akshare/stock/stock_hk_hot_rank_em.py +1 -0
  203. akshare/stock/stock_hk_sina.py +84 -36
  204. akshare/stock/stock_hold_control_cninfo.py +82 -0
  205. akshare/stock/stock_hold_control_em.py +0 -2
  206. akshare/stock/stock_hot_rank_em.py +4 -1
  207. akshare/stock/stock_hot_search_baidu.py +32 -19
  208. akshare/stock/stock_hot_up_em.py +4 -1
  209. akshare/stock/stock_hsgt_em.py +155 -0
  210. akshare/stock/stock_industry.py +1 -0
  211. akshare/stock/stock_industry_cninfo.py +1 -2
  212. akshare/stock/stock_info.py +6 -4
  213. akshare/stock/stock_info_em.py +17 -11
  214. akshare/stock/stock_intraday_em.py +4 -78
  215. akshare/stock/stock_intraday_sina.py +2 -2
  216. akshare/stock/stock_news_cx.py +39 -0
  217. akshare/stock/stock_profile_cninfo.py +7 -7
  218. akshare/stock/stock_profile_em.py +302 -0
  219. akshare/stock/stock_rank_forecast.py +6 -5
  220. akshare/stock/stock_repurchase_em.py +7 -2
  221. akshare/stock/stock_share_changes_cninfo.py +7 -5
  222. akshare/stock/stock_share_hold.py +24 -20
  223. akshare/stock/stock_stop.py +6 -6
  224. akshare/stock/stock_summary.py +153 -417
  225. akshare/stock/stock_us_famous.py +5 -6
  226. akshare/stock/stock_us_js.py +3 -2
  227. akshare/stock/stock_us_pink.py +38 -27
  228. akshare/stock/stock_us_sina.py +7 -3
  229. akshare/stock/stock_weibo_nlp.py +18 -20
  230. akshare/stock/stock_xq.py +24 -22
  231. akshare/stock/stock_zh_a_sina.py +8 -5
  232. akshare/stock/stock_zh_a_special.py +240 -243
  233. akshare/stock/stock_zh_a_tick_tx.py +11 -3
  234. akshare/stock/stock_zh_ah_tx.py +23 -26
  235. akshare/stock/stock_zh_b_sina.py +2 -2
  236. akshare/stock/stock_zh_comparison_em.py +250 -0
  237. akshare/stock/stock_zh_kcb_sina.py +67 -64
  238. akshare/stock_a/__init__.py +0 -0
  239. akshare/stock_a/stock_board_concept_name_em.py +170 -0
  240. akshare/stock_a/stock_individual_fund_flow_rank.py +258 -0
  241. akshare/stock_a/stock_zh_a_spot.py +212 -0
  242. akshare/stock_feature/cons.py +1 -0
  243. akshare/stock_feature/stock_a_indicator.py +9 -54
  244. akshare/stock_feature/stock_a_pe_and_pb.py +23 -5
  245. akshare/stock_feature/stock_account_em.py +0 -1
  246. akshare/stock_feature/stock_all_pb.py +2 -1
  247. akshare/stock_feature/stock_analyst_em.py +36 -30
  248. akshare/stock_feature/stock_board_concept_ths.py +328 -0
  249. akshare/stock_feature/stock_board_industry_ths.py +57 -2
  250. akshare/stock_feature/stock_buffett_index_lg.py +10 -8
  251. akshare/stock_feature/stock_classify_sina.py +3 -6
  252. akshare/stock_feature/stock_comment_em.py +81 -144
  253. akshare/stock_feature/stock_congestion_lg.py +2 -1
  254. akshare/stock_feature/stock_cyq_em.py +5 -11
  255. akshare/stock_feature/stock_disclosure_cninfo.py +6 -6
  256. akshare/stock_feature/stock_dxsyl_em.py +121 -74
  257. akshare/stock_feature/stock_ebs_lg.py +5 -4
  258. akshare/stock_feature/stock_esg_sina.py +29 -7
  259. akshare/stock_feature/stock_fhps_em.py +2 -1
  260. akshare/stock_feature/stock_fhps_ths.py +15 -7
  261. akshare/stock_feature/stock_fund_flow.py +30 -22
  262. akshare/stock_feature/stock_gddh_em.py +19 -11
  263. akshare/stock_feature/stock_gdfx_em.py +226 -113
  264. akshare/stock_feature/stock_gdhs.py +75 -50
  265. akshare/stock_feature/stock_gdzjc_em.py +21 -10
  266. akshare/stock_feature/stock_gpzy_em.py +78 -46
  267. akshare/stock_feature/stock_gxl_lg.py +3 -2
  268. akshare/stock_feature/stock_hist_em.py +137 -234
  269. akshare/stock_feature/stock_hist_tx.py +13 -10
  270. akshare/stock_feature/stock_hk_valuation_baidu.py +20 -8
  271. akshare/stock_feature/stock_hot_xq.py +4 -6
  272. akshare/stock_feature/stock_hsgt_em.py +269 -97
  273. akshare/stock_feature/stock_hsgt_exchange_rate.py +115 -87
  274. akshare/stock_feature/stock_hsgt_min_em.py +13 -16
  275. akshare/stock_feature/stock_info.py +7 -80
  276. akshare/stock_feature/stock_inner_trade_xq.py +38 -31
  277. akshare/stock_feature/stock_jgdy_em.py +43 -40
  278. akshare/stock_feature/stock_lhb_em.py +119 -3
  279. akshare/stock_feature/stock_margin_em.py +0 -1
  280. akshare/stock_feature/stock_margin_sse.py +0 -2
  281. akshare/stock_feature/stock_pankou_em.py +71 -35
  282. akshare/stock_feature/stock_qsjy_em.py +13 -4
  283. akshare/stock_feature/stock_report_em.py +151 -7
  284. akshare/stock_feature/stock_research_report_em.py +55 -20
  285. akshare/stock_feature/stock_sy_em.py +20 -15
  286. akshare/stock_feature/stock_technology_ths.py +122 -77
  287. akshare/stock_feature/stock_tfp_em.py +2 -1
  288. akshare/stock_feature/stock_three_report_em.py +21 -5
  289. akshare/stock_feature/stock_ttm_lyr.py +18 -9
  290. akshare/stock_feature/stock_value_em.py +83 -0
  291. akshare/stock_feature/stock_yjbb_em.py +58 -32
  292. akshare/stock_feature/stock_yjyg_cninfo.py +6 -2
  293. akshare/stock_feature/stock_yjyg_em.py +1 -1
  294. akshare/stock_feature/stock_yzxdr_em.py +24 -22
  295. akshare/stock_feature/stock_zdhtmx_em.py +20 -6
  296. akshare/stock_feature/stock_zh_vote_baidu.py +4 -1
  297. akshare/stock_feature/stock_ztb_em.py +39 -24
  298. akshare/stock_fundamental/__init__.py +1 -1
  299. akshare/stock_fundamental/stock_basic_info_xq.py +119 -0
  300. akshare/stock_fundamental/{stock_finance_hk.py → stock_finance_hk_em.py} +23 -16
  301. akshare/stock_fundamental/{stock_finance.py → stock_finance_sina.py} +60 -7
  302. akshare/stock_fundamental/stock_finance_ths.py +524 -57
  303. akshare/stock_fundamental/stock_finance_us_em.py +268 -0
  304. akshare/stock_fundamental/stock_gbjg_em.py +80 -0
  305. akshare/stock_fundamental/stock_hold.py +26 -17
  306. akshare/stock_fundamental/stock_ipo_declare.py +1 -0
  307. akshare/stock_fundamental/stock_kcb_detail_sse.py +10 -10
  308. akshare/stock_fundamental/stock_kcb_sse.py +26 -25
  309. akshare/stock_fundamental/stock_notice.py +12 -3
  310. akshare/stock_fundamental/stock_profit_forecast_em.py +31 -13
  311. akshare/stock_fundamental/stock_profit_forecast_hk_etnet.py +64 -41
  312. akshare/stock_fundamental/stock_profit_forecast_ths.py +86 -35
  313. akshare/stock_fundamental/stock_recommend.py +20 -4
  314. akshare/stock_fundamental/stock_zygc.py +5 -62
  315. akshare/utils/context.py +43 -0
  316. akshare/utils/demjson.py +2009 -1338
  317. akshare/utils/func.py +49 -2
  318. akshare/utils/multi_decrypt.py +53 -0
  319. akshare/utils/token_process.py +6 -5
  320. {akshare-1.14.49.dist-info → akshare-1.17.99.dist-info}/METADATA +54 -80
  321. akshare-1.17.99.dist-info/RECORD +409 -0
  322. {akshare-1.14.49.dist-info → akshare-1.17.99.dist-info}/WHEEL +1 -1
  323. {akshare-1.14.49.dist-info → akshare-1.17.99.dist-info/licenses}/LICENSE +1 -1
  324. tests/test_func.py +3 -5
  325. akshare/bond/bond_futures.py +0 -50
  326. akshare/bond/bond_investing.py +0 -139
  327. akshare/crypto/crypto_hist_investing.py +0 -249
  328. akshare/fund/fund_announcement.py +0 -56
  329. akshare/futures/futures_international.py +0 -170
  330. akshare/futures/futures_news_baidu.py +0 -54
  331. akshare/futures/inventory_data.py +0 -100
  332. akshare/futures_derivative/futures_index_price_nh.py +0 -61
  333. akshare/futures_derivative/futures_index_return_nh.py +0 -47
  334. akshare/futures_derivative/futures_index_volatility_nh.py +0 -53
  335. akshare/futures_derivative/futures_other_index_nh.py +0 -145
  336. akshare/index/index_fear_greed_funddb.py +0 -78
  337. akshare/index/index_investing.py +0 -232
  338. akshare/sport/__init__.py +0 -6
  339. akshare/sport/sport_olympic.py +0 -27
  340. akshare/stock_feature/stock_wencai.py +0 -104
  341. akshare/stock_fundamental/stock_mda_ym.py +0 -40
  342. akshare-1.14.49.dist-info/RECORD +0 -387
  343. {akshare-1.14.49.dist-info → akshare-1.17.99.dist-info}/top_level.txt +0 -0
@@ -7,7 +7,22 @@ Desc: 50 ETF 期权波动率指数 QVIX
7
7
  http://1.optbbs.com/s/vix.shtml?50ETF
8
8
  http://1.optbbs.com/s/vix.shtml?300ETF
9
9
  """
10
+
10
11
  import pandas as pd
12
+ from functools import lru_cache
13
+
14
+
15
+ @lru_cache
16
+ def __get_optbbs_daily() -> pd.DataFrame:
17
+ """
18
+ 读取原始数据
19
+ http://1.optbbs.com/d/csv/d/k.csv
20
+ :return: 原始数据
21
+ :rtype: pandas.DataFrame
22
+ """
23
+ url = "http://1.optbbs.com/d/csv/d/k.csv"
24
+ temp_df = pd.read_csv(url, encoding="gbk")
25
+ return temp_df
11
26
 
12
27
 
13
28
  def index_option_50etf_qvix() -> pd.DataFrame:
@@ -17,8 +32,7 @@ def index_option_50etf_qvix() -> pd.DataFrame:
17
32
  :return: 50ETF 期权波动率指数 QVIX
18
33
  :rtype: pandas.DataFrame
19
34
  """
20
- url = "http://1.optbbs.com/d/csv/d/k.csv"
21
- temp_df = pd.read_csv(url).iloc[:, :5]
35
+ temp_df = __get_optbbs_daily().iloc[:, :5]
22
36
  temp_df.columns = [
23
37
  "date",
24
38
  "open",
@@ -26,11 +40,11 @@ def index_option_50etf_qvix() -> pd.DataFrame:
26
40
  "low",
27
41
  "close",
28
42
  ]
29
- temp_df["date"] = pd.to_datetime(temp_df["date"], errors="coerce").dt.date
30
- temp_df['open'] = pd.to_numeric(temp_df['open'], errors="coerce")
31
- temp_df['high'] = pd.to_numeric(temp_df['high'], errors="coerce")
32
- temp_df['low'] = pd.to_numeric(temp_df['low'], errors="coerce")
33
- temp_df['close'] = pd.to_numeric(temp_df['close'], errors="coerce")
43
+ temp_df.loc[:, "date"] = pd.to_datetime(temp_df["date"], errors="coerce").dt.date
44
+ temp_df.loc[:, "open"] = pd.to_numeric(temp_df["open"], errors="coerce")
45
+ temp_df.loc[:, "high"] = pd.to_numeric(temp_df["high"], errors="coerce")
46
+ temp_df.loc[:, "low"] = pd.to_numeric(temp_df["low"], errors="coerce")
47
+ temp_df.loc[:, "close"] = pd.to_numeric(temp_df["close"], errors="coerce")
34
48
  return temp_df
35
49
 
36
50
 
@@ -47,7 +61,7 @@ def index_option_50etf_min_qvix() -> pd.DataFrame:
47
61
  "time",
48
62
  "qvix",
49
63
  ]
50
- temp_df['qvix'] = pd.to_numeric(temp_df['qvix'], errors="coerce")
64
+ temp_df.loc[:, "qvix"] = pd.to_numeric(temp_df["qvix"], errors="coerce")
51
65
  return temp_df
52
66
 
53
67
 
@@ -58,8 +72,7 @@ def index_option_300etf_qvix() -> pd.DataFrame:
58
72
  :return: 300 ETF 期权波动率指数 QVIX
59
73
  :rtype: pandas.DataFrame
60
74
  """
61
- url = "http://1.optbbs.com/d/csv/d/k.csv"
62
- temp_df = pd.read_csv(url).iloc[:, [0, 9, 10, 11, 12]]
75
+ temp_df = __get_optbbs_daily().iloc[:, [0, 9, 10, 11, 12]]
63
76
  temp_df.columns = [
64
77
  "date",
65
78
  "open",
@@ -67,11 +80,11 @@ def index_option_300etf_qvix() -> pd.DataFrame:
67
80
  "low",
68
81
  "close",
69
82
  ]
70
- temp_df["date"] = pd.to_datetime(temp_df["date"], errors="coerce").dt.date
71
- temp_df['open'] = pd.to_numeric(temp_df['open'], errors="coerce")
72
- temp_df['high'] = pd.to_numeric(temp_df['high'], errors="coerce")
73
- temp_df['low'] = pd.to_numeric(temp_df['low'], errors="coerce")
74
- temp_df['close'] = pd.to_numeric(temp_df['close'], errors="coerce")
83
+ temp_df.loc[:, "date"] = pd.to_datetime(temp_df["date"], errors="coerce").dt.date
84
+ temp_df.loc[:, "open"] = pd.to_numeric(temp_df["open"], errors="coerce")
85
+ temp_df.loc[:, "high"] = pd.to_numeric(temp_df["high"], errors="coerce")
86
+ temp_df.loc[:, "low"] = pd.to_numeric(temp_df["low"], errors="coerce")
87
+ temp_df.loc[:, "close"] = pd.to_numeric(temp_df["close"], errors="coerce")
75
88
  return temp_df
76
89
 
77
90
 
@@ -88,7 +101,287 @@ def index_option_300etf_min_qvix() -> pd.DataFrame:
88
101
  "time",
89
102
  "qvix",
90
103
  ]
91
- temp_df['qvix'] = pd.to_numeric(temp_df['qvix'], errors="coerce")
104
+ temp_df.loc[:, "qvix"] = pd.to_numeric(temp_df["qvix"], errors="coerce")
105
+ return temp_df
106
+
107
+
108
+ def index_option_500etf_qvix() -> pd.DataFrame:
109
+ """
110
+ 500 ETF 期权波动率指数 QVIX
111
+ http://1.optbbs.com/s/vix.shtml?500ETF
112
+ :return: 500 ETF 期权波动率指数 QVIX
113
+ :rtype: pandas.DataFrame
114
+ """
115
+ temp_df = __get_optbbs_daily().iloc[:, [0, 67, 68, 69, 70]]
116
+ temp_df.columns = [
117
+ "date",
118
+ "open",
119
+ "high",
120
+ "low",
121
+ "close",
122
+ ]
123
+ temp_df.loc[:, "date"] = pd.to_datetime(temp_df["date"], errors="coerce").dt.date
124
+ temp_df.loc[:, "open"] = pd.to_numeric(temp_df["open"], errors="coerce")
125
+ temp_df.loc[:, "high"] = pd.to_numeric(temp_df["high"], errors="coerce")
126
+ temp_df.loc[:, "low"] = pd.to_numeric(temp_df["low"], errors="coerce")
127
+ temp_df.loc[:, "close"] = pd.to_numeric(temp_df["close"], errors="coerce")
128
+ return temp_df
129
+
130
+
131
+ def index_option_500etf_min_qvix() -> pd.DataFrame:
132
+ """
133
+ 500 ETF 期权波动率指数 QVIX-分时
134
+ http://1.optbbs.com/s/vix.shtml?500ETF
135
+ :return: 500 ETF 期权波动率指数 QVIX-分时
136
+ :rtype: pandas.DataFrame
137
+ """
138
+ url = "http://1.optbbs.com/d/csv/d/vix500.csv"
139
+ temp_df = pd.read_csv(url).iloc[:, :2]
140
+ temp_df.columns = [
141
+ "time",
142
+ "qvix",
143
+ ]
144
+ temp_df.loc[:, "qvix"] = pd.to_numeric(temp_df["qvix"], errors="coerce")
145
+ return temp_df
146
+
147
+
148
+ def index_option_cyb_qvix() -> pd.DataFrame:
149
+ """
150
+ 创业板 期权波动率指数 QVIX
151
+ http://1.optbbs.com/s/vix.shtml?CYB
152
+ :return: 创业板 期权波动率指数 QVIX
153
+ :rtype: pandas.DataFrame
154
+ """
155
+ temp_df = __get_optbbs_daily().iloc[:, [0, 71, 72, 73, 74]]
156
+ temp_df.columns = [
157
+ "date",
158
+ "open",
159
+ "high",
160
+ "low",
161
+ "close",
162
+ ]
163
+ temp_df.loc[:, "date"] = pd.to_datetime(temp_df["date"], errors="coerce").dt.date
164
+ temp_df.loc[:, "open"] = pd.to_numeric(temp_df["open"], errors="coerce")
165
+ temp_df.loc[:, "high"] = pd.to_numeric(temp_df["high"], errors="coerce")
166
+ temp_df.loc[:, "low"] = pd.to_numeric(temp_df["low"], errors="coerce")
167
+ temp_df.loc[:, "close"] = pd.to_numeric(temp_df["close"], errors="coerce")
168
+ return temp_df
169
+
170
+
171
+ def index_option_cyb_min_qvix() -> pd.DataFrame:
172
+ """
173
+ 创业板 期权波动率指数 QVIX-分时
174
+ http://1.optbbs.com/s/vix.shtml?CYB
175
+ :return: 创业板 期权波动率指数 QVIX-分时
176
+ :rtype: pandas.DataFrame
177
+ """
178
+ url = "http://1.optbbs.com/d/csv/d/vixcyb.csv"
179
+ temp_df = pd.read_csv(url).iloc[:, :2]
180
+ temp_df.columns = [
181
+ "time",
182
+ "qvix",
183
+ ]
184
+ temp_df.loc[:, "qvix"] = pd.to_numeric(temp_df["qvix"], errors="coerce")
185
+ return temp_df
186
+
187
+
188
+ def index_option_kcb_qvix() -> pd.DataFrame:
189
+ """
190
+ 科创板 期权波动率指数 QVIX
191
+ http://1.optbbs.com/s/vix.shtml?KCB
192
+ :return: 科创板 期权波动率指数 QVIX
193
+ :rtype: pandas.DataFrame
194
+ """
195
+ temp_df = __get_optbbs_daily().iloc[:, [0, 83, 84, 85, 86]]
196
+ temp_df.columns = [
197
+ "date",
198
+ "open",
199
+ "high",
200
+ "low",
201
+ "close",
202
+ ]
203
+ temp_df.loc[:, "date"] = pd.to_datetime(temp_df["date"], errors="coerce").dt.date
204
+ temp_df.loc[:, "open"] = pd.to_numeric(temp_df["open"], errors="coerce")
205
+ temp_df.loc[:, "high"] = pd.to_numeric(temp_df["high"], errors="coerce")
206
+ temp_df.loc[:, "low"] = pd.to_numeric(temp_df["low"], errors="coerce")
207
+ temp_df.loc[:, "close"] = pd.to_numeric(temp_df["close"], errors="coerce")
208
+ return temp_df
209
+
210
+
211
+ def index_option_kcb_min_qvix() -> pd.DataFrame:
212
+ """
213
+ 科创板 期权波动率指数 QVIX-分时
214
+ http://1.optbbs.com/s/vix.shtml?KCB
215
+ :return: 科创板 期权波动率指数 QVIX-分时
216
+ :rtype: pandas.DataFrame
217
+ """
218
+ url = "http://1.optbbs.com/d/csv/d/vixkcb.csv"
219
+ temp_df = pd.read_csv(url).iloc[:, :2]
220
+ temp_df.columns = [
221
+ "time",
222
+ "qvix",
223
+ ]
224
+ temp_df.loc[:, "qvix"] = pd.to_numeric(temp_df["qvix"], errors="coerce")
225
+ return temp_df
226
+
227
+
228
+ def index_option_100etf_qvix() -> pd.DataFrame:
229
+ """
230
+ 深证100ETF 期权波动率指数 QVIX
231
+ http://1.optbbs.com/s/vix.shtml?100ETF
232
+ :return: 深证100ETF 期权波动率指数 QVIX
233
+ :rtype: pandas.DataFrame
234
+ """
235
+ temp_df = __get_optbbs_daily().iloc[:, [0, 75, 76, 77, 78]]
236
+ temp_df.columns = [
237
+ "date",
238
+ "open",
239
+ "high",
240
+ "low",
241
+ "close",
242
+ ]
243
+ temp_df.loc[:, "date"] = pd.to_datetime(temp_df["date"], errors="coerce").dt.date
244
+ temp_df.loc[:, "open"] = pd.to_numeric(temp_df["open"], errors="coerce")
245
+ temp_df.loc[:, "high"] = pd.to_numeric(temp_df["high"], errors="coerce")
246
+ temp_df.loc[:, "low"] = pd.to_numeric(temp_df["low"], errors="coerce")
247
+ temp_df.loc[:, "close"] = pd.to_numeric(temp_df["close"], errors="coerce")
248
+ return temp_df
249
+
250
+
251
+ def index_option_100etf_min_qvix() -> pd.DataFrame:
252
+ """
253
+ 深证100ETF 期权波动率指数 QVIX-分时
254
+ http://1.optbbs.com/s/vix.shtml?100ETF
255
+ :return: 深证100ETF 期权波动率指数 QVIX-分时
256
+ :rtype: pandas.DataFrame
257
+ """
258
+ url = "http://1.optbbs.com/d/csv/d/vix100.csv"
259
+ temp_df = pd.read_csv(url).iloc[:, :2]
260
+ temp_df.columns = [
261
+ "time",
262
+ "qvix",
263
+ ]
264
+ temp_df.loc[:, "qvix"] = pd.to_numeric(temp_df["qvix"], errors="coerce")
265
+ return temp_df
266
+
267
+
268
+ def index_option_300index_qvix() -> pd.DataFrame:
269
+ """
270
+ 中证300股指 期权波动率指数 QVIX
271
+ http://1.optbbs.com/s/vix.shtml?Index
272
+ :return: 中证300股指 期权波动率指数 QVIX
273
+ :rtype: pandas.DataFrame
274
+ """
275
+ temp_df = __get_optbbs_daily().iloc[:, [0, 17, 18, 19, 20]]
276
+ temp_df.columns = [
277
+ "date",
278
+ "open",
279
+ "high",
280
+ "low",
281
+ "close",
282
+ ]
283
+ temp_df.loc[:, "date"] = pd.to_datetime(temp_df["date"], errors="coerce").dt.date
284
+ temp_df.loc[:, "open"] = pd.to_numeric(temp_df["open"], errors="coerce")
285
+ temp_df.loc[:, "high"] = pd.to_numeric(temp_df["high"], errors="coerce")
286
+ temp_df.loc[:, "low"] = pd.to_numeric(temp_df["low"], errors="coerce")
287
+ temp_df.loc[:, "close"] = pd.to_numeric(temp_df["close"], errors="coerce")
288
+ return temp_df
289
+
290
+
291
+ def index_option_300index_min_qvix() -> pd.DataFrame:
292
+ """
293
+ 中证300股指 期权波动率指数 QVIX-分时
294
+ http://1.optbbs.com/s/vix.shtml?Index
295
+ :return: 中证300股指 期权波动率指数 QVIX-分时
296
+ :rtype: pandas.DataFrame
297
+ """
298
+ url = "http://1.optbbs.com/d/csv/d/vixindex.csv"
299
+ temp_df = pd.read_csv(url).iloc[:, :2]
300
+ temp_df.columns = [
301
+ "time",
302
+ "qvix",
303
+ ]
304
+ temp_df.loc[:, "qvix"] = pd.to_numeric(temp_df["qvix"], errors="coerce")
305
+ return temp_df
306
+
307
+
308
+ def index_option_1000index_qvix() -> pd.DataFrame:
309
+ """
310
+ 中证1000股指 期权波动率指数 QVIX
311
+ http://1.optbbs.com/s/vix.shtml?Index1000
312
+ :return: 中证1000股指 期权波动率指数 QVIX
313
+ :rtype: pandas.DataFrame
314
+ """
315
+ temp_df = __get_optbbs_daily().iloc[:, [0, 25, 26, 27, 28]]
316
+ temp_df.columns = [
317
+ "date",
318
+ "open",
319
+ "high",
320
+ "low",
321
+ "close",
322
+ ]
323
+ temp_df.loc[:, "date"] = pd.to_datetime(temp_df["date"], errors="coerce").dt.date
324
+ temp_df.loc[:, "open"] = pd.to_numeric(temp_df["open"], errors="coerce")
325
+ temp_df.loc[:, "high"] = pd.to_numeric(temp_df["high"], errors="coerce")
326
+ temp_df.loc[:, "low"] = pd.to_numeric(temp_df["low"], errors="coerce")
327
+ temp_df.loc[:, "close"] = pd.to_numeric(temp_df["close"], errors="coerce")
328
+ return temp_df
329
+
330
+
331
+ def index_option_1000index_min_qvix() -> pd.DataFrame:
332
+ """
333
+ 中证1000股指 期权波动率指数 QVIX-分时
334
+ http://1.optbbs.com/s/vix.shtml?Index1000
335
+ :return: 中证1000股指 期权波动率指数 QVIX-分时
336
+ :rtype: pandas.DataFrame
337
+ """
338
+ url = "http://1.optbbs.com/d/csv/d/vixindex1000.csv"
339
+ temp_df = pd.read_csv(url).iloc[:, :2]
340
+ temp_df.columns = [
341
+ "time",
342
+ "qvix",
343
+ ]
344
+ temp_df.loc[:, "qvix"] = pd.to_numeric(temp_df["qvix"], errors="coerce")
345
+ return temp_df
346
+
347
+
348
+ def index_option_50index_qvix() -> pd.DataFrame:
349
+ """
350
+ 上证50股指 期权波动率指数 QVIX
351
+ http://1.optbbs.com/s/vix.shtml?50index
352
+ :return: 上证50股指 期权波动率指数 QVIX
353
+ :rtype: pandas.DataFrame
354
+ """
355
+ temp_df = __get_optbbs_daily().iloc[:, [0, 79, 80, 81, 82]]
356
+ temp_df.columns = [
357
+ "date",
358
+ "open",
359
+ "high",
360
+ "low",
361
+ "close",
362
+ ]
363
+ temp_df.loc[:, "date"] = pd.to_datetime(temp_df["date"], errors="coerce").dt.date
364
+ temp_df.loc[:, "open"] = pd.to_numeric(temp_df["open"], errors="coerce")
365
+ temp_df.loc[:, "high"] = pd.to_numeric(temp_df["high"], errors="coerce")
366
+ temp_df.loc[:, "low"] = pd.to_numeric(temp_df["low"], errors="coerce")
367
+ temp_df.loc[:, "close"] = pd.to_numeric(temp_df["close"], errors="coerce")
368
+ return temp_df
369
+
370
+
371
+ def index_option_50index_min_qvix() -> pd.DataFrame:
372
+ """
373
+ 上证50股指 期权波动率指数 QVIX-分时
374
+ http://1.optbbs.com/s/vix.shtml?50index
375
+ :return: 上证50股指 期权波动率指数 QVIX-分时
376
+ :rtype: pandas.DataFrame
377
+ """
378
+ url = "http://1.optbbs.com/d/csv/d/vix50index.csv"
379
+ temp_df = pd.read_csv(url).iloc[:, :2]
380
+ temp_df.columns = [
381
+ "time",
382
+ "qvix",
383
+ ]
384
+ temp_df.loc[:, "qvix"] = pd.to_numeric(temp_df["qvix"], errors="coerce")
92
385
  return temp_df
93
386
 
94
387
 
@@ -104,3 +397,45 @@ if __name__ == "__main__":
104
397
 
105
398
  index_option_300etf_min_qvix_df = index_option_300etf_min_qvix()
106
399
  print(index_option_300etf_min_qvix_df)
400
+
401
+ index_option_500etf_qvix_df = index_option_500etf_qvix()
402
+ print(index_option_500etf_qvix_df)
403
+
404
+ index_option_500etf_min_qvix_df = index_option_500etf_min_qvix()
405
+ print(index_option_500etf_min_qvix_df)
406
+
407
+ index_option_cyb_qvix_df = index_option_cyb_qvix()
408
+ print(index_option_cyb_qvix_df)
409
+
410
+ index_option_cyb_min_qvix_df = index_option_cyb_min_qvix()
411
+ print(index_option_cyb_min_qvix_df)
412
+
413
+ index_option_kcb_qvix_df = index_option_kcb_qvix()
414
+ print(index_option_kcb_qvix_df)
415
+
416
+ index_option_kcb_min_qvix_df = index_option_kcb_min_qvix()
417
+ print(index_option_kcb_min_qvix_df)
418
+
419
+ index_option_100etf_qvix_df = index_option_100etf_qvix()
420
+ print(index_option_100etf_qvix_df)
421
+
422
+ index_option_100etf_min_qvix_df = index_option_100etf_min_qvix()
423
+ print(index_option_100etf_min_qvix_df)
424
+
425
+ index_option_300index_qvix_df = index_option_300index_qvix()
426
+ print(index_option_300index_qvix_df)
427
+
428
+ index_option_300index_min_qvix_df = index_option_300index_min_qvix()
429
+ print(index_option_300index_min_qvix_df)
430
+
431
+ index_option_1000index_qvix_df = index_option_1000index_qvix()
432
+ print(index_option_1000index_qvix_df)
433
+
434
+ index_option_1000index_min_qvix_df = index_option_1000index_min_qvix()
435
+ print(index_option_1000index_min_qvix_df)
436
+
437
+ index_option_50index_qvix_df = index_option_50index_qvix()
438
+ print(index_option_50index_qvix_df)
439
+
440
+ index_option_50index_min_qvix_df = index_option_50index_min_qvix()
441
+ print(index_option_50index_min_qvix_df)
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2024/5/22 15:00
4
+ Date: 2024/10/23 13:00
5
5
  Desc: 申万宏源研究-指数系列
6
- https://www.swhyresearch.com/institute_sw/allIndex/releasedIndex
6
+ https://www.swsresearch.com/institute_sw/allIndex/releasedIndex
7
7
  """
8
8
 
9
9
  import math
@@ -17,7 +17,7 @@ from akshare.utils.tqdm import get_tqdm
17
17
  def index_hist_sw(symbol: str = "801030", period: str = "day") -> pd.DataFrame:
18
18
  """
19
19
  申万宏源研究-指数发布-指数详情-指数历史数据
20
- https://www.swhyresearch.com/institute_sw/allIndex/releasedIndex/releasedetail?code=801001&name=%E7%94%B3%E4%B8%8750
20
+ https://www.swsresearch.com/institute_sw/allIndex/releasedIndex/releasedetail?code=801001&name=%E7%94%B3%E4%B8%8750
21
21
  :param symbol: 指数代码
22
22
  :type symbol: str
23
23
  :param period: choice of {"day", "week", "month"}
@@ -30,7 +30,7 @@ def index_hist_sw(symbol: str = "801030", period: str = "day") -> pd.DataFrame:
30
30
  "week": "WEEK",
31
31
  "month": "MONTH",
32
32
  }
33
- url = "https://www.swhyresearch.com/institute-sw/api/index_publish/trend/"
33
+ url = "https://www.swsresearch.com/institute-sw/api/index_publish/trend/"
34
34
  params = {
35
35
  "swindexcode": symbol,
36
36
  "period": period_map[period],
@@ -81,14 +81,14 @@ def index_hist_sw(symbol: str = "801030", period: str = "day") -> pd.DataFrame:
81
81
  def index_min_sw(symbol: str = "801001") -> pd.DataFrame:
82
82
  """
83
83
  申万宏源研究-指数发布-指数详情-指数分时数据
84
- https://www.swhyresearch.com/institute_sw/allIndex/releasedIndex/releasedetail?code=801001&name=%E7%94%B3%E4%B8%8750
84
+ https://www.swsresearch.com/institute_sw/allIndex/releasedIndex/releasedetail?code=801001&name=%E7%94%B3%E4%B8%8750
85
85
  :param symbol: 指数代码
86
86
  :type symbol: str
87
87
  :return: 指数分时数据
88
88
  :rtype: pandas.DataFrame
89
89
  """
90
90
  url = (
91
- "https://www.swhyresearch.com/institute-sw/api/index_publish/details/timelines/"
91
+ "https://www.swsresearch.com/institute-sw/api/index_publish/details/timelines/"
92
92
  )
93
93
  params = {
94
94
  "swindexcode": symbol,
@@ -127,13 +127,13 @@ def index_min_sw(symbol: str = "801001") -> pd.DataFrame:
127
127
  def index_component_sw(symbol: str = "801001") -> pd.DataFrame:
128
128
  """
129
129
  申万宏源研究-指数发布-指数详情-成分股
130
- https://www.swhyresearch.com/institute_sw/allIndex/releasedIndex/releasedetail?code=801001&name=%E7%94%B3%E4%B8%8750
130
+ https://www.swsresearch.com/institute_sw/allIndex/releasedIndex/releasedetail?code=801001&name=%E7%94%B3%E4%B8%8750
131
131
  :param symbol: 指数代码
132
132
  :type symbol: str
133
133
  :return: 成分股
134
134
  :rtype: pandas.DataFrame
135
135
  """
136
- url = "https://www.swhyresearch.com/institute-sw/api/index_publish/details/component_stocks/"
136
+ url = "https://www.swsresearch.com/institute-sw/api/index_publish/details/component_stocks/"
137
137
  params = {"swindexcode": symbol, "page": "1", "page_size": "10000"}
138
138
  headers = {
139
139
  "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
@@ -221,7 +221,7 @@ def __index_realtime_sw(symbol: str = "大类风格指数") -> pd.DataFrame:
221
221
  def index_realtime_sw(symbol: str = "二级行业") -> pd.DataFrame:
222
222
  """
223
223
  申万宏源研究-指数系列
224
- https://www.swhyresearch.com/institute_sw/allIndex/releasedIndex
224
+ https://www.swsresearch.com/institute_sw/allIndex/releasedIndex
225
225
  :param symbol: choice of {"市场表征", "一级行业", "二级行业", "风格指数", "大类风格指数", "金创指数"}
226
226
  :type symbol: str
227
227
  :return: 指数系列实时行情数据
@@ -230,7 +230,7 @@ def index_realtime_sw(symbol: str = "二级行业") -> pd.DataFrame:
230
230
  if symbol in {"大类风格指数", "金创指数"}:
231
231
  temp_df = __index_realtime_sw(symbol)
232
232
  return temp_df
233
- url = "https://www.swhyresearch.com/institute-sw/api/index_publish/current/"
233
+ url = "https://www.swsresearch.com/institute-sw/api/index_publish/current/"
234
234
  params = {"page": "1", "page_size": "50", "indextype": symbol}
235
235
  headers = {
236
236
  "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
@@ -289,7 +289,7 @@ def index_analysis_daily_sw(
289
289
  ) -> pd.DataFrame:
290
290
  """
291
291
  申万宏源研究-指数分析
292
- https://www.swhyresearch.com/institute_sw/allIndex/analysisIndex
292
+ https://www.swsresearch.com/institute_sw/allIndex/analysisIndex
293
293
  :param symbol: choice of {"市场表征", "一级行业", "二级行业", "风格指数"}
294
294
  :type symbol: str
295
295
  :param start_date: 开始日期
@@ -299,7 +299,7 @@ def index_analysis_daily_sw(
299
299
  :return: 指数分析
300
300
  :rtype: pandas.DataFrame
301
301
  """
302
- url = "https://www.swhyresearch.com/institute-sw/api/index_analysis/index_analysis_report/"
302
+ url = "https://www.swsresearch.com/institute-sw/api/index_analysis/index_analysis_report/"
303
303
  params = {
304
304
  "page": "1",
305
305
  "page_size": "50",
@@ -363,13 +363,13 @@ def index_analysis_daily_sw(
363
363
  def index_analysis_week_month_sw(symbol: str = "month") -> pd.DataFrame:
364
364
  """
365
365
  申万宏源研究-周/月报表-日期序列
366
- https://www.swhyresearch.com/institute_sw/allIndex/analysisIndex
366
+ https://www.swsresearch.com/institute_sw/allIndex/analysisIndex
367
367
  :param symbol: choice of {"week", "month"}
368
368
  :type symbol: str
369
369
  :return: 日期序列
370
370
  :rtype: pandas.DataFrame
371
371
  """
372
- url = "https://www.swhyresearch.com/institute-sw/api/index_analysis/week_month_datetime/"
372
+ url = "https://www.swsresearch.com/institute-sw/api/index_analysis/week_month_datetime/"
373
373
  params = {"type": symbol.upper()}
374
374
  headers = {
375
375
  "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
@@ -392,7 +392,7 @@ def index_analysis_weekly_sw(
392
392
  ) -> pd.DataFrame:
393
393
  """
394
394
  申万宏源研究-指数分析-周报告
395
- https://www.swhyresearch.com/institute_sw/allIndex/analysisIndex
395
+ https://www.swsresearch.com/institute_sw/allIndex/analysisIndex
396
396
  :param symbol: choice of {"市场表征", "一级行业", "二级行业", "风格指数"}
397
397
  :type symbol: str
398
398
  :param date: 查询日期; 通过调用 ak.index_analysis_week_month_sw(date="20221104") 接口获取
@@ -400,7 +400,7 @@ def index_analysis_weekly_sw(
400
400
  :return: 指数分析
401
401
  :rtype: pandas.DataFrame
402
402
  """
403
- url = "https://www.swhyresearch.com/institute-sw/api/index_analysis/index_analysis_reports/"
403
+ url = "https://www.swsresearch.com/institute-sw/api/index_analysis/index_analysis_reports/"
404
404
  params = {
405
405
  "page": "1",
406
406
  "page_size": "50",
@@ -467,7 +467,7 @@ def index_analysis_monthly_sw(
467
467
  ) -> pd.DataFrame:
468
468
  """
469
469
  申万宏源研究-指数分析-月报告
470
- https://www.swhyresearch.com/institute_sw/allIndex/analysisIndex
470
+ https://www.swsresearch.com/institute_sw/allIndex/analysisIndex
471
471
  :param symbol: choice of {"市场表征", "一级行业", "二级行业", "风格指数"}
472
472
  :type symbol: str
473
473
  :param date: 查询日期; 通过调用 ak.index_analysis_week_month_sw() 接口获取
@@ -475,7 +475,7 @@ def index_analysis_monthly_sw(
475
475
  :return: 指数分析
476
476
  :rtype: pandas.DataFrame
477
477
  """
478
- url = "https://www.swhyresearch.com/institute-sw/api/index_analysis/index_analysis_reports/"
478
+ url = "https://www.swsresearch.com/institute-sw/api/index_analysis/index_analysis_reports/"
479
479
  params = {
480
480
  "page": "1",
481
481
  "page_size": "50",
@@ -549,7 +549,7 @@ if __name__ == "__main__":
549
549
  print(index_realtime_sw_df)
550
550
 
551
551
  index_analysis_daily_sw_df = index_analysis_daily_sw(
552
- symbol="市场表征", start_date="20240521", end_date="20240521"
552
+ symbol="市场表征", start_date="20241025", end_date="20241025"
553
553
  )
554
554
  print(index_analysis_daily_sw_df)
555
555
 
@@ -557,11 +557,11 @@ if __name__ == "__main__":
557
557
  print(index_analysis_week_month_sw_df)
558
558
 
559
559
  index_analysis_weekly_sw_df = index_analysis_weekly_sw(
560
- symbol="市场表征", date="20240329"
560
+ symbol="市场表征", date="20241025"
561
561
  )
562
562
  print(index_analysis_weekly_sw_df)
563
563
 
564
564
  index_analysis_monthly_sw_df = index_analysis_monthly_sw(
565
- symbol="市场表征", date="20240329"
565
+ symbol="市场表征", date="20240930"
566
566
  )
567
567
  print(index_analysis_monthly_sw_df)
@@ -1,10 +1,11 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2023/6/11 21:30
4
+ Date: 2024/12/26 18:30
5
5
  Desc: 商品现货价格指数
6
- http://finance.sina.com.cn/futuremarket/spotprice.shtml#titlePos_0
6
+ https://finance.sina.com.cn/futuremarket/spotprice.shtml#titlePos_0
7
7
  """
8
+
8
9
  import pandas as pd
9
10
  import requests
10
11
 
@@ -12,13 +13,13 @@ import requests
12
13
  def spot_goods(symbol: str = "波罗的海干散货指数") -> pd.DataFrame:
13
14
  """
14
15
  新浪财经-商品现货价格指数
15
- http://finance.sina.com.cn/futuremarket/spotprice.shtml#titlePos_0
16
+ https://finance.sina.com.cn/futuremarket/spotprice.shtml#titlePos_0
16
17
  :param symbol: choice of {"波罗的海干散货指数", "钢坯价格指数", "澳大利亚粉矿价格"}
17
18
  :type symbol: str
18
19
  :return: 商品现货价格指数
19
20
  :rtype: pandas.DataFrame
20
21
  """
21
- url = "http://stock.finance.sina.com.cn/futures/api/openapi.php/GoodsIndexService.get_goods_index"
22
+ url = "https://stock.finance.sina.com.cn/futures/api/openapi.php/GoodsIndexService.get_goods_index"
22
23
  symbol_url_dict = {
23
24
  "波罗的海干散货指数": "BDI",
24
25
  "钢坯价格指数": "GP",
@@ -31,10 +32,13 @@ def spot_goods(symbol: str = "波罗的海干散货指数") -> pd.DataFrame:
31
32
  temp_df = pd.DataFrame(data_json["result"]["data"]["data"])
32
33
  temp_df = temp_df[["opendate", "price", "zde", "zdf"]]
33
34
  temp_df.columns = ["日期", "指数", "涨跌额", "涨跌幅"]
34
- temp_df["日期"] = pd.to_datetime(temp_df["日期"], format="%Y-%m-%d", errors="coerce").dt.date
35
+ temp_df["日期"] = pd.to_datetime(
36
+ temp_df["日期"], format="%Y-%m-%d", errors="coerce"
37
+ ).dt.date
35
38
  temp_df["指数"] = pd.to_numeric(temp_df["指数"], errors="coerce")
36
39
  temp_df["涨跌额"] = pd.to_numeric(temp_df["涨跌额"], errors="coerce")
37
40
  temp_df["涨跌幅"] = pd.to_numeric(temp_df["涨跌幅"], errors="coerce")
41
+ temp_df.dropna(inplace=True, ignore_index=True)
38
42
  return temp_df
39
43
 
40
44