aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--python/headers.py59
-rw-r--r--python/process_queue.py61
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,