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.
- akshare/__init__.py +446 -139
- akshare/air/air_hebei.py +79 -53
- akshare/air/air_zhenqi.py +29 -43
- akshare/air/sunrise_tad.py +32 -17
- akshare/bank/bank_cbirc_2020.py +12 -9
- akshare/bond/bond_cb_ths.py +17 -9
- akshare/bond/bond_china.py +38 -39
- akshare/bond/bond_china_money.py +75 -48
- akshare/bond/bond_convert.py +40 -16
- akshare/bond/bond_info_cm.py +28 -8
- akshare/bond/bond_issue_cninfo.py +73 -30
- akshare/bond/{bond_zh_cov_sina.py → bond_zh_cov.py} +41 -17
- akshare/bond/bond_zh_sina.py +57 -51
- akshare/cal/__init__.py +0 -0
- akshare/cal/rv.py +170 -0
- akshare/cost/cost_living.py +7 -5
- akshare/currency/currency_safe.py +7 -6
- akshare/data/cninfo.js +15 -0
- akshare/datasets.py +10 -21
- akshare/economic/macro_bank.py +95 -653
- akshare/economic/macro_china.py +772 -1024
- akshare/economic/macro_china_hk.py +65 -243
- akshare/economic/macro_china_nbs.py +24 -7
- akshare/economic/macro_constitute.py +17 -12
- akshare/economic/macro_euro.py +13 -6
- akshare/economic/macro_finance_ths.py +133 -0
- akshare/economic/macro_info_ws.py +100 -0
- akshare/economic/macro_japan.py +5 -4
- akshare/economic/macro_other.py +12 -9
- akshare/economic/macro_usa.py +376 -1940
- akshare/economic/marco_cnbs.py +11 -6
- akshare/energy/energy_carbon.py +94 -125
- akshare/event/migration.py +3 -2
- akshare/exceptions.py +43 -0
- akshare/file_fold/calendar.json +245 -2
- akshare/fortune/fortune_500.py +15 -48
- akshare/fund/fund_amac.py +157 -75
- akshare/fund/fund_em.py +191 -184
- akshare/fund/fund_etf_em.py +20 -19
- akshare/fund/fund_etf_sina.py +71 -23
- akshare/fund/fund_etf_ths.py +93 -0
- akshare/fund/fund_fee_em.py +98 -0
- akshare/fund/fund_lof_em.py +10 -8
- akshare/fund/fund_portfolio_em.py +60 -50
- akshare/fund/fund_rank_em.py +91 -82
- akshare/fund/fund_report_cninfo.py +63 -48
- akshare/fund/fund_scale_sina.py +20 -10
- akshare/fund/fund_xq.py +139 -109
- akshare/futures/cons.py +8 -31
- akshare/futures/cot.py +185 -137
- akshare/futures/futures_basis.py +97 -32
- akshare/futures/futures_comm_ctp.py +37 -0
- akshare/futures/futures_comm_qihuo.py +74 -45
- akshare/futures/futures_daily_bar.py +121 -184
- akshare/futures/futures_hf_em.py +66 -61
- akshare/futures/futures_hq_sina.py +79 -61
- akshare/futures/futures_index_ccidx.py +6 -3
- akshare/futures/futures_inventory_99.py +61 -272
- akshare/futures/futures_news_shmet.py +4 -2
- akshare/futures/futures_roll_yield.py +12 -25
- akshare/futures/futures_spot_stock_em.py +19 -13
- akshare/futures/futures_stock_js.py +14 -12
- akshare/futures/futures_to_spot.py +38 -33
- akshare/futures/futures_warehouse_receipt.py +75 -71
- akshare/futures/futures_zh_sina.py +73 -50
- akshare/futures/symbol_var.py +18 -13
- akshare/futures_derivative/futures_contract_info_czce.py +60 -52
- akshare/futures_derivative/futures_contract_info_ine.py +43 -34
- akshare/futures_derivative/futures_contract_info_shfe.py +46 -35
- akshare/futures_derivative/futures_cot_sina.py +26 -19
- akshare/futures_derivative/futures_spot_sys.py +21 -8
- akshare/fx/currency_investing.py +19 -285
- akshare/index/index_cflp.py +29 -26
- akshare/index/index_cni.py +86 -88
- akshare/index/index_cons.py +26 -10
- akshare/index/index_cx.py +248 -47
- akshare/index/index_drewry.py +17 -16
- akshare/index/index_hog.py +27 -26
- akshare/index/index_option_qvix.py +329 -0
- akshare/index/index_research_fund_sw.py +134 -0
- akshare/index/{index_sw_research.py → index_research_sw.py} +122 -58
- akshare/index/index_spot.py +9 -5
- akshare/index/index_stock_hk.py +35 -16
- akshare/index/index_stock_us_sina.py +1 -1
- akshare/index/index_stock_zh.py +180 -89
- akshare/index/index_stock_zh_csindex.py +15 -369
- akshare/index/index_sw.py +62 -34
- akshare/index/index_yw.py +46 -23
- akshare/index/index_zh_a_scope.py +48 -0
- akshare/index/index_zh_em.py +17 -14
- akshare/interest_rate/interbank_rate_em.py +14 -9
- akshare/movie/artist_yien.py +32 -5
- akshare/movie/movie_yien.py +92 -18
- akshare/movie/video_yien.py +28 -5
- akshare/news/news_baidu.py +78 -44
- akshare/news/news_cctv.py +38 -38
- akshare/news/news_stock.py +6 -3
- akshare/nlp/nlp_interface.py +7 -8
- akshare/option/cons.py +11 -11
- akshare/option/option_comm_qihuo.py +86 -0
- akshare/option/option_commodity.py +178 -51
- akshare/option/option_daily_stats_sse_szse.py +146 -0
- akshare/option/option_em.py +147 -138
- akshare/option/option_finance_sina.py +160 -137
- akshare/option/option_lhb_em.py +62 -56
- akshare/option/option_risk_indicator_sse.py +17 -14
- akshare/other/other_car_cpca.py +934 -0
- akshare/other/{other_car.py → other_car_gasgoo.py} +15 -54
- akshare/qdii/__init__.py +0 -0
- akshare/qdii/qdii_jsl.py +233 -0
- akshare/request.py +117 -0
- akshare/spot/spot_hog_soozhu.py +232 -0
- akshare/spot/spot_price_qh.py +121 -0
- akshare/spot/spot_sge.py +63 -10
- akshare/stock/stock_allotment_cninfo.py +10 -9
- akshare/stock/stock_ask_bid_em.py +27 -3
- akshare/stock/stock_board_concept_em.py +23 -14
- akshare/stock/stock_board_industry_em.py +40 -34
- akshare/stock/stock_cg_equity_mortgage.py +15 -11
- akshare/stock/stock_cg_guarantee.py +41 -51
- akshare/stock/stock_cg_lawsuit.py +36 -35
- akshare/stock/stock_dividend_cninfo.py +12 -6
- akshare/stock/stock_dzjy_em.py +347 -260
- akshare/stock/stock_fund_em.py +332 -84
- akshare/stock/stock_hk_famous.py +108 -0
- akshare/stock/stock_hk_sina.py +8 -7
- akshare/stock/stock_hold_control_cninfo.py +100 -15
- akshare/stock/stock_hold_control_em.py +4 -3
- akshare/stock/stock_hold_num_cninfo.py +18 -12
- akshare/stock/stock_hot_rank_em.py +2 -1
- akshare/stock/stock_hot_search_baidu.py +5 -2
- akshare/stock/stock_industry_cninfo.py +24 -18
- akshare/stock/stock_industry_pe_cninfo.py +45 -31
- akshare/stock/stock_industry_sw.py +9 -10
- akshare/stock/stock_info.py +25 -15
- akshare/stock/stock_info_em.py +5 -2
- akshare/stock/stock_intraday_em.py +5 -2
- akshare/stock/stock_intraday_sina.py +22 -18
- akshare/stock/stock_ipo_summary_cninfo.py +25 -10
- akshare/stock/stock_new_cninfo.py +32 -19
- akshare/stock/stock_news_cx.py +39 -0
- akshare/stock/stock_profile_cninfo.py +9 -8
- akshare/stock/stock_rank_forecast.py +8 -6
- akshare/stock/stock_share_changes_cninfo.py +18 -14
- akshare/stock/stock_share_hold.py +24 -19
- akshare/stock/stock_summary.py +54 -26
- akshare/stock/stock_us_famous.py +15 -6
- akshare/stock/stock_us_pink.py +7 -5
- akshare/stock/stock_us_sina.py +15 -12
- akshare/stock/stock_xq.py +38 -12
- akshare/stock/stock_zh_a_sina.py +53 -78
- akshare/stock/stock_zh_b_sina.py +32 -55
- akshare/stock/stock_zh_kcb_report.py +11 -9
- akshare/stock/stock_zh_kcb_sina.py +67 -64
- akshare/stock_feature/stock_a_below_net_asset_statistics.py +5 -2
- akshare/stock_feature/stock_a_high_low.py +5 -2
- akshare/stock_feature/stock_a_indicator.py +12 -9
- akshare/stock_feature/stock_a_pe_and_pb.py +27 -6
- akshare/stock_feature/stock_account_em.py +58 -40
- akshare/stock_feature/stock_analyst_em.py +36 -27
- akshare/stock_feature/stock_board_industry_ths.py +136 -400
- akshare/stock_feature/stock_comment_em.py +118 -85
- akshare/stock_feature/stock_concept_futu.py +183 -0
- akshare/stock_feature/stock_cyq_em.py +58 -54
- akshare/stock_feature/stock_disclosure_cninfo.py +147 -102
- akshare/stock_feature/stock_esg_sina.py +216 -11
- akshare/stock_feature/stock_fhps_em.py +60 -25
- akshare/stock_feature/stock_fhps_ths.py +25 -6
- akshare/stock_feature/stock_fund_flow.py +38 -25
- akshare/stock_feature/stock_gdfx_em.py +180 -95
- akshare/stock_feature/stock_gdhs.py +73 -49
- akshare/stock_feature/stock_gpzy_em.py +78 -46
- akshare/stock_feature/stock_hist_em.py +164 -111
- akshare/stock_feature/stock_hk_valuation_baidu.py +20 -8
- akshare/stock_feature/stock_hsgt_em.py +184 -452
- akshare/stock_feature/stock_info.py +52 -29
- akshare/stock_feature/stock_inner_trade_xq.py +39 -31
- akshare/stock_feature/stock_irm_cninfo.py +32 -9
- akshare/stock_feature/stock_jgdy_em.py +41 -38
- akshare/stock_feature/stock_lh_yybpm.py +36 -37
- akshare/stock_feature/stock_lhb_em.py +135 -71
- akshare/stock_feature/stock_lhb_sina.py +93 -46
- akshare/stock_feature/stock_margin_em.py +102 -0
- akshare/stock_feature/{stock_sse_margin.py → stock_margin_sse.py} +21 -15
- akshare/stock_feature/{stock_szse_margin.py → stock_margin_szse.py} +23 -19
- akshare/stock_feature/stock_market_legu.py +13 -8
- akshare/stock_feature/stock_pankou_em.py +72 -34
- akshare/stock_feature/stock_report_em.py +244 -54
- akshare/stock_feature/stock_research_report_em.py +48 -19
- akshare/stock_feature/stock_sns_sseinfo.py +15 -12
- akshare/stock_feature/stock_sy_em.py +86 -33
- akshare/stock_feature/stock_technology_ths.py +152 -120
- akshare/stock_feature/stock_tfp_em.py +35 -13
- akshare/stock_feature/stock_three_report_em.py +119 -77
- akshare/stock_feature/stock_ttm_lyr.py +4 -7
- akshare/stock_feature/stock_value_em.py +83 -0
- akshare/stock_feature/stock_wencai.py +21 -9
- akshare/stock_feature/stock_yjyg_em.py +63 -28
- akshare/stock_feature/stock_zf_pg.py +61 -38
- akshare/stock_feature/stock_zh_valuation_baidu.py +3 -2
- akshare/stock_feature/stock_ztb_em.py +62 -40
- akshare/stock_fundamental/stock_finance.py +150 -58
- akshare/stock_fundamental/stock_finance_ths.py +116 -31
- akshare/stock_fundamental/stock_mda_ym.py +5 -3
- akshare/stock_fundamental/stock_notice.py +29 -15
- akshare/stock_fundamental/stock_profit_forecast_em.py +31 -13
- akshare/stock_fundamental/stock_profit_forecast_ths.py +19 -10
- akshare/stock_fundamental/stock_register_em.py +448 -0
- akshare/stock_fundamental/stock_restricted_em.py +79 -32
- akshare/stock_fundamental/stock_zygc.py +10 -8
- akshare/stock_fundamental/stock_zyjs_ths.py +5 -3
- akshare/tool/trade_date_hist.py +4 -3
- akshare/utils/cons.py +10 -0
- akshare/utils/context.py +43 -0
- akshare/utils/demjson.py +2 -2
- akshare/utils/func.py +26 -0
- akshare/utils/tqdm.py +13 -3
- {akshare-1.12.95.dist-info → akshare-1.15.72.dist-info}/METADATA +52 -69
- akshare-1.15.72.dist-info/RECORD +385 -0
- {akshare-1.12.95.dist-info → akshare-1.15.72.dist-info}/WHEEL +1 -1
- tests/test_func.py +3 -5
- akshare/bond/bond_futures.py +0 -50
- akshare/bond/bond_investing.py +0 -139
- akshare/crypto/crypto_hist_investing.py +0 -249
- akshare/fortune/fortune_it_juzi.py +0 -123
- akshare/futures/futures_international.py +0 -170
- akshare/futures/futures_news_baidu.py +0 -54
- akshare/futures/inventory_data.py +0 -100
- akshare/futures_derivative/futures_index_price_nh.py +0 -61
- akshare/futures_derivative/futures_index_return_nh.py +0 -47
- akshare/futures_derivative/futures_index_volatility_nh.py +0 -51
- akshare/futures_derivative/futures_other_index_nh.py +0 -145
- akshare/index/index_fear_greed_funddb.py +0 -71
- akshare/index/index_investing.py +0 -232
- akshare/sport/sport_olympic_winter.py +0 -39
- akshare/stock_feature/stock_board_concept_ths.py +0 -422
- akshare/stock_fundamental/stock_register.py +0 -292
- akshare-1.12.95.dist-info/RECORD +0 -374
- {akshare-1.12.95.dist-info → akshare-1.15.72.dist-info}/LICENSE +0 -0
- {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)
|
akshare/cost/cost_living.py
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env python
|
|
2
2
|
# -*- coding:utf-8 -*-
|
|
3
3
|
"""
|
|
4
|
-
Date: 2024/
|
|
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",
|
|
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:
|
|
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:
|
|
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
|
-
"""
|
|
13
|
-
|
|
14
|
-
|
|
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
|
-
"""
|
|
30
|
-
|
|
31
|
-
|
|
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
|