diff options
Diffstat (limited to 'python')
| -rw-r--r-- | python/process_queue.py | 31 |
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'} |
