ffdata 0.2.1__tar.gz → 0.2.7__tar.gz

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 (27) hide show
  1. {ffdata-0.2.1 → ffdata-0.2.7}/PKG-INFO +1 -1
  2. {ffdata-0.2.1 → ffdata-0.2.7}/pyproject.toml +1 -1
  3. {ffdata-0.2.1 → ffdata-0.2.7}/src/ffdata/__init__.py +43 -1
  4. {ffdata-0.2.1 → ffdata-0.2.7}/src/ffdata/client.py +216 -3
  5. {ffdata-0.2.1 → ffdata-0.2.7}/src/ffdata.egg-info/PKG-INFO +1 -1
  6. {ffdata-0.2.1 → ffdata-0.2.7}/README.md +0 -0
  7. {ffdata-0.2.1 → ffdata-0.2.7}/scripts/configure_ffdata.sh +0 -0
  8. {ffdata-0.2.1 → ffdata-0.2.7}/setup.cfg +0 -0
  9. {ffdata-0.2.1 → ffdata-0.2.7}/src/ffdata/cli.py +0 -0
  10. {ffdata-0.2.1 → ffdata-0.2.7}/src/ffdata/datasets/__init__.py +0 -0
  11. {ffdata-0.2.1 → ffdata-0.2.7}/src/ffdata/datasets/manager.py +0 -0
  12. {ffdata-0.2.1 → ffdata-0.2.7}/src/ffdata/local/__init__.py +0 -0
  13. {ffdata-0.2.1 → ffdata-0.2.7}/src/ffdata/local/store.py +0 -0
  14. {ffdata-0.2.1 → ffdata-0.2.7}/src/ffdata/transport/__init__.py +0 -0
  15. {ffdata-0.2.1 → ffdata-0.2.7}/src/ffdata/transport/http.py +0 -0
  16. {ffdata-0.2.1 → ffdata-0.2.7}/src/ffdata.egg-info/SOURCES.txt +0 -0
  17. {ffdata-0.2.1 → ffdata-0.2.7}/src/ffdata.egg-info/dependency_links.txt +0 -0
  18. {ffdata-0.2.1 → ffdata-0.2.7}/src/ffdata.egg-info/entry_points.txt +0 -0
  19. {ffdata-0.2.1 → ffdata-0.2.7}/src/ffdata.egg-info/requires.txt +0 -0
  20. {ffdata-0.2.1 → ffdata-0.2.7}/src/ffdata.egg-info/top_level.txt +0 -0
  21. {ffdata-0.2.1 → ffdata-0.2.7}/src/ffdata_common/__init__.py +0 -0
  22. {ffdata-0.2.1 → ffdata-0.2.7}/src/ffdata_common/codecs/__init__.py +0 -0
  23. {ffdata-0.2.1 → ffdata-0.2.7}/src/ffdata_common/codecs/arrow.py +0 -0
  24. {ffdata-0.2.1 → ffdata-0.2.7}/src/ffdata_common/errors.py +0 -0
  25. {ffdata-0.2.1 → ffdata-0.2.7}/src/ffdata_common/protocol.py +0 -0
  26. {ffdata-0.2.1 → ffdata-0.2.7}/src/ffdata_common/schemas/__init__.py +0 -0
  27. {ffdata-0.2.1 → ffdata-0.2.7}/src/ffdata_common/schemas/manifest.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ffdata
3
- Version: 0.2.1
3
+ Version: 0.2.7
4
4
  Summary: ffdata lightweight Python client for governed financial-data APIs
5
5
  Requires-Python: >=3.12
6
6
  Description-Content-Type: text/markdown
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "ffdata"
3
- version = "0.2.1"
3
+ version = "0.2.7"
4
4
  description = "ffdata lightweight Python client for governed financial-data APIs"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.12"
@@ -77,6 +77,26 @@ def index_weight(*args: Any, **kwargs: Any):
77
77
  return _client().index_weight(*args, **kwargs)
78
78
 
79
79
 
80
+ def index_industry(*args: Any, **kwargs: Any):
81
+ """通过默认客户端查询指数与行业对应关系(行业代码/名称/级别)。"""
82
+ return _client().index_industry(*args, **kwargs)
83
+
84
+
85
+ def index_performance(*args: Any, **kwargs: Any):
86
+ """通过默认客户端查询指数区间行情表现(12 个区间,120 列)。"""
87
+ return _client().index_performance(*args, **kwargs)
88
+
89
+
90
+ def index_valuation(*args: Any, **kwargs: Any):
91
+ """通过默认客户端查询指数估值指标(33 列)。"""
92
+ return _client().index_valuation(*args, **kwargs)
93
+
94
+
95
+ def index_fina_indicator(*args: Any, **kwargs: Any):
96
+ """通过默认客户端查询指数财务指标(季频,118 列)。"""
97
+ return _client().index_fina_indicator(*args, **kwargs)
98
+
99
+
80
100
  def etf_basic(*args: Any, **kwargs: Any):
81
101
  """通过默认客户端查询 ETF 基础信息(返回含 ETF 与跟踪目标两个聚源内码)。"""
82
102
  return _client().etf_basic(*args, **kwargs)
@@ -93,7 +113,7 @@ def etf_adj_daily(*args: Any, **kwargs: Any):
93
113
 
94
114
 
95
115
  def cb_basic(*args: Any, **kwargs: Any):
96
- """通过默认客户端查询可转债基本信息(125 列,含条款文本与最新评级)。"""
116
+ """通过默认客户端查询可转债基本信息(124 列,含条款文本与最新评级)。"""
97
117
  return _client().cb_basic(*args, **kwargs)
98
118
 
99
119
 
@@ -112,11 +132,26 @@ def cb_issue(*args: Any, **kwargs: Any):
112
132
  return _client().cb_issue(*args, **kwargs)
113
133
 
114
134
 
135
+ def bond_yield_curve(*args: Any, **kwargs: Any):
136
+ """通过默认客户端查询中债债券收益率曲线(11 列,含到期/即期/远期 N、K)。"""
137
+ return _client().bond_yield_curve(*args, **kwargs)
138
+
139
+
140
+ def bond_sap_yield_curve(*args: Any, **kwargs: Any):
141
+ """通过默认客户端查询全球(美国/日本)国债收益率曲线(12 列,仅到期)。"""
142
+ return _client().bond_sap_yield_curve(*args, **kwargs)
143
+
144
+
115
145
  def fund_basic(*args: Any, **kwargs: Any):
116
146
  """通过默认客户端查询公募基金列表(71 列,含管理人/托管人全称与投资范围)。"""
117
147
  return _client().fund_basic(*args, **kwargs)
118
148
 
119
149
 
150
+ def fund_stock_portfolio(*args: Any, **kwargs: Any):
151
+ """通过默认客户端查询公募基金股票组合明细(半年度,12 列)。"""
152
+ return _client().fund_stock_portfolio(*args, **kwargs)
153
+
154
+
120
155
  def macro_indicator_basic(*args: Any, **kwargs: Any):
121
156
  return _client().macro_indicator_basic(*args, **kwargs)
122
157
 
@@ -137,6 +172,8 @@ def stock_basic(*args: Any, **kwargs: Any):
137
172
 
138
173
  __all__ = [
139
174
  "Client",
175
+ "bond_sap_yield_curve",
176
+ "bond_yield_curve",
140
177
  "cb_basic",
141
178
  "cb_daily",
142
179
  "cb_deriv",
@@ -146,9 +183,14 @@ __all__ = [
146
183
  "etf_basic",
147
184
  "etf_daily",
148
185
  "fund_basic",
186
+ "fund_stock_portfolio",
149
187
  "index_basic",
150
188
  "index_daily",
189
+ "index_fina_indicator",
190
+ "index_performance",
191
+ "index_valuation",
151
192
  "index_weight",
193
+ "index_industry",
152
194
  "macro_indicator_basic",
153
195
  "macro_indicator_data",
154
196
  "query",
@@ -100,7 +100,11 @@ class Client:
100
100
  max_rows: int = 1_000,
101
101
  fields: list[str] | None = None,
102
102
  ) -> pd.DataFrame:
103
- """通过独立权限的服务端接口执行单条受限 SELECT。"""
103
+ """通过独立权限的服务端接口执行单条受限 SELECT。
104
+
105
+ ``max_rows`` 为同步返回行数上限,默认 1,000,最多 50,000;结果超出上限时
106
+ 服务端返回 413 而不是截断。需要更大结果集时使用 :meth:`create_export`。
107
+ """
104
108
  return self.query(
105
109
  "sql_query",
106
110
  sql=sql,
@@ -245,6 +249,110 @@ class Client:
245
249
  fields=fields,
246
250
  )
247
251
 
252
+ def index_industry(
253
+ self,
254
+ *,
255
+ industry_standard: int | None = None,
256
+ index_state: int | None = None,
257
+ index_code: str | list[str] | None = None,
258
+ industry_level: int | None = None,
259
+ fields: list[str] | None = None,
260
+ ) -> pd.DataFrame:
261
+ """查询指数与行业的对应关系。
262
+
263
+ 四个过滤条件至少提供一个:``industry_standard``(仅支持
264
+ 28/30/37/38/40/44)、``index_state``(1/2/3)、``index_code``
265
+ (可带后缀或裸代码,支持列表/逗号分隔)、``industry_level``(1~6)。
266
+ 返回 9 列,含行业代码、行业名称与行业级别;本接口仅支持远程查询。
267
+ """
268
+ return self.query(
269
+ "index_industry",
270
+ industry_standard=industry_standard,
271
+ index_state=index_state,
272
+ index_code=index_code,
273
+ industry_level=industry_level,
274
+ fields=fields,
275
+ )
276
+
277
+ def index_performance(
278
+ self,
279
+ ts_code: str | list[str] | None = None,
280
+ *,
281
+ trade_date: Any = None,
282
+ start_date: Any = None,
283
+ end_date: Any = None,
284
+ fields: list[str] | None = None,
285
+ ) -> pd.DataFrame:
286
+ """查询指数区间行情表现(12 个区间,120 列,ffdata 扩展接口)。
287
+
288
+ ``ts_code`` 与 ``trade_date`` 至少提供一个;``trade_date`` 与起止日期互斥。
289
+ 字段名与聚源 ``QT_IndexPerformance`` 源字段一一对应(机械 snake_case),
290
+ 例如 ``change_pct_tw``(1 周以来涨跌幅)、``change_pct_ytd``(今年以来涨跌幅)、
291
+ ``change_pct``(成立以来涨跌幅)。本接口仅支持远程查询。
292
+ """
293
+ return self.query(
294
+ "index_performance",
295
+ ts_code=ts_code,
296
+ trade_date=trade_date,
297
+ start_date=start_date,
298
+ end_date=end_date,
299
+ fields=fields,
300
+ )
301
+
302
+ def index_valuation(
303
+ self,
304
+ ts_code: str | list[str] | None = None,
305
+ *,
306
+ trade_date: Any = None,
307
+ start_date: Any = None,
308
+ end_date: Any = None,
309
+ fields: list[str] | None = None,
310
+ ) -> pd.DataFrame:
311
+ """查询 A 股/港股主要股票指数的每日估值指标(33 列,ffdata 扩展接口)。
312
+
313
+ 覆盖总市值、流通市值、自由流通市值、PE/PB/PCF/PS、股息率、风险溢价、PEG 等;
314
+ 过滤规则与 :meth:`index_performance` 相同。本接口仅支持远程查询。
315
+ """
316
+ return self.query(
317
+ "index_valuation",
318
+ ts_code=ts_code,
319
+ trade_date=trade_date,
320
+ start_date=start_date,
321
+ end_date=end_date,
322
+ fields=fields,
323
+ )
324
+
325
+ def index_fina_indicator(
326
+ self,
327
+ ts_code: str | list[str] | None = None,
328
+ *,
329
+ period: Any = None,
330
+ ann_date: Any = None,
331
+ start_ann_date: Any = None,
332
+ end_ann_date: Any = None,
333
+ start_date: Any = None,
334
+ end_date: Any = None,
335
+ fields: list[str] | None = None,
336
+ ) -> pd.DataFrame:
337
+ """查询 A 股/港股主要股票指数的季度财务指标(118 列,ffdata 扩展接口)。
338
+
339
+ 报告期维度(``period`` 或 ``start_date``+``end_date``)与公告日维度
340
+ (``ann_date`` 或 ``start_ann_date``+``end_ann_date``)可组合求交集;
341
+ 同维度参数互斥、区间成对。同一报告期可能有多个发布版本,接口不去重。
342
+ 本接口仅支持远程查询。
343
+ """
344
+ return self.query(
345
+ "index_fina_indicator",
346
+ ts_code=ts_code,
347
+ period=period,
348
+ ann_date=ann_date,
349
+ start_ann_date=start_ann_date,
350
+ end_ann_date=end_ann_date,
351
+ start_date=start_date,
352
+ end_date=end_date,
353
+ fields=fields,
354
+ )
355
+
248
356
  def macro_indicator_basic(
249
357
  self,
250
358
  *,
@@ -372,6 +480,7 @@ class Client:
372
480
  list_status: str | None = None,
373
481
  exchange: str | None = None,
374
482
  mgr: str | None = None,
483
+ csrc_category: str | None = None,
375
484
  fields: list[str] | None = None,
376
485
  ) -> pd.DataFrame:
377
486
  """查询 ETF 基础信息。
@@ -380,7 +489,7 @@ class Client:
380
489
  或纯代码(服务端剥离后缀后匹配,并校验后缀与交易所一致);``index_code``
381
490
  是跟踪目标代码,可能是指数,也可能是现货/商品标的;``list_status`` 取
382
491
  ``L``/``D``/``P``;``exchange`` 取 ``SH``/``SZ``;``mgr`` 按管理人简称
383
- 模糊匹配。返回 16 列,其中 ``inner_code``(ETF 聚源内码)与
492
+ 模糊匹配;``csrc_category`` 按证监会分类中文名称等值过滤。返回 19 列,其中 ``inner_code``(ETF 聚源内码)与
384
493
  ``index_inner_code``(跟踪目标聚源内码)是 ffdata 扩展字段;不传任何过滤
385
494
  条件时返回全部沪深上市 ETF。本接口仅支持远程查询。
386
495
  """
@@ -392,6 +501,7 @@ class Client:
392
501
  list_status=list_status,
393
502
  exchange=exchange,
394
503
  mgr=mgr,
504
+ csrc_category=csrc_category,
395
505
  fields=fields,
396
506
  )
397
507
 
@@ -445,6 +555,36 @@ class Client:
445
555
  fields=fields,
446
556
  )
447
557
 
558
+ def fund_stock_portfolio(
559
+ self,
560
+ *,
561
+ ts_code: str | list[str] | None = None,
562
+ fund_inner_code: int | list[int] | None = None,
563
+ stock_inner_code: int | list[int] | None = None,
564
+ report_date: Any = None,
565
+ start_date: Any = None,
566
+ end_date: Any = None,
567
+ fields: list[str] | None = None,
568
+ ) -> pd.DataFrame:
569
+ """查询公募基金股票组合明细(半年度,12 列)。
570
+
571
+ 仅提供**年报 / 半年报**数据(报告期只有 ``06-30`` 与 ``12-31``):``report_date``
572
+ (截止日期)必须是半年度末,与 ``start_date``/``end_date`` 区间互斥;至少提供
573
+ 基金代码、基金内码、股票内码或日期条件之一。``ts_code`` 支持 ``.SH``/``.SZ``/``.OF``
574
+ 后缀或纯代码(按主代码匹配,A/C 份额的 C 类代码请改用主代码)。
575
+ 返回 12 列:``ts_code`` + 主表 11 个业务字段;不输出股票代码/名称、基金简称与投资类型文本。
576
+ """
577
+ return self.query(
578
+ "fund_stock_portfolio",
579
+ ts_code=ts_code,
580
+ fund_inner_code=fund_inner_code,
581
+ stock_inner_code=stock_inner_code,
582
+ report_date=report_date,
583
+ start_date=start_date,
584
+ end_date=end_date,
585
+ fields=fields,
586
+ )
587
+
448
588
  def cb_daily(
449
589
  self,
450
590
  *,
@@ -537,7 +677,7 @@ class Client:
537
677
  ``.SH``/``.SZ`` 后缀或纯代码,支持列表与逗号分隔(服务端剥离后缀匹配并校验市场一致);
538
678
  ``list_date`` 为上市日期(精确到日);``exchange`` 取 ``SH``/``SZ``;
539
679
  ``latest_status`` 为聚源最新状态(``1`` 发行中、``2`` 存续中、``3`` 已到期、
540
- ``4`` 发行失败)。返回 125 列:38 列 Tushare 兼容段 + 74 列聚源主表扩展 +
680
+ ``4`` 发行失败)。返回 124 列:37 列 Tushare 兼容段 + 74 列聚源主表扩展 +
541
681
  13 列关联扩展(含条款文本、最新评级、剩余金额等)。不传过滤条件时返回全部沪深
542
682
  可转债;本接口仅支持远程查询。
543
683
  """
@@ -550,5 +690,78 @@ class Client:
550
690
  fields=fields,
551
691
  )
552
692
 
693
+ def bond_yield_curve(
694
+ self,
695
+ *,
696
+ start_date: Any = None,
697
+ end_date: Any = None,
698
+ curve_code: int | list[int] | None = None,
699
+ yield_type_code: int | None = None,
700
+ years_to_maturity: float | list[float] | None = None,
701
+ n: float | None = None,
702
+ k: float | None = None,
703
+ fields: list[str] | None = None,
704
+ ) -> pd.DataFrame:
705
+ """查询中债债券收益率曲线(聚源 ``Bond_CBYieldCurve`` 原生契约,11 列)。
706
+
707
+ ``start_date`` / ``end_date`` 均必填且按 ``EndDate`` 闭区间过滤(单日查询时令二者
708
+ 相同)。``curve_code`` 为收益率曲线代码(``10`` 中债国债、``195`` 中债国开债,可传
709
+ 列表);``yield_type_code`` 为收益率类型(``1`` 到期、``2`` 即期、``3`` 远期的到期、
710
+ ``4`` 远期的即期、``5`` 远期);``years_to_maturity`` 为待偿期(年,可传列表)。
711
+
712
+ ``yield_type_code`` 为 ``3``/``4`` 时可用远期字段 ``n``、``k``,二者是同一远期利率的
713
+ 两种等价编码、只能传其一:``n`` 表示「N 年后开始、持有 ``years_to_maturity`` 年」的
714
+ 收益率(此时 ``years_to_maturity`` 是持有期),``k`` 表示「``years_to_maturity`` 年后
715
+ 开始、持有 ``k`` 年」的收益率(此时 ``years_to_maturity`` 是远期起点)。
716
+ ``yield_type_code`` 为 ``1``(到期)或 ``2``(即期)时**不要传** ``n``/``k``。
717
+
718
+ 单位保留聚源原值:``yield`` 是小数(``0.025601`` = 2.5601%),``base_rate`` /
719
+ ``yield_value`` 是百分数(``1.5`` = 1.5%,仅浮动利率点差类曲线有值)。
720
+ 本接口仅支持远程查询。
721
+ """
722
+ return self.query(
723
+ "bond_yield_curve",
724
+ start_date=start_date,
725
+ end_date=end_date,
726
+ curve_code=curve_code,
727
+ yield_type_code=yield_type_code,
728
+ years_to_maturity=years_to_maturity,
729
+ n=n,
730
+ k=k,
731
+ fields=fields,
732
+ )
733
+
734
+ def bond_sap_yield_curve(
735
+ self,
736
+ *,
737
+ start_date: Any = None,
738
+ end_date: Any = None,
739
+ curve_code: int | list[int] | None = None,
740
+ yield_type_code: int | None = None,
741
+ remain_maturity: float | list[float] | None = None,
742
+ fields: list[str] | None = None,
743
+ ) -> pd.DataFrame:
744
+ """查询全球债券收益率曲线(聚源 ``Bond_SAPYieldCurve`` 原生契约,12 列)。
745
+
746
+ ``start_date`` / ``end_date`` 均必填且按 ``EndDate`` 闭区间过滤(单日查询时令二者
747
+ 相同)。``curve_code`` 只支持 ``188``(美国国债收益率曲线)、``189``(日本国债收益率
748
+ 曲线);``yield_type_code`` 只有 ``1``(到期);``remain_maturity`` 为待偿期(年,
749
+ 可传列表)。
750
+
751
+ 数据字典与源表确认:``YieldTypeCode`` 只有到期,没有即期/远期;``StepTypeCode``
752
+ 固定为 ``99``(标准待偿期)、不是入参;``NPara`` / ``KPara`` 当前全为空、暂无语义,
753
+ 也不是入参。``yield_rate`` 是**百分数**(``5.15`` = 5.15%,可为负),与
754
+ :meth:`bond_yield_curve` 的 ``yield``(小数形式)不同。本接口仅支持远程查询。
755
+ """
756
+ return self.query(
757
+ "bond_sap_yield_curve",
758
+ start_date=start_date,
759
+ end_date=end_date,
760
+ curve_code=curve_code,
761
+ yield_type_code=yield_type_code,
762
+ remain_maturity=remain_maturity,
763
+ fields=fields,
764
+ )
765
+
553
766
 
554
767
  __all__ = ["Client", "Source"]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ffdata
3
- Version: 0.2.1
3
+ Version: 0.2.7
4
4
  Summary: ffdata lightweight Python client for governed financial-data APIs
5
5
  Requires-Python: >=3.12
6
6
  Description-Content-Type: text/markdown
File without changes
File without changes
File without changes
File without changes