tea-bond 0.4.3__cp38-abi3-manylinux_2_17_x86_64.manylinux2014_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.
pybond/pybond.pyi ADDED
@@ -0,0 +1,390 @@
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
+ def date(self) -> date:
191
+ """获取计算日期"""
192
+
193
+ @property
194
+ def bond_code(self) -> str:
195
+ """获取债券代码"""
196
+
197
+ @property
198
+ def bond_ytm(self) -> float:
199
+ """获取债券收益率"""
200
+
201
+ @property
202
+ def future(self) -> str:
203
+ """获取期货代码"""
204
+
205
+ @property
206
+ def future_price(self) -> float:
207
+ """获取期货价格"""
208
+
209
+ @property
210
+ def deliverable(self) -> bool:
211
+ """判断债券是否是期货的可交割券"""
212
+
213
+ def with_deliver_date(self) -> TfEvaluator:
214
+ """计算期货配对缴款日"""
215
+
216
+ def with_nearest_cp_dates(self) -> TfEvaluator:
217
+ """计算前一付息日和下一付息日"""
218
+
219
+ def with_deliver_cp_dates(self) -> TfEvaluator:
220
+ """计算交割日的前一付息日和下一付息日"""
221
+
222
+ def with_remain_days_to_deliver(self) -> TfEvaluator:
223
+ """计算到交割的剩余天数"""
224
+
225
+ def with_remain_cp_num(self) -> TfEvaluator:
226
+ """计算剩余付息次数"""
227
+
228
+ def with_accrued_interest(self) -> TfEvaluator:
229
+ """计算应计利息"""
230
+
231
+ def with_dirty_price(self) -> TfEvaluator:
232
+ """计算债券全价"""
233
+
234
+ def with_clean_price(self) -> TfEvaluator:
235
+ """计算债券净价"""
236
+
237
+ def with_duration(self) -> TfEvaluator:
238
+ """计算修正久期"""
239
+
240
+ def with_cf(self) -> TfEvaluator:
241
+ """计算转换因子"""
242
+
243
+ def with_basis_spread(self) -> TfEvaluator:
244
+ """计算基差"""
245
+
246
+ def with_deliver_accrued_interest(self) -> TfEvaluator:
247
+ """
248
+ 计算国债期货交割应计利息
249
+
250
+ 国债期货交割应计利息=区间付息* (国债期货交割缴款日 - 国债期货交割前一付息日) / (国债期货交割下一付息日 - 国债期货交割前一付息日)
251
+
252
+ 按中金所发布公式, 计算结果四舍五入至小数点后7位
253
+ """
254
+
255
+ def with_future_dirty_price(self) -> TfEvaluator:
256
+ """计算期货全价(发票价格)"""
257
+
258
+ def with_remain_cp_to_deliver(self) -> TfEvaluator:
259
+ """计算期间付息"""
260
+
261
+ def with_deliver_cost(self) -> TfEvaluator:
262
+ """
263
+ 计算交割成本
264
+
265
+ 交割成本=债券全价-期间��息
266
+ """
267
+
268
+ def with_f_b_spread(self) -> TfEvaluator:
269
+ """计算期现价差"""
270
+
271
+ def with_carry(self) -> TfEvaluator:
272
+ """
273
+ 计算持有收益
274
+
275
+ 持有收益 = (交割日应计-交易日应计 + 期间付息) + 资金成本率*(加权平均期间付息-债券全价*剩余天数/365)
276
+ """
277
+
278
+ def with_net_basis_spread(self) -> TfEvaluator:
279
+ """
280
+ 计算净基差
281
+
282
+ 净基差=基差-持有收益
283
+ """
284
+
285
+ def with_irr(self) -> TfEvaluator:
286
+ """计算内部收益率IRR"""
287
+
288
+ def with_future_ytm(self) -> TfEvaluator:
289
+ """计算期货隐含收益率"""
290
+
291
+ def calc_all(self) -> TfEvaluator:
292
+ """计算所有指标"""
293
+
294
+ def update(
295
+ self,
296
+ future_price: float | None = None,
297
+ bond_ytm: float | None = None,
298
+ date: date | None = None,
299
+ future: Future | str | None = None,
300
+ bond: Bond | str | int | None = None,
301
+ capital_rate: float | None = None,
302
+ reinvest_rate: float | None = None,
303
+ ) -> TfEvaluator:
304
+ """
305
+ 根据新的日期、债券和期货信息更新评估器
306
+
307
+ 此函数会根据输入的新信息更新评估器的各个字段,
308
+ 并根据变化情况决定是否保留原有的计算结果。
309
+ 当输入的参数为None时, 会沿用原始评估器中的值。
310
+ """
311
+
312
+ @property
313
+ def accrued_interest(self) -> float:
314
+ """应计利息, 如果未计算会自动计算后返回"""
315
+
316
+ @property
317
+ def deliver_accrued_interest(self) -> float:
318
+ """国债期货交割应计利息, 如果未计算会自动计算后返回"""
319
+
320
+ @property
321
+ def cf(self) -> float:
322
+ """转换因子, 如果未计算会自动计算后返回"""
323
+
324
+ @property
325
+ def dirty_price(self) -> float:
326
+ """债券全价, 如果未计算会自动计算后返回"""
327
+
328
+ @property
329
+ def clean_price(self) -> float:
330
+ """债券净价, 如果未计算会自动计算后返回"""
331
+
332
+ @property
333
+ def future_dirty_price(self) -> float:
334
+ """期货全价, 如果未计算会自动计算后返回"""
335
+
336
+ @property
337
+ def deliver_cost(self) -> float:
338
+ """交割成本, 如果未计算会自动计算后返回"""
339
+
340
+ @property
341
+ def basis_spread(self) -> float:
342
+ """基差, 如果未计算会自动计算后返回"""
343
+
344
+ @property
345
+ def f_b_spread(self) -> float:
346
+ """期现价差, 如果未计算会自动计算后返回"""
347
+
348
+ @property
349
+ def carry(self) -> float:
350
+ """持有收益, 如果未计算会自动计算后返回"""
351
+
352
+ @property
353
+ def net_basis_spread(self) -> float:
354
+ """净基差, 如果未计算会自动计算后返回"""
355
+
356
+ @property
357
+ def duration(self) -> float:
358
+ """修正久期, 如果未计算会自动计算后返回"""
359
+
360
+ @property
361
+ def irr(self) -> float:
362
+ """内部收益率, 如果未计算会自动计算后返回"""
363
+
364
+ @property
365
+ def deliver_date(self) -> date:
366
+ """期货配对缴款日, 如果未计算会自动计算后返回"""
367
+
368
+ @property
369
+ def cp_dates(self) -> tuple[date, date]:
370
+ """前一付息日和下一付息日, 如果未计算会自动计算后返回"""
371
+
372
+ @property
373
+ def deliver_cp_dates(self) -> tuple[date, date]:
374
+ """期货交割日的前一付息日和下一付息日, 如果未计算会自动计算后返回"""
375
+
376
+ @property
377
+ def remain_cp_num(self) -> int:
378
+ """债券剩余付息次数, 如果未计算会自动计算后返回"""
379
+
380
+ @property
381
+ def remain_cp_to_deliver(self) -> float:
382
+ """到交割的期间付息, 如果未计算会自动计算后返回"""
383
+
384
+ @property
385
+ def remain_cp_to_deliver_wm(self) -> float:
386
+ """加权平均到交割的期间付息, 如果未计算会自动计算后返回"""
387
+
388
+ @property
389
+ def future_ytm(self) -> float:
390
+ """期货隐含收益率, 如果未计算会自动计算后返回"""
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,7 @@
1
+ Metadata-Version: 2.4
2
+ Name: tea-bond
3
+ Version: 0.4.3
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,36 @@
1
+ pybond.libs/libcom_err-2abe824b.so.2,sha256=2cr9HWC0zMwfcEKxV3lOyqcFQx_liPR102u064ZehwY,17497
2
+ pybond.libs/libcrypto-d3570994.so.10,sha256=G77JrAQdkpcVpLaOEqux61ZWS2piDK4OdiA6I1WDNT8,2644337
3
+ pybond.libs/libgssapi_krb5-497db0c6.so.2,sha256=ina9JSypgqHXDYSmpsZFELpq8Z9AUsvX1aCYl2DCtsU,345201
4
+ pybond.libs/libk5crypto-b1f99d5c.so.3,sha256=fC9gIDmgJt5bvJK7ClxcP1c6iUcn-mJRZQLUGUDeQd0,219945
5
+ pybond.libs/libkeyutils-dfe70bd6.so.1,sha256=kcWHLTpNmSeC4yKSDsp7dbJPZIaKV8zAlglJTCeBd_I,17913
6
+ pybond.libs/libkrb5-fcafa220.so.3,sha256=wtJJ28ZZBLwx5DZxT1H7yG0VuRpKZISzEafdVjoBJi0,1018945
7
+ pybond.libs/libkrb5support-d0bcff84.so.0,sha256=7xkvBuPvyune4tbvMAthFjTdVb8-CHlSIqrN7DPmJ0E,76873
8
+ pybond.libs/libpcre-9513aab5.so.1,sha256=Sdoz-1U1JVL_xdZbMh14vyvUcv0FK2cGsH7rkU167aA,406809
9
+ pybond.libs/libselinux-0922c95c.so.1,sha256=8QaH0x86IWdPgewpKsNMwDD7k5CNsiTBdhyA_pdYq-A,178329
10
+ pybond.libs/libssl-cd1d6220.so.10,sha256=NZj94nAhs815nJz5adHy2gDc5oIRbIh6Vrd0wfDZtXU,519537
11
+ pybond/__init__.py,sha256=K25QmaPLJqwCh4DLsieN_Mkwt02MygHTxORFjVuAEto,757
12
+ pybond/bond.py,sha256=Ek8oodGsJ_5LtfyaQQHgp_w-cZe-aG1DBxFiMtxPxCo,7133
13
+ pybond/download.py,sha256=tupGa38tEhwErRiQHLitRtm_HMaWH5VPeAh30FqIqDs,4149
14
+ pybond/ffi/__init__.py,sha256=x4FSqdM-SZPir9DL_XSMjoO9c4CWsyE5XfQr4GraGsg,94
15
+ pybond/ffi/bond.py,sha256=8SFjwBtf-t0uEEgdgdP2TCHkTr-pJCvVsJ7qIKsdh6c,1586
16
+ pybond/ffi/datetime.py,sha256=84vkmBhIf0HH4NEFeMLFbf83D_VewB5-PKeaDUobNmE,1989
17
+ pybond/ffi/duration.py,sha256=ryVI3MmkLFaCKUlQa6L6MWFm5rFXmkhq1XlolyZsZGE,670
18
+ pybond/ffi/evaluators.py,sha256=wz-52tVrK-0uUmCwIMl0yuTA13wTIVoYAHbEHdosBEI,6875
19
+ pybond/ffi/lib.py,sha256=PtAjBwzpNG8CYKJ-NbLAXJCcezMmFR4VZ3vpvmuhsUI,173
20
+ pybond/nb/__init__.py,sha256=CqFV5JO06nPFnxA6C99SZojvNdwYmzjPFS3S27Ud0y8,746
21
+ pybond/nb/ir_utils.py,sha256=a4CoNvRdXR5ENUOmBn-h4ZEWRc3BnSZ1LlY2wX_RDbU,1557
22
+ pybond/nb/nb_bond.py,sha256=dLKVCgUgAwQu4MZm-zhRbzKPgM2wiWW_RIlA0VUvY7Y,5863
23
+ pybond/nb/nb_date.py,sha256=f4-3C8j4tz_j8cG4iuDBRsWiNnPalg9epJt-fd6VPQs,5621
24
+ pybond/nb/nb_datetime.py,sha256=9fLD9rnfpHQ-cvX4H6PoFh_O3jgk475ZKrG8q_UxT34,10264
25
+ pybond/nb/nb_duration.py,sha256=FSX1y2JbHB_SJn-hcVe-7Zf2v0xpQKKZ1MfWBY7d7IQ,1639
26
+ pybond/nb/nb_evaluators.py,sha256=fCYxcvW717_1E4qY9AV8R5Pv8eTvWqKk3Zj-zMU1kiw,14987
27
+ pybond/nb/nb_time.py,sha256=LaqXfcNvmYD_lZ2u108MwrxCXoVCBX3cr3oOnPp3c1g,8649
28
+ pybond/pd.py,sha256=3m6rpBW5-E2mG967Fb_hF4FjGoSXUQz0kBev9X104f8,13760
29
+ pybond/pl.py,sha256=sS3fk8AFcWskKPBUFAsnmSQetMlxub2cY3RWiAOimMo,15051
30
+ pybond/pnl.py,sha256=7RFHDW0rkk8XCLWmzruohpUNH7LjqUcFxWj2_esJVp4,8168
31
+ pybond/polars_utils.py,sha256=u14yoK9Qx4TC2oPq-zVk7d1XOLY8nGc1H8Nf9jt0R6c,2599
32
+ pybond/pybond.abi3.so,sha256=UEm5t5E6P7ERhddJb1IqJ19cukJI0MMN9_35MnBqAcA,33485553
33
+ pybond/pybond.pyi,sha256=r6-b7ZaB1hXUbA1nHcnTkku5SfdKSk_I-_8NzU1bG8Q,11206
34
+ tea_bond-0.4.3.dist-info/METADATA,sha256=TIXMwpfWJrUqZemdxNwrYiG9Dxp_BJa5MLx3CPyvJZg,257
35
+ tea_bond-0.4.3.dist-info/WHEEL,sha256=EsgGQg7OBGIn-zS1ipDRPjO8C2qSQ0GRrd2xuL_Pyq0,143
36
+ tea_bond-0.4.3.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: maturin (1.10.2)
3
+ Root-Is-Purelib: false
4
+ Tag: cp38-abi3-manylinux_2_17_x86_64
5
+ Tag: cp38-abi3-manylinux2014_x86_64