tea-bond 0.3.11__cp38-abi3-manylinux_2_28_x86_64.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 tea-bond might be problematic. Click here for more details.

pybond/pybond.pyi ADDED
@@ -0,0 +1,391 @@
1
+ from datetime import date
2
+ from pathlib import Path
3
+
4
+ class Bond:
5
+ """A class representing a bond instrument."""
6
+
7
+ def __init__(self, code: str | int, path: str | Path | None = None) -> None:
8
+ """
9
+ Create a new Bond instance.
10
+
11
+ Args:
12
+ code: Bond code
13
+ path: Path to directory containing bond data. Defaults to None
14
+
15
+ Raises:
16
+ ValueError: If bond data cannot be read or parsed
17
+ """
18
+
19
+ def copy(self) -> Bond: ...
20
+ @property
21
+ def code(self) -> str:
22
+ """债券代码, 不包含交易所后缀"""
23
+
24
+ @property
25
+ def full_code(self) -> str:
26
+ """债券代码, 包含交易所后缀"""
27
+
28
+ @property
29
+ def market(self) -> str:
30
+ """债券市场"""
31
+
32
+ @property
33
+ def abbr(self) -> str:
34
+ """债券简称"""
35
+
36
+ @property
37
+ def name(self) -> str:
38
+ """债券名称 (alias for abbr)"""
39
+
40
+ @property
41
+ def par_value(self) -> float:
42
+ """债券面值"""
43
+
44
+ @property
45
+ def coupon_type(self) -> str:
46
+ """息票品种"""
47
+
48
+ @property
49
+ def interest_type(self) -> str:
50
+ """息票利率类型"""
51
+
52
+ @property
53
+ def coupon_rate(self) -> float:
54
+ """票面利率, 浮动付息债券仅表示发行时票面利率"""
55
+
56
+ @property
57
+ def cp_rate(self) -> float:
58
+ """票面利率, 浮动付息债券仅表示发行时票面利率"""
59
+
60
+ @property
61
+ def base_rate(self) -> float | None:
62
+ """基准利率, 浮动付息债券适用"""
63
+
64
+ @property
65
+ def rate_spread(self) -> float | None:
66
+ """固定利差, 浮动付息债券适用"""
67
+
68
+ @property
69
+ def inst_freq(self) -> int:
70
+ """年付息次数"""
71
+
72
+ @property
73
+ def carry_date(self) -> date:
74
+ """起息日"""
75
+
76
+ @property
77
+ def maturity_date(self) -> date:
78
+ """到期日"""
79
+
80
+ @property
81
+ def day_count(self) -> str:
82
+ """计息基准"""
83
+
84
+ def is_zero_coupon(self) -> bool:
85
+ """是否为零息债券"""
86
+
87
+ def remain_year(self, date: date | None = None) -> float:
88
+ """剩余年数"""
89
+
90
+ def issue_year(self) -> int:
91
+ """发行年数"""
92
+
93
+ @property
94
+ def get_coupon(self) -> float:
95
+ """
96
+ 获取区间付息(单个付息周期的利息金额)
97
+
98
+ 区间付息 = 票面利率 * 面值 / 年付息次数
99
+ """
100
+
101
+ @property
102
+ def last_cp_year_days(self) -> int:
103
+ """最后一个计息年度的天数"""
104
+
105
+ def nearest_cp_date(self, date: date) -> tuple[date, date]:
106
+ """获取上一付息日和下一付息日"""
107
+
108
+ def remain_cp_num(self, date: date, next_cp_date: date | None = None) -> int:
109
+ """剩余的付息次数"""
110
+
111
+ def remain_cp_num_until(
112
+ self, date: date, until_date: date, next_cp_date: date | None = None
113
+ ) -> int:
114
+ """剩余的付息次数直到指定日期"""
115
+
116
+ def remain_cp_dates_until(
117
+ self, date: date, until_date: date, next_cp_date: date | None = None
118
+ ) -> list[date]:
119
+ """剩余的付息日期列表(不包含指定日期)"""
120
+
121
+ def calc_ytm_with_price(
122
+ self,
123
+ dirty_price: float,
124
+ date: date,
125
+ cp_dates: tuple[date, date] | None = None,
126
+ remain_cp_num: int | None = None,
127
+ ) -> float:
128
+ """通过债券全价计算ytm"""
129
+
130
+ class Future:
131
+ """A class representing a treasury futures contract."""
132
+
133
+ def __init__(self, code: str) -> None:
134
+ """
135
+ Create a new Future instance.
136
+
137
+ Args:
138
+ code: Future contract code
139
+ """
140
+
141
+ def copy(self) -> Future: ...
142
+ def is_deliverable(
143
+ self,
144
+ carry_date: date,
145
+ maturity_date: date,
146
+ delivery_date: date | None = None,
147
+ ) -> bool:
148
+ """
149
+ 判断是否是可交割券
150
+
151
+ Args:
152
+ carry_date: 起息日
153
+ maturity_date: 到期日
154
+ delivery_date: 可以传入已计算过的期货配对缴款日避免重复计算
155
+ """
156
+
157
+ def last_trading_date(self) -> date:
158
+ """
159
+ 计算期货合约的最后交易日
160
+
161
+ 计算国债期货的最后交易日=合约到期月份的第二个星期五
162
+ 根据合约代码, 依据中金所的国债期货合约最后交易日的说, 返回该合约的最后交易日
163
+ 获取年月部分
164
+ """
165
+
166
+ def deliver_date(self) -> date:
167
+ """
168
+ 获取期货合约的配对缴款日
169
+
170
+ 交割日为3天,其中第2天为缴款日,即最后交易日的第2个交易日,最后交易日一定为周五,所以缴款日一定是一个周二
171
+ """
172
+
173
+ def future_type(self) -> str:
174
+ """获取期货合约的类型"""
175
+
176
+ class TfEvaluator:
177
+ """A class for evaluating treasury futures."""
178
+
179
+ def __init__(
180
+ self,
181
+ future: Future | str,
182
+ bond: Bond | str | int,
183
+ date: date | str | None = None,
184
+ future_price: float = float("nan"),
185
+ bond_ytm: float = float("nan"),
186
+ capital_rate: float = float("nan"),
187
+ reinvest_rate: float | None = None,
188
+ ) -> None: ...
189
+ def copy(self) -> TfEvaluator: ...
190
+
191
+ def date(self) -> date:
192
+ """获取计算日期"""
193
+
194
+ @property
195
+ def bond_code(self) -> str:
196
+ """获取债券代码"""
197
+
198
+ @property
199
+ def bond_ytm(self) -> float:
200
+ """获取债券收益率"""
201
+
202
+ @property
203
+ def future(self) -> str:
204
+ """获取期货代码"""
205
+
206
+ @property
207
+ def future_price(self) -> float:
208
+ """获取期货价格"""
209
+
210
+ @property
211
+ def deliverable(self) -> bool:
212
+ """判断债券是否是期货的可交割券"""
213
+
214
+ def with_deliver_date(self) -> TfEvaluator:
215
+ """计算期货配对缴款日"""
216
+
217
+ def with_nearest_cp_dates(self) -> TfEvaluator:
218
+ """计算前一付息日和下一付息日"""
219
+
220
+ def with_deliver_cp_dates(self) -> TfEvaluator:
221
+ """计算交割日的前一付息日和下一付息日"""
222
+
223
+ def with_remain_days_to_deliver(self) -> TfEvaluator:
224
+ """计算到交割的剩余天数"""
225
+
226
+ def with_remain_cp_num(self) -> TfEvaluator:
227
+ """计算剩余付息次数"""
228
+
229
+ def with_accrued_interest(self) -> TfEvaluator:
230
+ """计算应计利息"""
231
+
232
+ def with_dirty_price(self) -> TfEvaluator:
233
+ """计算债券全价"""
234
+
235
+ def with_clean_price(self) -> TfEvaluator:
236
+ """计算债券净价"""
237
+
238
+ def with_duration(self) -> TfEvaluator:
239
+ """计算修正久期"""
240
+
241
+ def with_cf(self) -> TfEvaluator:
242
+ """计算转换因子"""
243
+
244
+ def with_basis_spread(self) -> TfEvaluator:
245
+ """计算基差"""
246
+
247
+ def with_deliver_accrued_interest(self) -> TfEvaluator:
248
+ """
249
+ 计算国债期货交割应计利息
250
+
251
+ 国债期货交割应计利息=区间付息* (国债期货交割缴款日 - 国债期货交割前一付息日) / (国债期货交割下一付息日 - 国债期货交割前一付息日)
252
+
253
+ 按中金所发布公式, 计算结果四舍五入至小数点后7位
254
+ """
255
+
256
+ def with_future_dirty_price(self) -> TfEvaluator:
257
+ """计算期货全价(发票价格)"""
258
+
259
+ def with_remain_cp_to_deliver(self) -> TfEvaluator:
260
+ """计算期间付息"""
261
+
262
+ def with_deliver_cost(self) -> TfEvaluator:
263
+ """
264
+ 计算交割成本
265
+
266
+ 交割成本=债券全价-期间��息
267
+ """
268
+
269
+ def with_f_b_spread(self) -> TfEvaluator:
270
+ """计算期现价差"""
271
+
272
+ def with_carry(self) -> TfEvaluator:
273
+ """
274
+ 计算持有收益
275
+
276
+ 持有收益 = (交割日应计-交易日应计 + 期间付息) + 资金成本率*(加权平均期间付息-债券全价*剩余天数/365)
277
+ """
278
+
279
+ def with_net_basis_spread(self) -> TfEvaluator:
280
+ """
281
+ 计算净基差
282
+
283
+ 净基差=基差-持有收益
284
+ """
285
+
286
+ def with_irr(self) -> TfEvaluator:
287
+ """计算内部收益率IRR"""
288
+
289
+ def with_future_ytm(self) -> TfEvaluator:
290
+ """计算期货隐含收益率"""
291
+
292
+ def calc_all(self) -> TfEvaluator:
293
+ """计算所有指标"""
294
+
295
+ def update(
296
+ self,
297
+ future_price: float | None = None,
298
+ bond_ytm: float | None = None,
299
+ date: date | None = None,
300
+ future: Future | str | None = None,
301
+ bond: Bond | str | int | None = None,
302
+ capital_rate: float | None = None,
303
+ reinvest_rate: float | None = None,
304
+ ) -> TfEvaluator:
305
+ """
306
+ 根据新的日期、债券和期货信息更新评估器
307
+
308
+ 此函数会根据输入的新信息更新评估器的各个字段,
309
+ 并根据变化情况决定是否保留原有的计算结果。
310
+ 当输入的参数为None时, 会沿用原始评估器中的值。
311
+ """
312
+
313
+ @property
314
+ def accrued_interest(self) -> float:
315
+ """应计利息, 如果未计算会自动计算后返回"""
316
+
317
+ @property
318
+ def deliver_accrued_interest(self) -> float:
319
+ """国债期货交割应计利息, 如果未计算会自动计算后返回"""
320
+
321
+ @property
322
+ def cf(self) -> float:
323
+ """转换因子, 如果未计算会自动计算后返回"""
324
+
325
+ @property
326
+ def dirty_price(self) -> float:
327
+ """债券全价, 如果未计算会自动计算后返回"""
328
+
329
+ @property
330
+ def clean_price(self) -> float:
331
+ """债券净价, 如果未计算会自动计算后返回"""
332
+
333
+ @property
334
+ def future_dirty_price(self) -> float:
335
+ """期货全价, 如果未计算会自动计算后返回"""
336
+
337
+ @property
338
+ def deliver_cost(self) -> float:
339
+ """交割成本, 如果未计算会自动计算后返回"""
340
+
341
+ @property
342
+ def basis_spread(self) -> float:
343
+ """基差, 如果未计算会自动计算后返回"""
344
+
345
+ @property
346
+ def f_b_spread(self) -> float:
347
+ """期现价差, 如果未计算会自动计算后返回"""
348
+
349
+ @property
350
+ def carry(self) -> float:
351
+ """持有收益, 如果未计算会自动计算后返回"""
352
+
353
+ @property
354
+ def net_basis_spread(self) -> float:
355
+ """净基差, 如果未计算会自动计算后返回"""
356
+
357
+ @property
358
+ def duration(self) -> float:
359
+ """修正久期, 如果未计算会自动计算后返回"""
360
+
361
+ @property
362
+ def irr(self) -> float:
363
+ """内部收益率, 如果未计算会自动计算后返回"""
364
+
365
+ @property
366
+ def deliver_date(self) -> date:
367
+ """期货配对缴款日, 如果未计算会自动计算后返回"""
368
+
369
+ @property
370
+ def cp_dates(self) -> tuple[date, date]:
371
+ """前一付息日和下一付息日, 如果未计算会自动计算后返回"""
372
+
373
+ @property
374
+ def deliver_cp_dates(self) -> tuple[date, date]:
375
+ """期货交割日的前一付息日和下一付息日, 如果未计算会自动计算后返回"""
376
+
377
+ @property
378
+ def remain_cp_num(self) -> int:
379
+ """债券剩余付息次数, 如果未计算会自动计算后返回"""
380
+
381
+ @property
382
+ def remain_cp_to_deliver(self) -> float:
383
+ """到交割的期间付息, 如果未计算会自动计算后返回"""
384
+
385
+ @property
386
+ def remain_cp_to_deliver_wm(self) -> float:
387
+ """加权平均到交割的期间付息, 如果未计算会自动计算后返回"""
388
+
389
+ @property
390
+ def future_ytm(self) -> float:
391
+ """期货隐含收益率, 如果未计算会自动计算后返回"""
Binary file
Binary file
@@ -0,0 +1,7 @@
1
+ Metadata-Version: 2.4
2
+ Name: tea-bond
3
+ Version: 0.3.11
4
+ Classifier: Programming Language :: Rust
5
+ Classifier: Programming Language :: Python :: Implementation :: CPython
6
+ Classifier: Programming Language :: Python :: Implementation :: PyPy
7
+ Requires-Python: >=3.8
@@ -0,0 +1,28 @@
1
+ pybond.libs/libcrypto-bdaed0ea.so.1.1,sha256=139pMIscUR4G4LSsPQqa4a6gvQfgJkaBLV3uAwFZ52E,3215921
2
+ pybond.libs/libssl-60250281.so.1.1,sha256=lvG3sRY8xl4pqF8jYg7IcBT2ooMalVFhXE_JDs917IA,666857
3
+ pybond/__init__.py,sha256=PZtjd-T5E7phzVqVVTN1Y4LxY1U9LICMwjqeb3vejWA,545
4
+ pybond/bond.py,sha256=_bpG2MZkFobGS8kkem3z7eNvCR7GqWJHMH4WJCfB5EQ,6568
5
+ pybond/download.py,sha256=ehl_LfcfjCB5dtVvqD0P9PJzK1UYlqhzpDcBq5BycDI,4222
6
+ pybond/ffi/__init__.py,sha256=x4FSqdM-SZPir9DL_XSMjoO9c4CWsyE5XfQr4GraGsg,94
7
+ pybond/ffi/bond.py,sha256=8SFjwBtf-t0uEEgdgdP2TCHkTr-pJCvVsJ7qIKsdh6c,1586
8
+ pybond/ffi/datetime.py,sha256=84vkmBhIf0HH4NEFeMLFbf83D_VewB5-PKeaDUobNmE,1989
9
+ pybond/ffi/duration.py,sha256=ryVI3MmkLFaCKUlQa6L6MWFm5rFXmkhq1XlolyZsZGE,670
10
+ pybond/ffi/evaluators.py,sha256=wz-52tVrK-0uUmCwIMl0yuTA13wTIVoYAHbEHdosBEI,6875
11
+ pybond/ffi/lib.py,sha256=PtAjBwzpNG8CYKJ-NbLAXJCcezMmFR4VZ3vpvmuhsUI,173
12
+ pybond/nb/__init__.py,sha256=-JvP7GpzQTKz-1Hcow_46EnakBWzJsr-3OoZjW8RQLY,746
13
+ pybond/nb/ir_utils.py,sha256=a4CoNvRdXR5ENUOmBn-h4ZEWRc3BnSZ1LlY2wX_RDbU,1557
14
+ pybond/nb/nb_bond.py,sha256=dLKVCgUgAwQu4MZm-zhRbzKPgM2wiWW_RIlA0VUvY7Y,5863
15
+ pybond/nb/nb_date.py,sha256=f4-3C8j4tz_j8cG4iuDBRsWiNnPalg9epJt-fd6VPQs,5621
16
+ pybond/nb/nb_datetime.py,sha256=9fLD9rnfpHQ-cvX4H6PoFh_O3jgk475ZKrG8q_UxT34,10264
17
+ pybond/nb/nb_duration.py,sha256=FSX1y2JbHB_SJn-hcVe-7Zf2v0xpQKKZ1MfWBY7d7IQ,1639
18
+ pybond/nb/nb_evaluators.py,sha256=fCYxcvW717_1E4qY9AV8R5Pv8eTvWqKk3Zj-zMU1kiw,14987
19
+ pybond/nb/nb_time.py,sha256=LaqXfcNvmYD_lZ2u108MwrxCXoVCBX3cr3oOnPp3c1g,8649
20
+ pybond/pd.py,sha256=u37c9_CYTopUm8Z5OZUPDLlhzAcNUCVL79yOpdj3U30,13302
21
+ pybond/pl.py,sha256=eXu_rcggdBKXLuzyLj65StIw45Jfu44EmTNi06WOBbo,13486
22
+ pybond/pnl.py,sha256=_b0s9b7_bw6qnnBp-t2Obg_Gt-_aCk0VQhpoLzKT5Uw,2715
23
+ pybond/polars_utils.py,sha256=A8D5T0x08oMCndWiQ5DPhLsuWp8s4OPgqvAnK36d8yY,2567
24
+ pybond/pybond.abi3.so,sha256=K1va5Y6k3QPmFA5Eo5ZZS8T2vDV90EmikPqh42rBNeg,30732617
25
+ pybond/pybond.pyi,sha256=xME119HJzVNqNCJ9FapVaQg1amxbNHlbd-qfFyiuhL4,11230
26
+ tea_bond-0.3.11.dist-info/METADATA,sha256=35GSxnFUR6G_rywqWsozuRtPVrk9dnHuTWiQdsowNuc,258
27
+ tea_bond-0.3.11.dist-info/WHEEL,sha256=8HfWFtUX1crLIvENIbyMxwTLg1RyruYkPifTl8tLwsE,106
28
+ tea_bond-0.3.11.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: maturin (1.9.4)
3
+ Root-Is-Purelib: false
4
+ Tag: cp38-abi3-manylinux_2_28_x86_64