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

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

Potentially problematic release.


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

Files changed (240) hide show
  1. akshare/__init__.py +446 -139
  2. akshare/air/air_hebei.py +79 -53
  3. akshare/air/air_zhenqi.py +29 -43
  4. akshare/air/sunrise_tad.py +32 -17
  5. akshare/bank/bank_cbirc_2020.py +12 -9
  6. akshare/bond/bond_cb_ths.py +17 -9
  7. akshare/bond/bond_china.py +38 -39
  8. akshare/bond/bond_china_money.py +75 -48
  9. akshare/bond/bond_convert.py +40 -16
  10. akshare/bond/bond_info_cm.py +28 -8
  11. akshare/bond/bond_issue_cninfo.py +73 -30
  12. akshare/bond/{bond_zh_cov_sina.py → bond_zh_cov.py} +41 -17
  13. akshare/bond/bond_zh_sina.py +57 -51
  14. akshare/cal/__init__.py +0 -0
  15. akshare/cal/rv.py +170 -0
  16. akshare/cost/cost_living.py +7 -5
  17. akshare/currency/currency_safe.py +7 -6
  18. akshare/data/cninfo.js +15 -0
  19. akshare/datasets.py +10 -21
  20. akshare/economic/macro_bank.py +95 -653
  21. akshare/economic/macro_china.py +772 -1024
  22. akshare/economic/macro_china_hk.py +65 -243
  23. akshare/economic/macro_china_nbs.py +24 -7
  24. akshare/economic/macro_constitute.py +17 -12
  25. akshare/economic/macro_euro.py +13 -6
  26. akshare/economic/macro_finance_ths.py +133 -0
  27. akshare/economic/macro_info_ws.py +100 -0
  28. akshare/economic/macro_japan.py +5 -4
  29. akshare/economic/macro_other.py +12 -9
  30. akshare/economic/macro_usa.py +376 -1940
  31. akshare/economic/marco_cnbs.py +11 -6
  32. akshare/energy/energy_carbon.py +94 -125
  33. akshare/event/migration.py +3 -2
  34. akshare/exceptions.py +43 -0
  35. akshare/file_fold/calendar.json +245 -2
  36. akshare/fortune/fortune_500.py +15 -48
  37. akshare/fund/fund_amac.py +157 -75
  38. akshare/fund/fund_em.py +191 -184
  39. akshare/fund/fund_etf_em.py +20 -19
  40. akshare/fund/fund_etf_sina.py +71 -23
  41. akshare/fund/fund_etf_ths.py +93 -0
  42. akshare/fund/fund_fee_em.py +98 -0
  43. akshare/fund/fund_lof_em.py +10 -8
  44. akshare/fund/fund_portfolio_em.py +60 -50
  45. akshare/fund/fund_rank_em.py +91 -82
  46. akshare/fund/fund_report_cninfo.py +63 -48
  47. akshare/fund/fund_scale_sina.py +20 -10
  48. akshare/fund/fund_xq.py +139 -109
  49. akshare/futures/cons.py +8 -31
  50. akshare/futures/cot.py +185 -137
  51. akshare/futures/futures_basis.py +97 -32
  52. akshare/futures/futures_comm_ctp.py +37 -0
  53. akshare/futures/futures_comm_qihuo.py +74 -45
  54. akshare/futures/futures_daily_bar.py +121 -184
  55. akshare/futures/futures_hf_em.py +66 -61
  56. akshare/futures/futures_hq_sina.py +79 -61
  57. akshare/futures/futures_index_ccidx.py +6 -3
  58. akshare/futures/futures_inventory_99.py +61 -272
  59. akshare/futures/futures_news_shmet.py +4 -2
  60. akshare/futures/futures_roll_yield.py +12 -25
  61. akshare/futures/futures_spot_stock_em.py +19 -13
  62. akshare/futures/futures_stock_js.py +14 -12
  63. akshare/futures/futures_to_spot.py +38 -33
  64. akshare/futures/futures_warehouse_receipt.py +75 -71
  65. akshare/futures/futures_zh_sina.py +73 -50
  66. akshare/futures/symbol_var.py +18 -13
  67. akshare/futures_derivative/futures_contract_info_czce.py +60 -52
  68. akshare/futures_derivative/futures_contract_info_ine.py +43 -34
  69. akshare/futures_derivative/futures_contract_info_shfe.py +46 -35
  70. akshare/futures_derivative/futures_cot_sina.py +26 -19
  71. akshare/futures_derivative/futures_spot_sys.py +21 -8
  72. akshare/fx/currency_investing.py +19 -285
  73. akshare/index/index_cflp.py +29 -26
  74. akshare/index/index_cni.py +86 -88
  75. akshare/index/index_cons.py +26 -10
  76. akshare/index/index_cx.py +248 -47
  77. akshare/index/index_drewry.py +17 -16
  78. akshare/index/index_hog.py +27 -26
  79. akshare/index/index_option_qvix.py +329 -0
  80. akshare/index/index_research_fund_sw.py +134 -0
  81. akshare/index/{index_sw_research.py → index_research_sw.py} +122 -58
  82. akshare/index/index_spot.py +9 -5
  83. akshare/index/index_stock_hk.py +35 -16
  84. akshare/index/index_stock_us_sina.py +1 -1
  85. akshare/index/index_stock_zh.py +180 -89
  86. akshare/index/index_stock_zh_csindex.py +15 -369
  87. akshare/index/index_sw.py +62 -34
  88. akshare/index/index_yw.py +46 -23
  89. akshare/index/index_zh_a_scope.py +48 -0
  90. akshare/index/index_zh_em.py +17 -14
  91. akshare/interest_rate/interbank_rate_em.py +14 -9
  92. akshare/movie/artist_yien.py +32 -5
  93. akshare/movie/movie_yien.py +92 -18
  94. akshare/movie/video_yien.py +28 -5
  95. akshare/news/news_baidu.py +78 -44
  96. akshare/news/news_cctv.py +38 -38
  97. akshare/news/news_stock.py +6 -3
  98. akshare/nlp/nlp_interface.py +7 -8
  99. akshare/option/cons.py +11 -11
  100. akshare/option/option_comm_qihuo.py +86 -0
  101. akshare/option/option_commodity.py +178 -51
  102. akshare/option/option_daily_stats_sse_szse.py +146 -0
  103. akshare/option/option_em.py +147 -138
  104. akshare/option/option_finance_sina.py +160 -137
  105. akshare/option/option_lhb_em.py +62 -56
  106. akshare/option/option_risk_indicator_sse.py +17 -14
  107. akshare/other/other_car_cpca.py +934 -0
  108. akshare/other/{other_car.py → other_car_gasgoo.py} +15 -54
  109. akshare/qdii/__init__.py +0 -0
  110. akshare/qdii/qdii_jsl.py +233 -0
  111. akshare/request.py +117 -0
  112. akshare/spot/spot_hog_soozhu.py +232 -0
  113. akshare/spot/spot_price_qh.py +121 -0
  114. akshare/spot/spot_sge.py +63 -10
  115. akshare/stock/stock_allotment_cninfo.py +10 -9
  116. akshare/stock/stock_ask_bid_em.py +27 -3
  117. akshare/stock/stock_board_concept_em.py +23 -14
  118. akshare/stock/stock_board_industry_em.py +40 -34
  119. akshare/stock/stock_cg_equity_mortgage.py +15 -11
  120. akshare/stock/stock_cg_guarantee.py +41 -51
  121. akshare/stock/stock_cg_lawsuit.py +36 -35
  122. akshare/stock/stock_dividend_cninfo.py +12 -6
  123. akshare/stock/stock_dzjy_em.py +347 -260
  124. akshare/stock/stock_fund_em.py +332 -84
  125. akshare/stock/stock_hk_famous.py +108 -0
  126. akshare/stock/stock_hk_sina.py +8 -7
  127. akshare/stock/stock_hold_control_cninfo.py +100 -15
  128. akshare/stock/stock_hold_control_em.py +4 -3
  129. akshare/stock/stock_hold_num_cninfo.py +18 -12
  130. akshare/stock/stock_hot_rank_em.py +2 -1
  131. akshare/stock/stock_hot_search_baidu.py +5 -2
  132. akshare/stock/stock_industry_cninfo.py +24 -18
  133. akshare/stock/stock_industry_pe_cninfo.py +45 -31
  134. akshare/stock/stock_industry_sw.py +9 -10
  135. akshare/stock/stock_info.py +25 -15
  136. akshare/stock/stock_info_em.py +5 -2
  137. akshare/stock/stock_intraday_em.py +5 -2
  138. akshare/stock/stock_intraday_sina.py +22 -18
  139. akshare/stock/stock_ipo_summary_cninfo.py +25 -10
  140. akshare/stock/stock_new_cninfo.py +32 -19
  141. akshare/stock/stock_news_cx.py +39 -0
  142. akshare/stock/stock_profile_cninfo.py +9 -8
  143. akshare/stock/stock_rank_forecast.py +8 -6
  144. akshare/stock/stock_share_changes_cninfo.py +18 -14
  145. akshare/stock/stock_share_hold.py +24 -19
  146. akshare/stock/stock_summary.py +54 -26
  147. akshare/stock/stock_us_famous.py +15 -6
  148. akshare/stock/stock_us_pink.py +7 -5
  149. akshare/stock/stock_us_sina.py +15 -12
  150. akshare/stock/stock_xq.py +38 -12
  151. akshare/stock/stock_zh_a_sina.py +53 -78
  152. akshare/stock/stock_zh_b_sina.py +32 -55
  153. akshare/stock/stock_zh_kcb_report.py +11 -9
  154. akshare/stock/stock_zh_kcb_sina.py +67 -64
  155. akshare/stock_feature/stock_a_below_net_asset_statistics.py +5 -2
  156. akshare/stock_feature/stock_a_high_low.py +5 -2
  157. akshare/stock_feature/stock_a_indicator.py +12 -9
  158. akshare/stock_feature/stock_a_pe_and_pb.py +27 -6
  159. akshare/stock_feature/stock_account_em.py +58 -40
  160. akshare/stock_feature/stock_analyst_em.py +36 -27
  161. akshare/stock_feature/stock_board_industry_ths.py +136 -400
  162. akshare/stock_feature/stock_comment_em.py +118 -85
  163. akshare/stock_feature/stock_concept_futu.py +183 -0
  164. akshare/stock_feature/stock_cyq_em.py +58 -54
  165. akshare/stock_feature/stock_disclosure_cninfo.py +147 -102
  166. akshare/stock_feature/stock_esg_sina.py +216 -11
  167. akshare/stock_feature/stock_fhps_em.py +60 -25
  168. akshare/stock_feature/stock_fhps_ths.py +25 -6
  169. akshare/stock_feature/stock_fund_flow.py +38 -25
  170. akshare/stock_feature/stock_gdfx_em.py +180 -95
  171. akshare/stock_feature/stock_gdhs.py +73 -49
  172. akshare/stock_feature/stock_gpzy_em.py +78 -46
  173. akshare/stock_feature/stock_hist_em.py +164 -111
  174. akshare/stock_feature/stock_hk_valuation_baidu.py +20 -8
  175. akshare/stock_feature/stock_hsgt_em.py +184 -452
  176. akshare/stock_feature/stock_info.py +52 -29
  177. akshare/stock_feature/stock_inner_trade_xq.py +39 -31
  178. akshare/stock_feature/stock_irm_cninfo.py +32 -9
  179. akshare/stock_feature/stock_jgdy_em.py +41 -38
  180. akshare/stock_feature/stock_lh_yybpm.py +36 -37
  181. akshare/stock_feature/stock_lhb_em.py +135 -71
  182. akshare/stock_feature/stock_lhb_sina.py +93 -46
  183. akshare/stock_feature/stock_margin_em.py +102 -0
  184. akshare/stock_feature/{stock_sse_margin.py → stock_margin_sse.py} +21 -15
  185. akshare/stock_feature/{stock_szse_margin.py → stock_margin_szse.py} +23 -19
  186. akshare/stock_feature/stock_market_legu.py +13 -8
  187. akshare/stock_feature/stock_pankou_em.py +72 -34
  188. akshare/stock_feature/stock_report_em.py +244 -54
  189. akshare/stock_feature/stock_research_report_em.py +48 -19
  190. akshare/stock_feature/stock_sns_sseinfo.py +15 -12
  191. akshare/stock_feature/stock_sy_em.py +86 -33
  192. akshare/stock_feature/stock_technology_ths.py +152 -120
  193. akshare/stock_feature/stock_tfp_em.py +35 -13
  194. akshare/stock_feature/stock_three_report_em.py +119 -77
  195. akshare/stock_feature/stock_ttm_lyr.py +4 -7
  196. akshare/stock_feature/stock_value_em.py +83 -0
  197. akshare/stock_feature/stock_wencai.py +21 -9
  198. akshare/stock_feature/stock_yjyg_em.py +63 -28
  199. akshare/stock_feature/stock_zf_pg.py +61 -38
  200. akshare/stock_feature/stock_zh_valuation_baidu.py +3 -2
  201. akshare/stock_feature/stock_ztb_em.py +62 -40
  202. akshare/stock_fundamental/stock_finance.py +150 -58
  203. akshare/stock_fundamental/stock_finance_ths.py +116 -31
  204. akshare/stock_fundamental/stock_mda_ym.py +5 -3
  205. akshare/stock_fundamental/stock_notice.py +29 -15
  206. akshare/stock_fundamental/stock_profit_forecast_em.py +31 -13
  207. akshare/stock_fundamental/stock_profit_forecast_ths.py +19 -10
  208. akshare/stock_fundamental/stock_register_em.py +448 -0
  209. akshare/stock_fundamental/stock_restricted_em.py +79 -32
  210. akshare/stock_fundamental/stock_zygc.py +10 -8
  211. akshare/stock_fundamental/stock_zyjs_ths.py +5 -3
  212. akshare/tool/trade_date_hist.py +4 -3
  213. akshare/utils/cons.py +10 -0
  214. akshare/utils/context.py +43 -0
  215. akshare/utils/demjson.py +2 -2
  216. akshare/utils/func.py +26 -0
  217. akshare/utils/tqdm.py +13 -3
  218. {akshare-1.12.95.dist-info → akshare-1.15.72.dist-info}/METADATA +52 -69
  219. akshare-1.15.72.dist-info/RECORD +385 -0
  220. {akshare-1.12.95.dist-info → akshare-1.15.72.dist-info}/WHEEL +1 -1
  221. tests/test_func.py +3 -5
  222. akshare/bond/bond_futures.py +0 -50
  223. akshare/bond/bond_investing.py +0 -139
  224. akshare/crypto/crypto_hist_investing.py +0 -249
  225. akshare/fortune/fortune_it_juzi.py +0 -123
  226. akshare/futures/futures_international.py +0 -170
  227. akshare/futures/futures_news_baidu.py +0 -54
  228. akshare/futures/inventory_data.py +0 -100
  229. akshare/futures_derivative/futures_index_price_nh.py +0 -61
  230. akshare/futures_derivative/futures_index_return_nh.py +0 -47
  231. akshare/futures_derivative/futures_index_volatility_nh.py +0 -51
  232. akshare/futures_derivative/futures_other_index_nh.py +0 -145
  233. akshare/index/index_fear_greed_funddb.py +0 -71
  234. akshare/index/index_investing.py +0 -232
  235. akshare/sport/sport_olympic_winter.py +0 -39
  236. akshare/stock_feature/stock_board_concept_ths.py +0 -422
  237. akshare/stock_fundamental/stock_register.py +0 -292
  238. akshare-1.12.95.dist-info/RECORD +0 -374
  239. {akshare-1.12.95.dist-info → akshare-1.15.72.dist-info}/LICENSE +0 -0
  240. {akshare-1.12.95.dist-info → akshare-1.15.72.dist-info}/top_level.txt +0 -0
akshare/cal/rv.py ADDED
@@ -0,0 +1,170 @@
1
+ """
2
+ Yang-Zhang-s-Realized-Volatility-Automated-Estimation-in-Python
3
+ https://github.com/hugogobato/Yang-Zhang-s-Realized-Volatility-Automated-Estimation-in-Python
4
+ 论文地址:https://www.jstor.org/stable/10.1086/209650
5
+ """
6
+
7
+ import warnings
8
+
9
+ import numpy as np
10
+ import pandas as pd
11
+
12
+
13
+ def rv_from_stock_zh_a_hist_min_em(
14
+ symbol="000001",
15
+ start_date="2021-10-20 09:30:00",
16
+ end_date="2024-11-01 15:00:00",
17
+ period="1",
18
+ adjust="hfq",
19
+ ) -> pd.DataFrame:
20
+ """
21
+ 从东方财富网获取股票的分钟级历史行情数据,并进行数据清洗和格式化为计算 yz 已实现波动率所需的数据格式
22
+ https://quote.eastmoney.com/concept/sh603777.html?from=classic
23
+ :param symbol: 股票代码,如"000001"
24
+ :type symbol: str
25
+ :param start_date: 开始日期时间,格式"YYYY-MM-DD HH:MM:SS"
26
+ :type start_date: str
27
+ :param end_date: 结束日期时间,格式"YYYY-MM-DD HH:MM:SS"
28
+ :type end_date: str
29
+ :param period: 时间周期,可选{'1','5','15','30','60'}分钟
30
+ :type period: str
31
+ :param adjust: 复权方式,可选{'','qfq'(前复权),'hfq'(后复权)}
32
+ :type adjust: str
33
+ :return: 整理后的分钟行情数据,包含Date(索引),Open,High,Low,Close列
34
+ :rtype: pandas.DataFrame
35
+ """
36
+ from akshare.stock_feature.stock_hist_em import stock_zh_a_hist_min_em
37
+
38
+ temp_df = stock_zh_a_hist_min_em(
39
+ symbol=symbol,
40
+ start_date=start_date,
41
+ end_date=end_date,
42
+ period=period,
43
+ adjust=adjust,
44
+ )
45
+ temp_df.rename(
46
+ columns={
47
+ "时间": "Date",
48
+ "开盘": "Open",
49
+ "最高": "High",
50
+ "最低": "Low",
51
+ "收盘": "Close",
52
+ },
53
+ inplace=True,
54
+ )
55
+ temp_df = temp_df[temp_df["Open"] != 0]
56
+ temp_df["Date"] = pd.to_datetime(temp_df["Date"])
57
+ temp_df.set_index(keys="Date", inplace=True)
58
+ return temp_df
59
+
60
+
61
+ def rv_from_futures_zh_minute_sina(
62
+ symbol: str = "IF2008", period: str = "5"
63
+ ) -> pd.DataFrame:
64
+ """
65
+ 从新浪财经获取期货的分钟级历史行情数据,并进行数据清洗和格式化
66
+ https://vip.stock.finance.sina.com.cn/quotes_service/view/qihuohangqing.html#titlePos_3
67
+ :param symbol: 期货合约代码,如"IF2008"代表沪深300期货2020年8月合约
68
+ :type symbol: str
69
+ :param period: 时间周期,可选{'1','5','15','30','60'}分钟
70
+ :type period: str
71
+ :return: 整理后的分钟行情数据,包含Date(索引),Open,High,Low,Close列
72
+ :rtype: pandas.DataFrame
73
+ """
74
+ from akshare.futures.futures_zh_sina import futures_zh_minute_sina
75
+
76
+ temp_df = futures_zh_minute_sina(symbol=symbol, period=period)
77
+ temp_df.rename(
78
+ columns={
79
+ "datetime": "Date",
80
+ "open": "Open",
81
+ "high": "High",
82
+ "low": "Low",
83
+ "close": "Close",
84
+ },
85
+ inplace=True,
86
+ )
87
+ temp_df["Date"] = pd.to_datetime(temp_df["Date"])
88
+ temp_df.set_index(keys="Date", inplace=True)
89
+ return temp_df
90
+
91
+
92
+ def volatility_yz_rv(data: pd.DataFrame) -> pd.DataFrame:
93
+ """
94
+ 波动率-已实现波动率-Yang-Zhang 已实现波动率(Yang-Zhang Realized Volatility)
95
+ https://github.com/hugogobato/Yang-Zhang-s-Realized-Volatility-Automated-Estimation-in-Python
96
+ 论文地址:https://www.jstor.org/stable/10.1086/209650
97
+ 基于以下公式计算:
98
+ RV^2 = Vo + k*Vc + (1-k)*Vrs
99
+ 其中:
100
+ - Vo: 隔夜波动率, Vo = 1/(n-1)*sum(Oi-Obar)^2
101
+ Oi为标准化开盘价, Obar为标准化开盘价均值
102
+ - Vc: 收盘波动率, Vc = 1/(n-1)*sum(ci-Cbar)^2
103
+ ci为标准化收盘价, Cbar为标准化收盘价均值
104
+ - k: 权重系数, k = 0.34/(1.34+(n+1)/(n-1))
105
+ n为样本数量
106
+ - Vrs: Rogers-Satchell波动率代理, Vrs = ui(ui-ci)+di(di-ci)
107
+ ui = ln(Hi/Oi), ci = ln(Ci/Oi), di = ln(Li/Oi), oi = ln(Oi/Ci-1)
108
+ Hi/Li/Ci/Oi分别为最高价/最低价/收盘价/开盘价
109
+
110
+ :param data: 包含 OHLC(开高低收) 价格的 pandas.DataFrame
111
+ :type data: pandas.DataFrame
112
+ :return: 包含 Yang-Zhang 实现波动率的 pandas.DataFrame
113
+ :rtype: pandas.DataFrame
114
+
115
+ 要求输入数据包含以下列:
116
+ - Open: 开盘价
117
+ - High: 最高价
118
+ - Low: 最低价
119
+ - Close: 收盘价
120
+ # yang_zhang_rv formula is give as:
121
+ # RV^2 = Vo + k*Vc + (1-k)*Vrs
122
+ # where Vo = 1/(n-1)*sum(Oi-Obar)^2
123
+ # with oi = normalized opening price at time t and Obar = mean of normalized opening prices
124
+ # Vc = = 1/(n-1)*sum(ci-Cbar)^2
125
+ # with ci = normalized close price at time t and Cbar = mean of normalized close prices
126
+ # k = 0.34/(1.34+(n+1)/(n-1))
127
+ # with n = total number of days or time periods considered
128
+ # Vrs (Rogers & Satchell RV proxy) = ui(ui-ci)+di(di-ci)
129
+ # with ui = ln(Hi/Oi), ci = ln(Ci/Oi), di=(Li/Oi), oi = ln(Oi/Ci-1)
130
+ # where Hi = high price at time t and Li = low price at time t
131
+ """ ""
132
+ warnings.filterwarnings("ignore")
133
+
134
+ data["ui"] = np.log(np.divide(data["High"][1:], data["Open"][1:]))
135
+ data["ci"] = np.log(np.divide(data["Close"][1:], data["Open"][1:]))
136
+ data["di"] = np.log(np.divide(data["Low"][1:], data["Open"][1:]))
137
+ data["oi"] = np.log(np.divide(data["Open"][1:], data["Close"][: len(data) - 1]))
138
+ data = data[1:]
139
+ data["RS"] = data["ui"] * (data["ui"] - data["ci"]) + data["di"] * (
140
+ data["di"] - data["ci"]
141
+ )
142
+ rs_var = data["RS"].groupby(pd.Grouper(freq="1D")).mean().dropna()
143
+ vc_and_vo = data[["oi", "ci"]].groupby(pd.Grouper(freq="1D")).var().dropna()
144
+ n = int(len(data) / len(rs_var))
145
+ k = 0.34 / (1.34 + (n + 1) / (n - 1))
146
+ yang_zhang_rv = np.sqrt((1 - k) * rs_var + vc_and_vo["oi"] + vc_and_vo["ci"] * k)
147
+ yang_zhang_rv_df = pd.DataFrame(yang_zhang_rv)
148
+ yang_zhang_rv_df.rename(columns={0: "yz_rv"}, inplace=True)
149
+ yang_zhang_rv_df.reset_index(inplace=True)
150
+ yang_zhang_rv_df.columns = ["date", "rv"]
151
+ yang_zhang_rv_df["date"] = pd.to_datetime(
152
+ yang_zhang_rv_df["date"], errors="coerce"
153
+ ).dt.date
154
+ return yang_zhang_rv_df
155
+
156
+
157
+ if __name__ == "__main__":
158
+ futures_df = rv_from_futures_zh_minute_sina(symbol="IF2008", period="1")
159
+ volatility_yz_rv_df = volatility_yz_rv(data=futures_df)
160
+ print(volatility_yz_rv_df)
161
+
162
+ stock_df = rv_from_stock_zh_a_hist_min_em(
163
+ symbol="000001",
164
+ start_date="2021-10-20 09:30:00",
165
+ end_date="2024-11-01 15:00:00",
166
+ period="5",
167
+ adjust="",
168
+ )
169
+ volatility_yz_rv_df = volatility_yz_rv(data=stock_df)
170
+ print(volatility_yz_rv_df)
@@ -1,10 +1,11 @@
1
1
  #!/usr/bin/env python
2
2
  # -*- coding:utf-8 -*-
3
3
  """
4
- Date: 2024/1/20 23:30
4
+ Date: 2024/8/28 15:20
5
5
  Desc: 世界各大城市生活成本数据
6
6
  https://expatistan.com/cost-of-living/index
7
7
  """
8
+
8
9
  from io import StringIO
9
10
 
10
11
  import pandas as pd
@@ -20,14 +21,14 @@ def _get_region() -> dict:
20
21
  """
21
22
  url = "https://www.expatistan.com/cost-of-living/index"
22
23
  r = requests.get(url)
23
- soup = BeautifulSoup(r.text, "lxml")
24
+ soup = BeautifulSoup(r.text, features="lxml")
24
25
  half_url_list = [
25
26
  item["href"]
26
- for item in soup.find("ul", attrs={"class": "regions"}).find_all("a")
27
+ for item in soup.find(name="ul", attrs={"class": "regions"}).find_all("a")
27
28
  ]
28
29
  name_list = [
29
30
  item["href"].split("/")[-1]
30
- for item in soup.find("ul", attrs={"class": "regions"}).find_all("a")
31
+ for item in soup.find(name="ul", attrs={"class": "regions"}).find_all("a")
31
32
  ]
32
33
  name_url_dict = dict(zip(name_list, half_url_list))
33
34
  name_url_dict["world"] = "/cost-of-living/index"
@@ -38,7 +39,8 @@ def cost_living(symbol: str = "world") -> pd.DataFrame:
38
39
  """
39
40
  国家或地区生活成本数据
40
41
  https://expatistan.com/cost-of-living/index
41
- :param symbol: choice of {"europe", "north-america", "latin-america", "asia", "middle-east", "africa", "oceania", "world"}
42
+ :param symbol: choice of {"europe", "north-america", "latin-america",
43
+ "asia", "middle-east", "africa", "oceania", "world"}
42
44
  :type symbol: str
43
45
  :return: 国家或地区生活成本数据
44
46
  :rtype: pandas.DataFrame
@@ -1,10 +1,11 @@
1
1
  # -*- coding:utf-8 -*-
2
2
  # !/usr/bin/env python
3
3
  """
4
- Date: 2023/9/17 17:08
4
+ Date: 2024/4/29 17:00
5
5
  Desc: 人民币汇率中间价
6
6
  https://www.safe.gov.cn/safe/rmbhlzjj/index.html
7
7
  """
8
+
8
9
  import re
9
10
  from datetime import datetime
10
11
  from io import StringIO
@@ -24,11 +25,11 @@ def currency_boc_safe() -> pd.DataFrame:
24
25
  url = "https://www.safe.gov.cn/safe/2020/1218/17833.html"
25
26
  r = requests.get(url)
26
27
  r.encoding = "utf8"
27
- soup = BeautifulSoup(r.text, "lxml")
28
- content = soup.find("a", string=re.compile("人民币汇率"))["href"]
28
+ soup = BeautifulSoup(r.text, features="lxml")
29
+ content = soup.find(name="a", string=re.compile("人民币汇率"))["href"]
29
30
  url = f"https://www.safe.gov.cn{content}"
30
31
  temp_df = pd.read_excel(url)
31
- temp_df.sort_values(["日期"], inplace=True)
32
+ temp_df.sort_values(by=["日期"], inplace=True)
32
33
  temp_df.reset_index(inplace=True, drop=True)
33
34
  start_date = (
34
35
  (pd.Timestamp(temp_df["日期"].tolist()[-1]) + pd.Timedelta(days=1))
@@ -44,9 +45,9 @@ def currency_boc_safe() -> pd.DataFrame:
44
45
  }
45
46
  r = requests.post(url, data=payload)
46
47
  current_temp_df = pd.read_html(StringIO(r.text))[-1]
47
- current_temp_df.sort_values(["日期"], inplace=True)
48
+ current_temp_df.sort_values(by=["日期"], inplace=True)
48
49
  current_temp_df.reset_index(inplace=True, drop=True)
49
- big_df = pd.concat([temp_df, current_temp_df], ignore_index=True)
50
+ big_df = pd.concat(objs=[temp_df, current_temp_df], ignore_index=True)
50
51
  column_name_list = big_df.columns[1:]
51
52
  for item in column_name_list:
52
53
  big_df[item] = pd.to_numeric(big_df[item], errors="coerce")
akshare/data/cninfo.js CHANGED
@@ -5998,4 +5998,19 @@ function my_decode(data) {
5998
5998
  }
5999
5999
  );
6000
6000
  return encrypted.toString(CryptoJS.enc.Utf8);
6001
+ }
6002
+
6003
+ function new_my_decode(data) {
6004
+ let key = CryptoJS.enc.Utf8.parse('bieyanjiulexixishuibatoufameill1'); // 密钥需要是32字节,这里可能需要调整
6005
+ let iv = CryptoJS.enc.Utf8.parse('nengnongchulainbl1'); // 向量通常是16字节
6006
+ let decrypted = CryptoJS.AES.decrypt(
6007
+ data,
6008
+ key,
6009
+ {
6010
+ iv: iv,
6011
+ mode: CryptoJS.mode.CBC,
6012
+ padding: CryptoJS.pad.Pkcs7
6013
+ }
6014
+ );
6015
+ return decrypted.toString(CryptoJS.enc.Utf8);
6001
6016
  }
akshare/datasets.py CHANGED
@@ -1,24 +1,19 @@
1
1
  # -*- coding:utf-8 -*-
2
2
  # !/usr/bin/env python
3
3
  """
4
- Date: 2023/9/24 16:08
4
+ Date: 2024/12/30 15:30
5
5
  Desc: 导入文件工具,可以正确处理路径问题
6
6
  """
7
+
7
8
  import pathlib
8
9
  from importlib import resources
9
10
 
10
11
 
11
12
  def get_ths_js(file: str = "ths.js") -> pathlib.Path:
12
- """Get path to data "ths.js" text file.
13
-
14
- Returns
15
- -------
16
- pathlib.PosixPath
17
- Path to file.
18
-
19
- References
20
- ----------
21
- .. [1] E.A.Abbott, ”Flatland”, Seeley & Co., 1884.
13
+ """
14
+ get path to data "ths.js" text file.
15
+ :return: 文件路径
16
+ :rtype: pathlib.Path
22
17
  """
23
18
  with resources.path("akshare.data", file) as f:
24
19
  data_file_path = f
@@ -26,16 +21,10 @@ def get_ths_js(file: str = "ths.js") -> pathlib.Path:
26
21
 
27
22
 
28
23
  def get_crypto_info_csv(file: str = "crypto_info.zip") -> pathlib.Path:
29
- """Get path to data "ths.js" text file.
30
-
31
- Returns
32
- -------
33
- pathlib.PosixPath
34
- Path to file.
35
-
36
- References
37
- ----------
38
- .. [1] E.A.Abbott, ”Flatland”, Seeley & Co., 1884.
24
+ """
25
+ get path to data "ths.js" text file.
26
+ :return: 文件路径
27
+ :rtype: pathlib.Path
39
28
  """
40
29
  with resources.path("akshare.data", file) as f:
41
30
  data_file_path = f