diff options
| -rw-r--r-- | python/headers.py | 59 | ||||
| -rw-r--r-- | python/process_queue.py | 61 |
2 files changed, 61 insertions, 59 deletions
diff --git a/python/headers.py b/python/headers.py index 2853eb56..e2a5b719 100644 --- a/python/headers.py +++ b/python/headers.py @@ -1,3 +1,5 @@ +from typing import Literal + HEADERS_PRE = [ "Deal Type", "Deal Id", @@ -274,3 +276,60 @@ def get_headers(trade_type, fund): return headers else: return headers + + +def get_termination_headers(trade_type: str, term_type: Literal["A", "T"]): + headers = [ + "DealType", + "DealId", + "Action", + "Client", + "SubAction", + "PartialTermination", + "TerminationAmount", + "TerminationDate", + "FeesPaid", + "FeesReceived", + "DealFunction", + "Reserved", + "ClientReference", + ] + if trade_type == "cds": + headers += ["TradeDate", "EffectiveDate", "FirstCouponDate"] + else: + headers += ["Reserved"] * 3 + headers += ["FeePaymentDate", "SpecialInstructions"] + + if term_type == "A": + headers += ["AssignedCounterparty"] + else: + headers += ["Reserved"] + if trade_type == "cds" and term_type == "A": + headers += [ + "AssignmentFee", + "AssignedFeeTradeDate", + "AssignedFeeValueDate", + "AssignedCustodian", + "AssignedCashAccount", + "Reserved", + "FeeCurrency", + ] + else: + headers += ["Reserved"] * 7 + headers += ["GoTradeId"] + if trade_type == "cds": + headers += ["FeeComments", "ZeroOutInterestCashFlows"] + else: + headers += ["Reserved"] * 2 + headers += ["Reserved"] * 4 + if trade_type == "swaption": + headers += ["Reserved"] * 2 + ["InMoney", "FeeCurrency"] + elif trade_type == "cds": + if term_type == "A": + headers += ["Reserved"] * 3 + else: + headers += ["AssignedDealFunction"] + ["Reserved"] * 2 + headers += ["InitialMargin", "InitialMarginCurrency"] + if term_type == "T": + headers += ["Reserved"] * 4 + ["CreditEventOccured"] + return headers diff --git a/python/process_queue.py b/python/process_queue.py index a67bab9a..152aaa3d 100644 --- a/python/process_queue.py +++ b/python/process_queue.py @@ -27,10 +27,10 @@ from serenitas.utils.remote import FtpClient, SftpClient from serenitas.utils import get_redis_queue from functools import partial from pyisda.date import previous_twentieth -from typing import Literal, Tuple, Union +from typing import Tuple, Union from quantlib.time.api import pydate_from_qldate, UnitedStates, Days, Date from tabulate import tabulate -from headers import get_headers +from headers import get_headers, get_termination_headers def get_effective_date(d, swaption_type): @@ -667,63 +667,6 @@ def print_trade(trade): return tabulate((k, v) for k, v in d.items()) -def get_termination_headers(trade_type: str, term_type: Literal["A", "T"]): - headers = [ - "DealType", - "DealId", - "Action", - "Client", - "SubAction", - "PartialTermination", - "TerminationAmount", - "TerminationDate", - "FeesPaid", - "FeesReceived", - "DealFunction", - "Reserved", - "ClientReference", - ] - if trade_type == "cds": - headers += ["TradeDate", "EffectiveDate", "FirstCouponDate"] - else: - headers += ["Reserved"] * 3 - headers += ["FeePaymentDate", "SpecialInstructions"] - - if term_type == "A": - headers += ["AssignedCounterparty"] - else: - headers += ["Reserved"] - if trade_type == "cds" and term_type == "A": - headers += [ - "AssignmentFee", - "AssignedFeeTradeDate", - "AssignedFeeValueDate", - "AssignedCustodian", - "AssignedCashAccount", - "Reserved", - "FeeCurrency", - ] - else: - headers += ["Reserved"] * 7 - headers += ["GoTradeId"] - if trade_type == "cds": - headers += ["FeeComments", "ZeroOutInterestCashFlows"] - else: - headers += ["Reserved"] * 2 - headers += ["Reserved"] * 4 - if trade_type == "swaption": - headers += ["Reserved"] * 2 + ["InMoney", "FeeCurrency"] - elif trade_type == "cds": - if term_type == "A": - headers += ["Reserved"] * 3 - else: - headers += ["AssignedDealFunction"] + ["Reserved"] * 2 - headers += ["InitialMargin", "InitialMarginCurrency"] - if term_type == "T": - headers += ["Reserved"] * 4 + ["CreditEventOccured"] - return headers - - def build_termination( term_dict: dict, conn, |
