aboutsummaryrefslogtreecommitdiffstats
path: root/python/process_queue.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/process_queue.py')
-rw-r--r--python/process_queue.py31
1 files changed, 14 insertions, 17 deletions
diff --git a/python/process_queue.py b/python/process_queue.py
index cae2d369..378dcc46 100644
--- a/python/process_queue.py
+++ b/python/process_queue.py
@@ -1,8 +1,10 @@
+import datetime
import redis
import socket
import pandas as pd
import csv
import sys
+
if sys.version_info.major == 3:
from io import StringIO
else:
@@ -15,6 +17,7 @@ import os
from sqlalchemy import create_engine
from bbg_helpers import init_bbg_session, retrieve_data, BBG_IP
import re
+from analytics.utils import previous_twentieth
from db import dbconn
import logging
import argparse
@@ -58,31 +61,21 @@ HEADERS = {'bond_trades':['Deal Type', 'Deal ID', 'Action', 'Client', 'Reserved'
'ReceiveFrequency', 'ReceivePaymentRollConvention',
'ReceiveEffectiveDate', 'ReceiveMaturityDate',
'ReceiveNotional', 'ReceiveArrears', 'ReceiveAdjusted', 'ReceiveCompound',
- 'ReceiveCurrency', 'PayLegRateType', 'PayFloatRate', 'PayFixedRate',
- 'PayDaycount', 'PayFrequency',
+ 'ReceiveCurrency',
+ 'PayLegRateType', 'PayFloatRate', 'PayFirstCouponDate',
+ 'PayFirstCouponRate', 'PayFixedRate', 'PayDaycount', 'PayFrequency',
'PayPaymentRollConvention', 'PayEffectiveDate', 'PayMaturityDate',
'PayNotional', 'PayArrears', 'PayAdjusted', 'PayCompound', 'PayCurrency',
'RegenerateCashFlow', 'GiveUpBroker', 'ClientReference', 'ReceiveDiscountCurve',
'ReceiveForwardCurve', 'PayDiscountCurve', 'PayForwardCurve', 'ReceiveFixingFrequency',
'ReceiveInterestCalcMethod', 'ReceiveCompoundAverageFrequency',
- 'PayFixingFrequency', 'PayInterstCalcMethod', 'PayCompoundAverageFrequency',
+ 'PayFixingFrequency', 'PayInterestCalcMethod', 'PayCompoundAverageFrequency',
'SwapType', 'AttachmentPoint', 'ExhaustionPoint', 'UnderlyingInstrument',
'AssociatedDealType', 'AssociatedDealId', 'CounterpartyReference',
'PremiumSettlementCurrency', 'PremiumSettlementAmount', 'ReceiveIMM Period',
'PayIMMPeriod', 'Reserved', 'ClearingFacility', 'Strike', 'CcpTradeRef',
'BreakClauseFrequency', 'BlockId', 'BlockAmount', 'Cross Currency Premium Payment',
- 'Premium Payment Amount', 'Netting Id', 'BreakClauseDate', 'TradeDateTimeStamp',
- 'ReferenceEntityName', 'ContractualDefinition', 'ReceiveExchangeAmount',
- 'PayExchangeAmount', 'ReceiveCalendar', 'PayCalendar', 'ReceiveStubLocation',
- 'ReceiveBeginFloatRate1', 'ReceiveBeginFloatRate2', 'ReceiveEndFloatRate1',
- 'ReceiveEndFloatRate2', 'PayBrokenPeriod', 'PayBeginFloatRate1',
- 'PayBeginFloatRate2', 'PayEndFloatRate1', 'PayEndFloatRate2',
- 'ReceivePaymentLag', 'PayPaymentLag', 'ReceiveResetLag', 'PayResetLag',
- 'ReceiveRateMultiplier', 'PayRateMultiplier', 'ReceiveRateCap',
- 'PayRateCap', 'ReceiveRateFloor', 'PayRateFloor', 'ReceiveRollConvention',
- 'PayRollConvention', 'ReceiveAccrualBDC', 'PayAccrualBDC', 'ReceiveMaturityBDC',
- 'PayMaturityBDC', 'ReceivePaymentAt', 'PayPaymentAt', 'ReceiveClientMargin',
- 'PayClientMargin', 'ReceiveSpread', 'PaySpread']}
+ 'Premium Payment Amount', 'Netting Id', 'BreakClauseDate']}
def decode_dict(d):
return {k.decode() if isinstance(k, bytes) else k: \
@@ -95,6 +88,9 @@ def get_redis_queue():
else:
return redis.Redis(host = 'debian')
+def get_effective_date(d):
+ return previous_twentieth(d + datetime.timedelta(days=1))
+
def aux(v):
## we try to collapse the trades.
if v.shape[0] == 1:
@@ -188,6 +184,7 @@ def build_line(obj, queue_name='bond_trades'):
obj[direction + 'MaturityDate'] = obj['MaturityDate']
obj[direction + 'Currency'] = obj['Currency']
obj[direction + 'Notional'] = obj['Notional']
+ obj[direction + 'EffectiveDate'] = get_effective_date(obj['Trade Date'])
obj['PremiumCurrency'] = obj['Currency']
obj['InitialMarkinPercentage'] = obj.pop('initial_margin_percentage')
if obj['InitialMarkinPercentage']:
@@ -198,12 +195,12 @@ def build_line(obj, queue_name='bond_trades'):
if obj['swaption_type'] == 'PAYER':
obj['ReceiveLegRateType'] = 'Float'
obj['ReceiveFloatRate'] = 'US0003M'
- obj['PayLegFloatRate'] = 'Fixed'
+ obj['PayLegRateType'] = 'Fixed'
obj['PayFixedRate'] = obj['FixedRate']
elif obj['swaption_type'] == 'RECEIVER':
obj['PayLegRateType'] = 'Float'
obj['PayFloatRate'] = 'US0003M'
- obj['ReceiveLegFloatRate'] = 'Fixed'
+ obj['ReceiveLegRateType'] = 'Fixed'
obj['ReceiveFixedRate'] = obj['FixedRate']
elif queue_name == 'cds_trades':
freq = {4: 'Quarterly', 12: 'Monthly'}