akshare 1.17.66__py3-none-any.whl → 1.17.68__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 +10 -7
- akshare/option/option_commodity.py +156 -169
- akshare/option/option_czce.py +5 -5
- akshare/stock_feature/stock_hist_tx.py +3 -2
- {akshare-1.17.66.dist-info → akshare-1.17.68.dist-info}/METADATA +1 -1
- {akshare-1.17.66.dist-info → akshare-1.17.68.dist-info}/RECORD +9 -9
- {akshare-1.17.66.dist-info → akshare-1.17.68.dist-info}/WHEEL +0 -0
- {akshare-1.17.66.dist-info → akshare-1.17.68.dist-info}/licenses/LICENSE +0 -0
- {akshare-1.17.66.dist-info → akshare-1.17.68.dist-info}/top_level.txt +0 -0
akshare/__init__.py
CHANGED
|
@@ -3173,9 +3173,11 @@ amac_manager_cancelled_info # 中国证券投资基金业协会-信息公示-诚
|
|
|
3173
3173
|
1.17.64 fix: fix stock_individual_spot_xq interface
|
|
3174
3174
|
1.17.65 fix: fix futures_dce_warehouse_receipt interface
|
|
3175
3175
|
1.17.66 fix: fix futures_delivery_czce interface
|
|
3176
|
+
1.17.67 fix: fix stock_zh_a_hist_tx interface
|
|
3177
|
+
1.17.68 fix: fix option_hist_dce interface
|
|
3176
3178
|
"""
|
|
3177
3179
|
|
|
3178
|
-
__version__ = "1.17.
|
|
3180
|
+
__version__ = "1.17.68"
|
|
3179
3181
|
__author__ = "AKFamily"
|
|
3180
3182
|
|
|
3181
3183
|
import sys
|
|
@@ -5172,7 +5174,7 @@ from akshare.fx.currency_investing import (
|
|
|
5172
5174
|
"""
|
|
5173
5175
|
商品期权-郑州商品交易所-期权-历史数据
|
|
5174
5176
|
"""
|
|
5175
|
-
from akshare.option.option_czce import
|
|
5177
|
+
from akshare.option.option_czce import option_hist_yearly_czce
|
|
5176
5178
|
|
|
5177
5179
|
"""
|
|
5178
5180
|
宏观-经济数据-银行间拆借利率
|
|
@@ -5646,11 +5648,12 @@ from akshare.bond.bond_china import (
|
|
|
5646
5648
|
商品期权
|
|
5647
5649
|
"""
|
|
5648
5650
|
from akshare.option.option_commodity import (
|
|
5649
|
-
|
|
5650
|
-
|
|
5651
|
-
|
|
5652
|
-
|
|
5653
|
-
|
|
5651
|
+
option_hist_dce,
|
|
5652
|
+
option_hist_czce,
|
|
5653
|
+
option_hist_shfe,
|
|
5654
|
+
option_vol_gfex,
|
|
5655
|
+
option_hist_gfex,
|
|
5656
|
+
option_vol_shfe,
|
|
5654
5657
|
)
|
|
5655
5658
|
|
|
5656
5659
|
"""
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env python
|
|
2
2
|
# -*- coding:utf-8 -*-
|
|
3
3
|
"""
|
|
4
|
-
Date: 2025/
|
|
4
|
+
Date: 2025/10/17 21:00
|
|
5
5
|
Desc: 商品期权数据
|
|
6
6
|
说明:
|
|
7
7
|
(1) 价格:自2019年12月02日起,纤维板报价单位由元/张改为元/立方米
|
|
@@ -16,8 +16,7 @@ Desc: 商品期权数据
|
|
|
16
16
|
|
|
17
17
|
import datetime
|
|
18
18
|
import warnings
|
|
19
|
-
from io import StringIO
|
|
20
|
-
from typing import Tuple, Any, Optional
|
|
19
|
+
from io import StringIO
|
|
21
20
|
|
|
22
21
|
import pandas as pd
|
|
23
22
|
import requests
|
|
@@ -25,15 +24,14 @@ import requests
|
|
|
25
24
|
from akshare.option.cons import (
|
|
26
25
|
get_calendar,
|
|
27
26
|
convert_date,
|
|
28
|
-
DCE_DAILY_OPTION_URL,
|
|
29
27
|
CZCE_DAILY_OPTION_URL_3,
|
|
30
28
|
SHFE_HEADERS,
|
|
31
29
|
)
|
|
32
30
|
|
|
33
31
|
|
|
34
|
-
def
|
|
35
|
-
symbol: str = "
|
|
36
|
-
) ->
|
|
32
|
+
def option_hist_dce(
|
|
33
|
+
symbol: str = "聚丙烯期权", trade_date: str = "20251016"
|
|
34
|
+
) -> pd.DataFrame:
|
|
37
35
|
"""
|
|
38
36
|
大连商品交易所-期权-日频行情数据
|
|
39
37
|
http://www.dce.com.cn/
|
|
@@ -46,125 +44,103 @@ def option_dce_daily(
|
|
|
46
44
|
:return: 日频行情数据
|
|
47
45
|
:rtype: pandas.DataFrame
|
|
48
46
|
"""
|
|
47
|
+
option_code_map = {
|
|
48
|
+
"玉米期权": "c",
|
|
49
|
+
"豆粕期权": "m",
|
|
50
|
+
"铁矿石期权": "i",
|
|
51
|
+
"液化石油气期权": "pg",
|
|
52
|
+
"聚乙烯期权": "l",
|
|
53
|
+
"聚氯乙烯期权": "v",
|
|
54
|
+
"聚丙烯期权": "pp",
|
|
55
|
+
"棕榈油期权": "p",
|
|
56
|
+
"黄大豆1号期权": "a",
|
|
57
|
+
"黄大豆2号期权": "b",
|
|
58
|
+
"豆油期权": "y",
|
|
59
|
+
"乙二醇期权": "eg",
|
|
60
|
+
"苯乙烯期权": "eb",
|
|
61
|
+
"鸡蛋期权": "jd",
|
|
62
|
+
"玉米淀粉期权": "cs",
|
|
63
|
+
"生猪期权": "lh",
|
|
64
|
+
"原木期权": "lg"
|
|
65
|
+
}
|
|
49
66
|
calendar = get_calendar()
|
|
50
67
|
day = convert_date(trade_date) if trade_date is not None else datetime.date.today()
|
|
51
68
|
if day.strftime("%Y%m%d") not in calendar:
|
|
52
69
|
warnings.warn("%s非交易日" % day.strftime("%Y%m%d"))
|
|
53
|
-
return pd.DataFrame()
|
|
54
|
-
url =
|
|
70
|
+
return pd.DataFrame()
|
|
71
|
+
url = "http://www.dce.com.cn/dcereport/publicweb/dailystat/dayQuotes"
|
|
55
72
|
payload = {
|
|
56
|
-
"
|
|
57
|
-
"
|
|
58
|
-
"
|
|
59
|
-
"
|
|
60
|
-
"
|
|
61
|
-
"
|
|
73
|
+
"contractId": "",
|
|
74
|
+
"lang": "zh",
|
|
75
|
+
"optionSeries": "",
|
|
76
|
+
"statisticsType": 0,
|
|
77
|
+
"tradeDate": f"{trade_date}",
|
|
78
|
+
"tradeType": "2",
|
|
79
|
+
"varietyId": f"{option_code_map[symbol]}",
|
|
62
80
|
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
elif symbol == "豆油期权":
|
|
125
|
-
result_one_df, result_two_df = (
|
|
126
|
-
table_df[table_df["商品名称"] == "豆油"],
|
|
127
|
-
another_df[another_df.iloc[:, 0].str.contains("y")],
|
|
128
|
-
)
|
|
129
|
-
elif symbol == "乙二醇期权":
|
|
130
|
-
result_one_df, result_two_df = (
|
|
131
|
-
table_df[table_df["商品名称"] == "乙二醇"],
|
|
132
|
-
another_df[another_df.iloc[:, 0].str.contains("eg")],
|
|
133
|
-
)
|
|
134
|
-
elif symbol == "苯乙烯期权":
|
|
135
|
-
result_one_df, result_two_df = (
|
|
136
|
-
table_df[table_df["商品名称"] == "苯乙烯"],
|
|
137
|
-
another_df[another_df.iloc[:, 0].str.contains("eb")],
|
|
138
|
-
)
|
|
139
|
-
elif symbol == "鸡蛋期权":
|
|
140
|
-
result_one_df, result_two_df = (
|
|
141
|
-
table_df[table_df["商品名称"] == "鸡蛋"],
|
|
142
|
-
another_df[another_df.iloc[:, 0].str.contains("jd")],
|
|
143
|
-
)
|
|
144
|
-
elif symbol == "玉米淀粉期权":
|
|
145
|
-
result_one_df, result_two_df = (
|
|
146
|
-
table_df[table_df["商品名称"] == "玉米淀粉"],
|
|
147
|
-
another_df[another_df.iloc[:, 0].str.contains("cs")],
|
|
148
|
-
)
|
|
149
|
-
elif symbol == "生猪期权":
|
|
150
|
-
result_one_df, result_two_df = (
|
|
151
|
-
table_df[table_df["商品名称"] == "生猪"],
|
|
152
|
-
another_df[another_df.iloc[:, 0].str.contains("lh")],
|
|
153
|
-
)
|
|
154
|
-
elif symbol == "原木期权":
|
|
155
|
-
result_one_df, result_two_df = (
|
|
156
|
-
table_df[table_df["商品名称"] == "原木"],
|
|
157
|
-
another_df[another_df.iloc[:, 0].str.contains("lg")],
|
|
158
|
-
)
|
|
159
|
-
elif symbol == "纯苯期权":
|
|
160
|
-
result_one_df, result_two_df = (
|
|
161
|
-
table_df[table_df["商品名称"] == "纯苯"],
|
|
162
|
-
another_df[another_df.iloc[:, 0].str.contains("bz")],
|
|
81
|
+
r = requests.post(url, json=payload)
|
|
82
|
+
data_json = r.json()
|
|
83
|
+
temp_df = pd.DataFrame(data_json["data"])
|
|
84
|
+
temp_df.rename(
|
|
85
|
+
columns={
|
|
86
|
+
'variety': '品种名称',
|
|
87
|
+
'contractId': '合约',
|
|
88
|
+
'open': '开盘价',
|
|
89
|
+
'high': '最高价',
|
|
90
|
+
'low': '最低价',
|
|
91
|
+
'close': '收盘价',
|
|
92
|
+
'lastClear': '前结算价',
|
|
93
|
+
'clearPrice': '结算价',
|
|
94
|
+
'diff': '涨跌',
|
|
95
|
+
'diff1': '涨跌1',
|
|
96
|
+
'delta': 'Delta',
|
|
97
|
+
'volumn': '成交量', # 注意:你写的是“volumn”,可能是拼写错误,应为“volume”
|
|
98
|
+
'openInterest': '持仓量',
|
|
99
|
+
'diffI': '持仓量变化',
|
|
100
|
+
'turnover': '成交额',
|
|
101
|
+
'matchQtySum': '行权量',
|
|
102
|
+
'impliedVolatility': '隐含波动率(%)',
|
|
103
|
+
}, inplace=True
|
|
104
|
+
)
|
|
105
|
+
temp_df = temp_df[[
|
|
106
|
+
'品种名称',
|
|
107
|
+
'合约',
|
|
108
|
+
'开盘价',
|
|
109
|
+
'最高价',
|
|
110
|
+
'最低价',
|
|
111
|
+
'收盘价',
|
|
112
|
+
'前结算价',
|
|
113
|
+
'结算价',
|
|
114
|
+
'涨跌',
|
|
115
|
+
'涨跌1',
|
|
116
|
+
'Delta',
|
|
117
|
+
'隐含波动率(%)',
|
|
118
|
+
'成交量',
|
|
119
|
+
'持仓量',
|
|
120
|
+
'持仓量变化',
|
|
121
|
+
'成交额',
|
|
122
|
+
'行权量'
|
|
123
|
+
]]
|
|
124
|
+
comma_cols = ['开盘价',
|
|
125
|
+
'最高价',
|
|
126
|
+
'最低价',
|
|
127
|
+
'收盘价',
|
|
128
|
+
'前结算价',
|
|
129
|
+
'结算价',
|
|
130
|
+
'涨跌',
|
|
131
|
+
'涨跌1',
|
|
132
|
+
'Delta',
|
|
133
|
+
'隐含波动率(%)',
|
|
134
|
+
'成交额',
|
|
135
|
+
] # 需要处理的列
|
|
136
|
+
for col in comma_cols:
|
|
137
|
+
temp_df[col] = (
|
|
138
|
+
temp_df[col]
|
|
139
|
+
.astype(str)
|
|
140
|
+
.str.replace(',', '')
|
|
141
|
+
.pipe(pd.to_numeric, errors='coerce')
|
|
163
142
|
)
|
|
164
|
-
|
|
165
|
-
result_two_df.reset_index(inplace=True, drop=True)
|
|
166
|
-
result_two_df.columns.name = None
|
|
167
|
-
return result_one_df, result_two_df
|
|
143
|
+
return temp_df
|
|
168
144
|
|
|
169
145
|
|
|
170
146
|
def __option_czce_daily_convert_numeric_columns(df):
|
|
@@ -204,7 +180,7 @@ def __option_czce_daily_convert_numeric_columns(df):
|
|
|
204
180
|
return df_copy
|
|
205
181
|
|
|
206
182
|
|
|
207
|
-
def
|
|
183
|
+
def option_hist_czce(
|
|
208
184
|
symbol: str = "白糖期权", trade_date: str = "20191017"
|
|
209
185
|
) -> pd.DataFrame:
|
|
210
186
|
"""
|
|
@@ -382,9 +358,9 @@ def option_czce_daily(
|
|
|
382
358
|
return pd.DataFrame()
|
|
383
359
|
|
|
384
360
|
|
|
385
|
-
def
|
|
361
|
+
def option_hist_shfe(
|
|
386
362
|
symbol: str = "铝期权", trade_date: str = "20250418"
|
|
387
|
-
) ->
|
|
363
|
+
) -> pd.DataFrame:
|
|
388
364
|
"""
|
|
389
365
|
上海期货交易所-期权-日频行情数据
|
|
390
366
|
https://www.shfe.com.cn/reports/tradedata/dailyandweeklydata/
|
|
@@ -400,7 +376,7 @@ def option_shfe_daily(
|
|
|
400
376
|
day = convert_date(trade_date) if trade_date is not None else datetime.date.today()
|
|
401
377
|
if day.strftime("%Y%m%d") not in calendar:
|
|
402
378
|
warnings.warn("%s非交易日" % day.strftime("%Y%m%d"))
|
|
403
|
-
return pd.DataFrame()
|
|
379
|
+
return pd.DataFrame()
|
|
404
380
|
if day > datetime.date(year=2010, month=8, day=24):
|
|
405
381
|
url = f"""https://www.shfe.com.cn/data/tradedata/option/dailydata/kx{day.strftime("%Y%m%d")}.dat"""
|
|
406
382
|
try:
|
|
@@ -411,14 +387,10 @@ def option_shfe_daily(
|
|
|
411
387
|
row
|
|
412
388
|
for row in json_data["o_curinstrument"]
|
|
413
389
|
if row["INSTRUMENTID"] not in ["小计", "合计"]
|
|
414
|
-
|
|
390
|
+
and row["INSTRUMENTID"] != ""
|
|
415
391
|
]
|
|
416
392
|
)
|
|
417
393
|
contract_df = table_df[table_df["PRODUCTNAME"].str.strip() == symbol]
|
|
418
|
-
volatility_df = pd.DataFrame(json_data["o_cursigma"])
|
|
419
|
-
volatility_df = volatility_df[
|
|
420
|
-
volatility_df["PRODUCTNAME"].str.strip() == symbol
|
|
421
|
-
]
|
|
422
394
|
contract_df.rename(
|
|
423
395
|
columns={
|
|
424
396
|
"INSTRUMENTID": "合约代码",
|
|
@@ -457,6 +429,42 @@ def option_shfe_daily(
|
|
|
457
429
|
"行权量",
|
|
458
430
|
]
|
|
459
431
|
]
|
|
432
|
+
contract_df.reset_index(inplace=True, drop=True)
|
|
433
|
+
return contract_df
|
|
434
|
+
except: # noqa: E722
|
|
435
|
+
return pd.DataFrame()
|
|
436
|
+
else:
|
|
437
|
+
return pd.DataFrame()
|
|
438
|
+
|
|
439
|
+
|
|
440
|
+
def option_vol_shfe(
|
|
441
|
+
symbol: str = "铝期权", trade_date: str = "20250418"
|
|
442
|
+
) -> pd.DataFrame:
|
|
443
|
+
"""
|
|
444
|
+
上海期货交易所-期权-日频行情数据
|
|
445
|
+
https://www.shfe.com.cn/reports/tradedata/dailyandweeklydata/
|
|
446
|
+
:param trade_date: 交易日
|
|
447
|
+
:type trade_date: str
|
|
448
|
+
:param symbol: choice of {'原油期权', '铜期权', '铝期权', '锌期权', '铅期权', '螺纹钢期权', '镍期权', '锡期权', '氧化铝期权',
|
|
449
|
+
'黄金期权', '白银期权', '丁二烯橡胶期权', '天胶期权'}
|
|
450
|
+
:type symbol: str
|
|
451
|
+
:return: 日频行情数据
|
|
452
|
+
:rtype: pandas.DataFrame
|
|
453
|
+
"""
|
|
454
|
+
calendar = get_calendar()
|
|
455
|
+
day = convert_date(trade_date) if trade_date is not None else datetime.date.today()
|
|
456
|
+
if day.strftime("%Y%m%d") not in calendar:
|
|
457
|
+
warnings.warn("%s非交易日" % day.strftime("%Y%m%d"))
|
|
458
|
+
return pd.DataFrame()
|
|
459
|
+
if day > datetime.date(year=2010, month=8, day=24):
|
|
460
|
+
url = f"""https://www.shfe.com.cn/data/tradedata/option/dailydata/kx{day.strftime("%Y%m%d")}.dat"""
|
|
461
|
+
try:
|
|
462
|
+
r = requests.get(url, headers=SHFE_HEADERS)
|
|
463
|
+
json_data = r.json()
|
|
464
|
+
volatility_df = pd.DataFrame(json_data["o_cursigma"])
|
|
465
|
+
volatility_df = volatility_df[
|
|
466
|
+
volatility_df["PRODUCTNAME"].str.strip() == symbol
|
|
467
|
+
]
|
|
460
468
|
volatility_df.rename(columns={
|
|
461
469
|
"INSTRUMENTID": "合约系列",
|
|
462
470
|
"VOLUME": "成交量",
|
|
@@ -477,16 +485,15 @@ def option_shfe_daily(
|
|
|
477
485
|
"隐含波动率",
|
|
478
486
|
]
|
|
479
487
|
]
|
|
480
|
-
contract_df.reset_index(inplace=True, drop=True)
|
|
481
488
|
volatility_df.reset_index(inplace=True, drop=True)
|
|
482
|
-
return
|
|
489
|
+
return volatility_df
|
|
483
490
|
except: # noqa: E722
|
|
484
|
-
return pd.DataFrame()
|
|
491
|
+
return pd.DataFrame()
|
|
485
492
|
else:
|
|
486
|
-
return pd.DataFrame()
|
|
493
|
+
return pd.DataFrame()
|
|
487
494
|
|
|
488
495
|
|
|
489
|
-
def
|
|
496
|
+
def option_hist_gfex(symbol: str = "工业硅", trade_date: str = "20230724") -> pd.DataFrame:
|
|
490
497
|
"""
|
|
491
498
|
广州期货交易所-日频率-量价数据
|
|
492
499
|
http://www.gfex.com.cn/gfex/rihq/hqsj_tjsj.shtml
|
|
@@ -501,7 +508,7 @@ def option_gfex_daily(symbol: str = "工业硅", trade_date: str = "20230724"):
|
|
|
501
508
|
day = convert_date(trade_date) if trade_date is not None else datetime.date.today()
|
|
502
509
|
if day.strftime("%Y%m%d") not in calendar:
|
|
503
510
|
warnings.warn("%s非交易日" % day.strftime("%Y%m%d"))
|
|
504
|
-
return
|
|
511
|
+
return pd.DataFrame()
|
|
505
512
|
url = "http://www.gfex.com.cn/u/interfacesWebTiDayQuotes/loadList"
|
|
506
513
|
payload = {"trade_date": day.strftime("%Y%m%d"), "trade_type": "1"}
|
|
507
514
|
headers = {
|
|
@@ -517,7 +524,7 @@ def option_gfex_daily(symbol: str = "工业硅", trade_date: str = "20230724"):
|
|
|
517
524
|
"Proxy-Connection": "keep-alive",
|
|
518
525
|
"Referer": "http://www.gfex.com.cn/gfex/rihq/hqsj_tjsj.shtml",
|
|
519
526
|
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
|
520
|
-
|
|
527
|
+
"Chrome/108.0.0.0 Safari/537.36",
|
|
521
528
|
"X-Requested-With": "XMLHttpRequest",
|
|
522
529
|
"content-type": "application/x-www-form-urlencoded",
|
|
523
530
|
}
|
|
@@ -573,7 +580,7 @@ def option_gfex_daily(symbol: str = "工业硅", trade_date: str = "20230724"):
|
|
|
573
580
|
return temp_df
|
|
574
581
|
|
|
575
582
|
|
|
576
|
-
def
|
|
583
|
+
def option_vol_gfex(symbol: str = "碳酸锂", trade_date: str = "20230724"):
|
|
577
584
|
"""
|
|
578
585
|
广州期货交易所-日频率-合约隐含波动率
|
|
579
586
|
http://www.gfex.com.cn/gfex/rihq/hqsj_tjsj.shtml
|
|
@@ -609,7 +616,7 @@ def option_gfex_vol_daily(symbol: str = "碳酸锂", trade_date: str = "20230724
|
|
|
609
616
|
"Proxy-Connection": "keep-alive",
|
|
610
617
|
"Referer": "http://www.gfex.com.cn/gfex/rihq/hqsj_tjsj.shtml",
|
|
611
618
|
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
|
|
612
|
-
|
|
619
|
+
"Chrome/108.0.0.0 Safari/537.36",
|
|
613
620
|
"X-Requested-With": "XMLHttpRequest",
|
|
614
621
|
"content-type": "application/x-www-form-urlencoded",
|
|
615
622
|
}
|
|
@@ -636,40 +643,20 @@ def option_gfex_vol_daily(symbol: str = "碳酸锂", trade_date: str = "20230724
|
|
|
636
643
|
|
|
637
644
|
|
|
638
645
|
if __name__ == "__main__":
|
|
639
|
-
|
|
640
|
-
print(
|
|
646
|
+
option_hist_czce_df = option_hist_czce(symbol="白糖期权", trade_date="20250812")
|
|
647
|
+
print(option_hist_czce_df)
|
|
641
648
|
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
)
|
|
645
|
-
print(option_dce_daily_one)
|
|
646
|
-
print(option_dce_daily_two)
|
|
649
|
+
option_hist_dce_df = option_hist_dce(symbol="聚丙烯期权", trade_date="20250812")
|
|
650
|
+
print(option_hist_dce_df)
|
|
647
651
|
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
)
|
|
651
|
-
print(option_dce_daily_one)
|
|
652
|
-
print(option_dce_daily_two)
|
|
652
|
+
option_hist_shfe_df = option_hist_shfe(symbol="天胶期权", trade_date="20250418")
|
|
653
|
+
print(option_hist_shfe_df)
|
|
653
654
|
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
)
|
|
657
|
-
print(option_dce_daily_one)
|
|
658
|
-
print(option_dce_daily_two)
|
|
655
|
+
option_vol_shfe_df = option_vol_shfe(symbol="天胶期权", trade_date="20250418")
|
|
656
|
+
print(option_vol_shfe_df)
|
|
659
657
|
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
)
|
|
663
|
-
print(option_shfe_daily_one)
|
|
664
|
-
print(option_shfe_daily_two)
|
|
665
|
-
|
|
666
|
-
option_gfex_daily_df = option_gfex_daily(symbol="工业硅", trade_date="20250801")
|
|
667
|
-
print(option_gfex_daily_df)
|
|
668
|
-
|
|
669
|
-
option_gfex_vol_daily_df = option_gfex_vol_daily(
|
|
670
|
-
symbol="多晶硅", trade_date="20250123"
|
|
671
|
-
)
|
|
672
|
-
print(option_gfex_vol_daily_df)
|
|
658
|
+
option_hist_gfex_df = option_hist_gfex(symbol="工业硅", trade_date="20250801")
|
|
659
|
+
print(option_hist_gfex_df)
|
|
673
660
|
|
|
674
|
-
|
|
675
|
-
print(
|
|
661
|
+
option_vol_gfex_df = option_vol_gfex(symbol="多晶硅", trade_date="20250123")
|
|
662
|
+
print(option_vol_gfex_df)
|
akshare/option/option_czce.py
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env python
|
|
2
2
|
# -*- coding:utf-8 -*-
|
|
3
3
|
"""
|
|
4
|
-
Date: 2025/
|
|
4
|
+
Date: 2025/10/17 16:30
|
|
5
5
|
Desc: 郑州商品交易所-交易数据-历史行情下载-期权历史行情下载
|
|
6
6
|
http://www.czce.com.cn/cn/jysj/lshqxz/H770319index_1.htm
|
|
7
7
|
自 20200101 起,成交量、空盘量、成交额、行权量均为单边计算
|
|
@@ -27,14 +27,14 @@ http://www.czce.com.cn/cn/jysj/lshqxz/H770319index_1.htm
|
|
|
27
27
|
"PR": "20241227"
|
|
28
28
|
"""
|
|
29
29
|
|
|
30
|
-
from io import StringIO
|
|
31
30
|
import warnings
|
|
31
|
+
from io import StringIO
|
|
32
32
|
|
|
33
33
|
import pandas as pd
|
|
34
34
|
import requests
|
|
35
35
|
|
|
36
36
|
|
|
37
|
-
def
|
|
37
|
+
def option_hist_yearly_czce(symbol: str = "SR", year: str = "2021") -> pd.DataFrame:
|
|
38
38
|
"""
|
|
39
39
|
郑州商品交易所-交易数据-历史行情下载-期权历史行情下载
|
|
40
40
|
http://www.czce.com.cn/cn/jysj/lshqxz/H770319index_1.htm
|
|
@@ -78,5 +78,5 @@ def option_czce_hist(symbol: str = "SR", year: str = "2021") -> pd.DataFrame:
|
|
|
78
78
|
|
|
79
79
|
|
|
80
80
|
if __name__ == "__main__":
|
|
81
|
-
|
|
82
|
-
print(
|
|
81
|
+
option_hist_yearly_czce_df = option_hist_yearly_czce(symbol="RM", year="2025")
|
|
82
|
+
print(option_hist_yearly_czce_df)
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env python
|
|
2
2
|
# -*- coding:utf-8 -*-
|
|
3
3
|
"""
|
|
4
|
-
Date:
|
|
4
|
+
Date: 2025/10/15 22:30
|
|
5
5
|
Desc: 腾讯证券-行情首页-沪深京A股
|
|
6
6
|
https://quote.eastmoney.com/
|
|
7
7
|
"""
|
|
@@ -77,7 +77,8 @@ def stock_zh_a_hist_tx(
|
|
|
77
77
|
big_df["low"] = pd.to_numeric(big_df["low"], errors="coerce")
|
|
78
78
|
big_df["amount"] = pd.to_numeric(big_df["amount"], errors="coerce")
|
|
79
79
|
big_df.drop_duplicates(inplace=True, ignore_index=True)
|
|
80
|
-
big_df.index = pd.to_datetime(big_df["date"])
|
|
80
|
+
big_df.index = pd.to_datetime(big_df["date"], errors="coerce")
|
|
81
|
+
big_df.sort_index(inplace=True)
|
|
81
82
|
big_df = big_df[start_date:end_date]
|
|
82
83
|
big_df.reset_index(inplace=True, drop=True)
|
|
83
84
|
return big_df
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
akshare/__init__.py,sha256=
|
|
1
|
+
akshare/__init__.py,sha256=h7KzT213r-8t0QG5W31eMBYtxWhYcE5BS2ZX1Jb7QHI,199390
|
|
2
2
|
akshare/datasets.py,sha256=rKuRNZrqi6IMsZ9nyvO3Rx02js0tH3zMLjz8HQNAoPQ,963
|
|
3
3
|
akshare/exceptions.py,sha256=WEJjIhSmJ_xXNW6grwV4nufE_cfmmyuhmueVGiN1VAg,878
|
|
4
4
|
akshare/request.py,sha256=HtFFf9MhfEibR-ETWe-1Tts6ELU4VKSqA-ghaXjegQM,4252
|
|
@@ -199,11 +199,11 @@ akshare/nlp/nlp_interface.py,sha256=PyZjT3PkuTbloop-JwLwZ2kNi22zdO-r_pRUWQ5SmgM,
|
|
|
199
199
|
akshare/option/__init__.py,sha256=RMTf1bT5EOE3ttWpn3hGu1LtUmsVxDoa0W7W0gXHOy8,81
|
|
200
200
|
akshare/option/cons.py,sha256=WgeX4UvkvFmTsNTMYwXcIJkqSfCw6A3hn3qM73QrIM0,4817
|
|
201
201
|
akshare/option/option_comm_qihuo.py,sha256=kjbdp-94KJJJi1ex5U03abtlgviqwP0Aahb6FwddPkk,3128
|
|
202
|
-
akshare/option/option_commodity.py,sha256=
|
|
202
|
+
akshare/option/option_commodity.py,sha256=tgWqOXBy-GW78qRcsDdn6br-DDWhldQtix5nDN2A4EE,26333
|
|
203
203
|
akshare/option/option_commodity_sina.py,sha256=NN2qywfGZphKlHiEuwU7_3aNXTEKaXH0UrU8xLIQ5XQ,7731
|
|
204
204
|
akshare/option/option_current_sse.py,sha256=jdzQPTXNqFLURMdbqovhOeQNvemN59beuotIJzhdNX8,2033
|
|
205
205
|
akshare/option/option_current_szse.py,sha256=_6QTRnpLoVwXnUtSPDR1pqEq27Lnksq_9Sl_O06kP28,3551
|
|
206
|
-
akshare/option/option_czce.py,sha256=
|
|
206
|
+
akshare/option/option_czce.py,sha256=9FCgqgxrHX3DBdvg3F6HZ1Hs7uSO7w21KJWpS8Wykgg,2538
|
|
207
207
|
akshare/option/option_daily_stats_sse_szse.py,sha256=Igqi2IPX_1UT2qgIsPDJtSZ660TjvHy9twn_q7Vrodw,4932
|
|
208
208
|
akshare/option/option_em.py,sha256=9Vm5tDk-i8a0ybzWwa13sUBbWPp5HskYzBlfcs-rF7g,5830
|
|
209
209
|
akshare/option/option_finance.py,sha256=7rnEeHo-7Sddrs36Q4c99CXL_9m8IJzw9S1Aqh3Bw90,12568
|
|
@@ -331,7 +331,7 @@ akshare/stock_feature/stock_gdzjc_em.py,sha256=3bx2kQmM7OeZWoa9WtkwoCXVaMfIUZw23
|
|
|
331
331
|
akshare/stock_feature/stock_gpzy_em.py,sha256=FgyjVgdoxrtMM7WwxdQJxK0mYGJklIHaT9KmMCFmEPM,17869
|
|
332
332
|
akshare/stock_feature/stock_gxl_lg.py,sha256=iX-lYPZI4c7Jh_j8P6eT8eSNLmLHl_8NjsWYJ4qiufI,2644
|
|
333
333
|
akshare/stock_feature/stock_hist_em.py,sha256=sS7qv6kNvS36YsYtx3fCX2QW_HBH6ju1fHi-KMm5p-Q,65493
|
|
334
|
-
akshare/stock_feature/stock_hist_tx.py,sha256=
|
|
334
|
+
akshare/stock_feature/stock_hist_tx.py,sha256=3Ogdg0yOtzTN8mxQDIqDxcreM3O4LstP43RYWOKZJi0,3400
|
|
335
335
|
akshare/stock_feature/stock_hk_valuation_baidu.py,sha256=_sErx4UhNsSXJgXyPfrL0aPxkW53Mg1zH9gEKoziaCA,1968
|
|
336
336
|
akshare/stock_feature/stock_hot_xq.py,sha256=P4-fLjrh-9CdVe5BQ2O5hmeSesHQAu9E49aMKmhMedM,9023
|
|
337
337
|
akshare/stock_feature/stock_hsgt_em.py,sha256=6X4izxAbApHIO1YK2nYaZCE1hdn18tTbGjJta4Q-7a0,62222
|
|
@@ -399,10 +399,10 @@ akshare/utils/func.py,sha256=4cwmXFztU86yJNONJ40KJLvsIEQHBbct4iMm3zT2v30,2315
|
|
|
399
399
|
akshare/utils/multi_decrypt.py,sha256=aWoL2iEPeuXHJg8-n7OtMKixLnIhfzepACgxfrfmQB4,1657
|
|
400
400
|
akshare/utils/token_process.py,sha256=nGtgnZGRprXJkhLXH8mcUH4TgIFwzsTOb0EaEPa0Euo,667
|
|
401
401
|
akshare/utils/tqdm.py,sha256=MuPNwcswkOGjwWQOMWXi9ZvQ_RmW4obCWRj2i7HM7FE,847
|
|
402
|
-
akshare-1.17.
|
|
402
|
+
akshare-1.17.68.dist-info/licenses/LICENSE,sha256=s18q7gS2g1F9-Cnk5eqrJG4OGWSwSxVEMzIuT6HyYNY,1073
|
|
403
403
|
tests/__init__.py,sha256=gNzhlO0UPjFq6Ieb38kaVIODXv4cTDByrdohAZnDYt4,82
|
|
404
404
|
tests/test_func.py,sha256=j1MGYbZI2if2j_LY1S4FLsf4qfq4NwVqD5wmRlv5Log,832
|
|
405
|
-
akshare-1.17.
|
|
406
|
-
akshare-1.17.
|
|
407
|
-
akshare-1.17.
|
|
408
|
-
akshare-1.17.
|
|
405
|
+
akshare-1.17.68.dist-info/METADATA,sha256=N8X0jfiSurrJfw1PUbUn9R-yFAZ4RYiwb28-5ucvmfE,12593
|
|
406
|
+
akshare-1.17.68.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
407
|
+
akshare-1.17.68.dist-info/top_level.txt,sha256=jsf9ZzZPmHaISTVumQPsAw7vv7Yv-PdEVW70SMEelQQ,14
|
|
408
|
+
akshare-1.17.68.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|