diff options
Diffstat (limited to 'python/process_queue.py')
| -rw-r--r-- | python/process_queue.py | 38 |
1 files changed, 20 insertions, 18 deletions
diff --git a/python/process_queue.py b/python/process_queue.py index c3a09172..68724322 100644 --- a/python/process_queue.py +++ b/python/process_queue.py @@ -1,8 +1,15 @@ +import argparse +import csv import datetime -import socket +import logging +import numpy as np +import os import pandas as pd -import csv +import psycopg2 +import re +import socket import sys +import task_server.config as config if sys.version_info.major == 3: from io import StringIO @@ -11,17 +18,11 @@ else: from pickle import loads from ftplib import FTP -import task_server.config as config -import os from sqlalchemy import create_engine from bbg_helpers import init_bbg_session, retrieve_data, BBG_IP from common import get_redis_queue -import re from analytics.utils import previous_twentieth from db import dbconn -import logging -import argparse -import psycopg2 from send_email import EmailMessage HEADERS = {'bond_trades':['Deal Type', 'Deal ID', 'Action', 'Client', 'Reserved', 'Reserved', @@ -145,12 +146,7 @@ def build_line(obj, queue_name='bond_trades'): 'clearing_facility': 'Clearing Facility', 'isda_definition': 'ISDADefinition', 'expiration_date': 'ExpirationDate'} - - for k, v in rename_cols.items(): - try: - obj[v] = obj.pop(k) - except KeyError: - continue + obj = obj.rename(index=rename_cols) if queue_name == 'bond_trades': obj['Deal Type'] = 'MortgageDeal' @@ -166,9 +162,11 @@ def build_line(obj, queue_name='bond_trades'): obj['Transaction Indicator'] = "Buy" if obj.buysell else "Sell" obj['ExerciseType'] = 'European' obj['SettlementMode'] = 'Delivery' - obj['PremiumSettlementDate'] = obj.pop('Settlement Date') - obj['PercentageOfPremium'] = obj.pop('Price') - obj['Notional'] = obj.pop('notional') + obj = obj.rename(index={'Settlement Date': 'PremiumSettlementDate', + 'Price': 'PercentageOfPremium', + 'notional': 'Notional', + 'initial_margin_percentage': 'InitialMarginPercentage'}) + obj['RegenerateCashFlow'] = 'N' for direction in ['Pay', 'Receive']: obj[direction + 'Daycount'] = 'ACT/360' @@ -179,7 +177,6 @@ def build_line(obj, queue_name='bond_trades'): obj[direction + 'Notional'] = obj['Notional'] obj[direction + 'EffectiveDate'] = get_effective_date(obj['Trade Date']) obj['PremiumCurrency'] = obj['Currency'] - obj['InitialMarginPercentage'] = obj.pop('initial_margin_percentage') if obj['InitialMarginPercentage']: obj['InitialMarginCurrency'] = obj['Currency'] obj['SwapType'] = 'CD_INDEX_OPTION' @@ -200,8 +197,13 @@ def build_line(obj, queue_name='bond_trades'): obj['Deal Type'] = 'CreditDefaultSwapDeal' obj['PaymentFrequency'] = freq[obj.frequency] obj['InitialMarginPercentage'] = obj.pop('initial_margin_percentage') + if obj['InitialMarginPercentage'] is not None and np.isnan(obj['InitialMarginPercentage']): + obj['InitialMarginPercentage'] = None if obj['InitialMarginPercentage']: obj['InitialMarginCurrency'] = obj['Currency'] + for k in ['AttachmentPoint', 'ExhaustionPoint']: + if obj[k] is not None and np.isnan(obj[k]): + obj[k] = None return [obj.get(h, None) for h in HEADERS[queue_name]] |
