aboutsummaryrefslogtreecommitdiffstats
path: root/python
diff options
context:
space:
mode:
Diffstat (limited to 'python')
-rw-r--r--python/process_queue.py38
1 files changed, 30 insertions, 8 deletions
diff --git a/python/process_queue.py b/python/process_queue.py
index d666e77b..c8e7a044 100644
--- a/python/process_queue.py
+++ b/python/process_queue.py
@@ -73,7 +73,20 @@ HEADERS = {'bond_trades':['Deal Type', 'Deal ID', 'Action', 'Client', 'Reserved'
'PremiumSettlementCurrency', 'PremiumSettlementAmount', 'ReceiveIMM Period',
'PayIMMPeriod', 'Reserved', 'ClearingFacility', 'Strike', 'CcpTradeRef',
'BreakClauseFrequency', 'BlockId', 'BlockAmount', 'Cross Currency Premium Payment',
- 'Premium Payment Amount', 'Netting Id', 'BreakClauseDate']}
+ 'Premium Payment Amount', 'Netting Id', 'BreakClauseDate'],
+ 'future_trades': [
+ "Deal Type", "Deal ID", "Action", "Client", "Reserved", "Reserved",
+ "Folder", "Custodian", "Cash Account", "Counterparty", "Comments",
+ "State", "Trade Date", "Settlement Date", "Reserved",
+ "GlopeOp Security Identifier", "Reserved", "Reserved", "Reserved",
+ "Bloomberg Ticker", "RIC", "Security Description",
+ "Transaction Indicator", "SubTransaction Indicator",
+ "Quantity", "Price", "Commission", "Tax", "VAT",
+ "Trade Currency", "Reserved", "Reserved", "Broker Short Name",
+ "MaturityDate", "Exchange", "Client Reference", "Swap Type",
+ "Initial Margin", "Initial Margin Currency", "Future Event",
+ "Commission Entries", "BlockId", "Block Amount"]
+}
def get_effective_date(d):
return previous_twentieth(d + datetime.timedelta(days=1))
@@ -141,11 +154,11 @@ def build_line(obj, queue_name='bond_trades'):
'expiration_date': 'ExpirationDate'}
rename_keys(obj, rename_cols)
-
+ if queue_name in ['bond_trades', 'swaption_trades', 'future_trades']:
+ obj['Transaction Indicator'] = "Buy" if obj['buysell'] else "Sell"
if queue_name == 'bond_trades':
obj['Deal Type'] = 'MortgageDeal'
obj['Portfolio'] = 'MORTGAGE'
- obj['Transaction Indicator'] = "Buy" if obj['buysell'] else "Sell"
obj['Delivery'] = 'S'
## zero coupon bond
if obj['CUSIP'] != obj['GlopeOp Security Identifier']:
@@ -153,7 +166,6 @@ def build_line(obj, queue_name='bond_trades'):
elif queue_name == 'swaption_trades':
obj['Deal Type'] = 'SwaptionDeal'
obj['Portfolio'] = 'OPTIONS'
- obj['Transaction Indicator'] = "Buy" if obj['buysell'] else "Sell"
obj['ExerciseType'] = 'European'
obj['SettlementMode'] = 'Delivery'
rename_keys(obj, {'Settlement Date': 'PremiumSettlementDate',
@@ -193,8 +205,17 @@ def build_line(obj, queue_name='bond_trades'):
obj['InitialMarginPercentage'] = obj.pop('initial_margin_percentage')
if obj['InitialMarginPercentage']:
obj['InitialMarginCurrency'] = obj['Currency']
- return [obj.get(h, None) for h in HEADERS[queue_name]]
+ elif queue_name == 'future_trades':
+ obj['Deal Type'] = 'FutureDeal'
+ rename_keys(obj, {'currency':'Trade Currency',
+ 'commission': 'Commission',
+ 'quantity': 'Quantity',
+ 'swap_type': 'Swap Type',
+ 'bbg_ticker': 'Bloomberg Ticker',
+ 'Currency': 'Trade Currency',
+ 'exchange': 'Exchange'})
+ return [obj.get(h, None) for h in HEADERS[queue_name]]
def get_bbg_data(conn, session, identifier, cusip=None, isin = None, settle_date = None, asset_class=None,
**kwargs):
@@ -298,9 +319,10 @@ def generate_csv(l, queue_name='bond_trades'):
return output.getvalue()
def get_filename(timestamp, queue_name):
- d = {'bond_trades':'Mortgages',
+ d = {'bond_trades': 'Mortgages',
'cds_trades':'CreditDefaultSwapDeal',
- 'swaption_trades': 'SwaptionDeal'}
+ 'swaption_trades': 'SwaptionDeal',
+ 'future_trades': 'Future'}
return 'Serenitas.ALL.{0:%Y%m%d.%H%M%S}.{1}.csv'.format(timestamp, d[queue_name])
def upload_file(timestamp, queue_name='bond_trades'):
@@ -341,7 +363,7 @@ if __name__=="__main__":
q = get_redis_queue()
serenitasdb = dbconn('serenitasdb')
dawndb = dbconn('dawndb')
- for queue_name in ['bond_trades', 'cds_trades', 'swaption_trades']:
+ for queue_name in ['bond_trades', 'cds_trades', 'swaption_trades', 'future_trades']:
list_trades = get_trades(q, queue_name)
if list_trades:
if queue_name == 'bond_trades':