akshare 1.15.41__py3-none-any.whl → 1.15.43__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 +3 -1
- akshare/economic/macro_china.py +1 -0
- akshare/futures/futures_roll_yield.py +12 -25
- {akshare-1.15.41.dist-info → akshare-1.15.43.dist-info}/METADATA +1 -1
- {akshare-1.15.41.dist-info → akshare-1.15.43.dist-info}/RECORD +8 -8
- {akshare-1.15.41.dist-info → akshare-1.15.43.dist-info}/LICENSE +0 -0
- {akshare-1.15.41.dist-info → akshare-1.15.43.dist-info}/WHEEL +0 -0
- {akshare-1.15.41.dist-info → akshare-1.15.43.dist-info}/top_level.txt +0 -0
akshare/__init__.py
CHANGED
|
@@ -2951,9 +2951,11 @@ amac_manager_cancelled_info # 中国证券投资基金业协会-信息公示-诚
|
|
|
2951
2951
|
1.15.39 fix: fix macro_china_new_house_price interface
|
|
2952
2952
|
1.15.40 fix: fix macro_china_fdi interface
|
|
2953
2953
|
1.15.41 fix: fix macro_china_fdi interface
|
|
2954
|
+
1.15.42 fix: fix get_roll_yield_bar interface
|
|
2955
|
+
1.15.43 fix: fix macro_china_urban_unemployment interface
|
|
2954
2956
|
"""
|
|
2955
2957
|
|
|
2956
|
-
__version__ = "1.15.
|
|
2958
|
+
__version__ = "1.15.43"
|
|
2957
2959
|
__author__ = "AKFamily"
|
|
2958
2960
|
|
|
2959
2961
|
import sys
|
akshare/economic/macro_china.py
CHANGED
|
@@ -327,6 +327,7 @@ def macro_china_urban_unemployment() -> pd.DataFrame:
|
|
|
327
327
|
temp_df.columns = ["date", "item", "value"]
|
|
328
328
|
temp_df["item"] = temp_df["item"].map(code_item_map)
|
|
329
329
|
temp_df["value"] = pd.to_numeric(temp_df["value"], errors="coerce")
|
|
330
|
+
temp_df.sort_values(by=["date"], ignore_index=True, inplace=True)
|
|
330
331
|
return temp_df
|
|
331
332
|
|
|
332
333
|
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env python
|
|
2
2
|
# -*- coding:utf-8 -*-
|
|
3
3
|
"""
|
|
4
|
-
Date:
|
|
4
|
+
Date: 2024/12/6 13:58
|
|
5
5
|
Desc: 中国期货各合约展期收益率
|
|
6
6
|
日线数据从 daily_bar 函数获取, 需要在收盘后运行
|
|
7
7
|
"""
|
|
8
|
+
|
|
8
9
|
import datetime
|
|
9
10
|
import re
|
|
10
11
|
import warnings
|
|
@@ -31,9 +32,7 @@ def get_roll_yield(date=None, var="BB", symbol1=None, symbol2=None, df=None):
|
|
|
31
32
|
df: DataFrame或None 从dailyBar得到合约价格,如果为空就在函数内部抓dailyBar,直接喂给数据可以让计算加快
|
|
32
33
|
"""
|
|
33
34
|
# date = "20100104"
|
|
34
|
-
date = (
|
|
35
|
-
cons.convert_date(date) if date is not None else datetime.date.today()
|
|
36
|
-
)
|
|
35
|
+
date = cons.convert_date(date) if date is not None else datetime.date.today()
|
|
37
36
|
if date.strftime("%Y%m%d") not in calendar:
|
|
38
37
|
warnings.warn("%s非交易日" % date.strftime("%Y%m%d"))
|
|
39
38
|
return None
|
|
@@ -46,9 +45,7 @@ def get_roll_yield(date=None, var="BB", symbol1=None, symbol2=None, df=None):
|
|
|
46
45
|
df = df[
|
|
47
46
|
~df["symbol"].str.contains("efp")
|
|
48
47
|
] # 20200304 由于交易所获取的数据中会有比如 "CUefp",所以在这里过滤
|
|
49
|
-
df = df[df["variety"] == var].sort_values(
|
|
50
|
-
"open_interest", ascending=False
|
|
51
|
-
)
|
|
48
|
+
df = df[df["variety"] == var].sort_values("open_interest", ascending=False)
|
|
52
49
|
# df["close"] = df["close"].astype("float")
|
|
53
50
|
df["close"] = pd.to_numeric(df["close"])
|
|
54
51
|
if len(df["close"]) < 2:
|
|
@@ -69,7 +66,7 @@ def get_roll_yield(date=None, var="BB", symbol1=None, symbol2=None, df=None):
|
|
|
69
66
|
if close1 == 0 or close2 == 0:
|
|
70
67
|
return False
|
|
71
68
|
if c > 0:
|
|
72
|
-
return math.log(
|
|
69
|
+
return math.log(close1 / close2) / c * 12, symbol2, symbol1
|
|
73
70
|
else:
|
|
74
71
|
return math.log(close2 / close1) / c * 12, symbol1, symbol2
|
|
75
72
|
|
|
@@ -93,20 +90,14 @@ def get_roll_yield_bar(
|
|
|
93
90
|
ry 展期收益率
|
|
94
91
|
index 日期或品种
|
|
95
92
|
"""
|
|
96
|
-
date = (
|
|
97
|
-
cons.convert_date(date) if date is not None else datetime.date.today()
|
|
98
|
-
)
|
|
93
|
+
date = cons.convert_date(date) if date is not None else datetime.date.today()
|
|
99
94
|
start_day = (
|
|
100
|
-
cons.convert_date(start_day)
|
|
101
|
-
if start_day is not None
|
|
102
|
-
else datetime.date.today()
|
|
95
|
+
cons.convert_date(start_day) if start_day is not None else datetime.date.today()
|
|
103
96
|
)
|
|
104
97
|
end_day = (
|
|
105
98
|
cons.convert_date(end_day)
|
|
106
99
|
if end_day is not None
|
|
107
|
-
else cons.convert_date(
|
|
108
|
-
cons.get_latest_data_date(datetime.datetime.now())
|
|
109
|
-
)
|
|
100
|
+
else cons.convert_date(cons.get_latest_data_date(datetime.datetime.now()))
|
|
110
101
|
)
|
|
111
102
|
|
|
112
103
|
if type_method == "symbol":
|
|
@@ -122,13 +113,11 @@ def get_roll_yield_bar(
|
|
|
122
113
|
df = pd.concat(
|
|
123
114
|
[
|
|
124
115
|
df,
|
|
125
|
-
get_futures_daily(
|
|
126
|
-
start_date=date, end_date=date, market=market
|
|
127
|
-
),
|
|
116
|
+
get_futures_daily(start_date=date, end_date=date, market=market),
|
|
128
117
|
]
|
|
129
118
|
)
|
|
130
119
|
var_list = list(set(df["variety"]))
|
|
131
|
-
for i_remove in [
|
|
120
|
+
for i_remove in ["IO", "MO", "HO"]:
|
|
132
121
|
if i_remove in var_list:
|
|
133
122
|
var_list.remove(i_remove)
|
|
134
123
|
df_l = pd.DataFrame()
|
|
@@ -165,7 +154,7 @@ def get_roll_yield_bar(
|
|
|
165
154
|
),
|
|
166
155
|
]
|
|
167
156
|
)
|
|
168
|
-
except:
|
|
157
|
+
except: # noqa: E722
|
|
169
158
|
pass
|
|
170
159
|
start_day += datetime.timedelta(days=1)
|
|
171
160
|
return df_l
|
|
@@ -186,7 +175,5 @@ if __name__ == "__main__":
|
|
|
186
175
|
)
|
|
187
176
|
print(get_roll_yield_bar_range_df)
|
|
188
177
|
|
|
189
|
-
get_roll_yield_bar_symbol = get_roll_yield_bar(
|
|
190
|
-
type_method="var", date="20210201"
|
|
191
|
-
)
|
|
178
|
+
get_roll_yield_bar_symbol = get_roll_yield_bar(type_method="var", date="20210201")
|
|
192
179
|
print(get_roll_yield_bar_symbol)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
akshare/__init__.py,sha256=
|
|
1
|
+
akshare/__init__.py,sha256=uxia6EqdSE8ySJmzG-tkP6xbZEwVKYQXA_jzhb13j84,184843
|
|
2
2
|
akshare/datasets.py,sha256=-qdwaQjgBlftX84uM74KJqCYJYkQ50PV416_neA4uls,995
|
|
3
3
|
akshare/exceptions.py,sha256=WEJjIhSmJ_xXNW6grwV4nufE_cfmmyuhmueVGiN1VAg,878
|
|
4
4
|
akshare/request.py,sha256=HtFFf9MhfEibR-ETWe-1Tts6ELU4VKSqA-ghaXjegQM,4252
|
|
@@ -54,7 +54,7 @@ akshare/economic/cons.py,sha256=0JM61Eiro0xqXGnCaDSoLsw5iQWKAtqhRHcXmDfJgyw,1659
|
|
|
54
54
|
akshare/economic/macro_australia.py,sha256=JKNaedN19Rw15dn8bPur1yrsQA5j6hfX4tjgh7OCBHY,10801
|
|
55
55
|
akshare/economic/macro_bank.py,sha256=wG_u5w5YjeFRn1wr-Re7ty_s2CbQ0Qphxs_bIF_20UQ,11495
|
|
56
56
|
akshare/economic/macro_canada.py,sha256=nNaZ3yZIvgTtRiQhwoEybMX6UpqszPKeixzYITv9ox0,15195
|
|
57
|
-
akshare/economic/macro_china.py,sha256=
|
|
57
|
+
akshare/economic/macro_china.py,sha256=O3pgTke7VbHMJKY3ZRU6hC_noOXnaQFPr0u2qJsebEY,148855
|
|
58
58
|
akshare/economic/macro_china_hk.py,sha256=dIBc9gAYiHZUjXLF4c3yBK-2s3iLx46GcgJGlVJpv4c,5974
|
|
59
59
|
akshare/economic/macro_china_nbs.py,sha256=nP6dI-fawch8dz7GMcfGVJsTri-FfIAkvTf3h7DT-kc,9679
|
|
60
60
|
akshare/economic/macro_constitute.py,sha256=cCfWupKJ86uUzg_pULsg1C2FleHb25mYbfE4x29VnKA,8197
|
|
@@ -120,7 +120,7 @@ akshare/futures/futures_inventory_99.py,sha256=Nvw39obGGhgOkk_C4jOrV4gdq78dtHPOn
|
|
|
120
120
|
akshare/futures/futures_inventory_em.py,sha256=C5nt4F51WB-oc8o3GrMvEGo0SO2mIq_H1vHVl42vzT0,2340
|
|
121
121
|
akshare/futures/futures_news_baidu.py,sha256=uqXUgQa7_aNjj1g4IBt6Ic4DhlsuBvjEEYC3OTPeqmA,1544
|
|
122
122
|
akshare/futures/futures_news_shmet.py,sha256=NQXUo6bwsDwxWID-5CUgJxENWtiaDK4JgMaTEmurYvM,2464
|
|
123
|
-
akshare/futures/futures_roll_yield.py,sha256=
|
|
123
|
+
akshare/futures/futures_roll_yield.py,sha256=RiwN0yYwzYy8zGhmTopBwJ37aUQ7Llwh3eQRzn0apaE,6135
|
|
124
124
|
akshare/futures/futures_rule.py,sha256=38fJnUTohGqbwE65ZR1id7Oy-0DS-ODrGYsmx2jtGZ8,1571
|
|
125
125
|
akshare/futures/futures_settlement_price_sgx.py,sha256=R0PZOEkdYDf7H242iHYz70rxdvsMWoAL60bmGlj-0GY,2428
|
|
126
126
|
akshare/futures/futures_spot_stock_em.py,sha256=43CPkAouDu691M6aCMdO1SGKglTak2aba2Np7ftkAdg,3523
|
|
@@ -383,8 +383,8 @@ akshare/utils/token_process.py,sha256=K4rGXjh_tgugbRcyOK2h2x0jP3PT65IIK7nxhUKhOe
|
|
|
383
383
|
akshare/utils/tqdm.py,sha256=MuPNwcswkOGjwWQOMWXi9ZvQ_RmW4obCWRj2i7HM7FE,847
|
|
384
384
|
tests/__init__.py,sha256=gNzhlO0UPjFq6Ieb38kaVIODXv4cTDByrdohAZnDYt4,82
|
|
385
385
|
tests/test_func.py,sha256=j1MGYbZI2if2j_LY1S4FLsf4qfq4NwVqD5wmRlv5Log,832
|
|
386
|
-
akshare-1.15.
|
|
387
|
-
akshare-1.15.
|
|
388
|
-
akshare-1.15.
|
|
389
|
-
akshare-1.15.
|
|
390
|
-
akshare-1.15.
|
|
386
|
+
akshare-1.15.43.dist-info/LICENSE,sha256=mmSZCPgfHiVw34LXuFArd-SUgQtBJ_QsIlh-kWlDHfs,1073
|
|
387
|
+
akshare-1.15.43.dist-info/METADATA,sha256=5B4yFcajS1Zn5CFYJDXvjfhWWYlYIkd_N2qI51xOex8,13423
|
|
388
|
+
akshare-1.15.43.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
|
|
389
|
+
akshare-1.15.43.dist-info/top_level.txt,sha256=jsf9ZzZPmHaISTVumQPsAw7vv7Yv-PdEVW70SMEelQQ,14
|
|
390
|
+
akshare-1.15.43.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|