Skip to content

Commit 72d9205

Browse files
committed
expose fee by index
1 parent 9fd4e2c commit 72d9205

File tree

4 files changed

+436
-5
lines changed

4 files changed

+436
-5
lines changed

absbox/local/component.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,10 @@ def mkFeeType(x):
178178
return mkTag(("ByCollectPeriod", amt))
179179
case {"分段费用": [dp, ds, tbl]} | {"byTable": [dp, ds, tbl]}:
180180
return mkTag(("AmtByTbl", [mkDatePattern(dp), mkDs(ds), tbl]))
181+
case {"flowByBondPeriod": curve}:
182+
return mkTag(("FeeFlowByBondPeriod", mkTag(("CurrentVal", curve))))
183+
case {"flowByPoolPeriod": curve}:
184+
return mkTag(("FeeFlowByPoolPeriod", mkTag(("CurrentVal", curve))))
181185
case _:
182186
raise RuntimeError(f"Failed to match on fee type:{x}")
183187

@@ -367,8 +371,8 @@ def mkDs(x):
367371
return mkTag(("IsDealStatus", mkStatus(st)))
368372
case ("待付费用", *fns) | ("feeDue", *fns):
369373
return mkTag(("CurrentDueFee", fns))
370-
case ("已付费用", *fns) | ("lastFeePaid", *fns):
371-
return mkTag(("LastFeePaid", fns))
374+
case ("feePaidAmt", *fns) | ("已付费用", *fns) | ("lastFeePaid", *fns):
375+
return mkTag(("FeePaidAmt", fns))
372376
case ("费用支付总额", cmt, *fns) | ("feeTxnAmount", cmt, *fns) | ("feeTxnAmt", cmt, *fns):
373377
return mkTag(("FeeTxnAmt", [fns, cmt]))
374378
case ("债券支付总额", cmt, *bns) | ("bondTxnAmount", cmt, *bns) | ("bondTxnAmt", cmt, *bns):
@@ -514,11 +518,11 @@ def mkAccInt(x):
514518
case {"周期": _dp, "重置周期":_dp2, "参考利率": idx, "利差": spd, "最近结息日": lsd,"利率": r} \
515519
| {"period": _dp,"reset": _dp2, "index": idx, "spread": spd, "lastSettleDate": lsd
516520
,"rate": r}:
517-
return mkTag(("InvestmentAccount", [idx, spd, mkDatePattern(_dp)
518-
,mkDatePattern(_dp2), lsd, r]))
521+
return mkTag(("InvestmentAccount", [vStr(idx), vNum(spd), mkDatePattern(_dp)
522+
,mkDatePattern(_dp2), vDate(lsd), vNum(r)]))
519523
case {"周期": _dp, "利率": br, "最近结息日": lsd} \
520524
| {"period": _dp, "rate": br, "lastSettleDate": lsd}:
521-
return mkTag(("BankAccount", [br, mkDatePattern(_dp), lsd]))
525+
return mkTag(("BankAccount", [vNum(br), mkDatePattern(_dp), vDate(lsd)]))
522526
case None:
523527
return None
524528
case _:

docs/source/modeling.rst

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -947,6 +947,28 @@ syntax
947947
,{"type":{"customFee":[["2024-01-01",100]
948948
,["2024-03-15",50]]}})
949949
950+
custom fee flow by index
951+
^^^^^^^^^^^^^^^^^^^^^^^^^^
952+
953+
.. versionadded:: 0.42.1
954+
955+
A custom fee flow with index (Either bond paid or pool collection period)
956+
The ``Amount`` will be the ``Total`` amount of fee due on that index date.
957+
958+
959+
syntax
960+
``{"flowByBondPeriod":[ [<Index>,<Amount>] .... ]}``
961+
``{"flowByPoolPeriod":[ [<Index>,<Amount>] .... ]}``
962+
963+
.. code-block:: python
964+
965+
# each period new fee due 100
966+
{"flowByBondPeriod": [ [1,100],[2,200],[3,300] ]}
967+
# each period new fee due 100,50,25
968+
{"flowByPoolPeriod": [ [1,100],[2,150],[3,175] ]}
969+
970+
971+
950972
951973
count type fee
952974
^^^^^^^^^^^^^^^^^^^

0 commit comments

Comments
 (0)