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.py17
1 files changed, 12 insertions, 5 deletions
diff --git a/python/process_queue.py b/python/process_queue.py
index bbdd779f..4b083df5 100644
--- a/python/process_queue.py
+++ b/python/process_queue.py
@@ -14,6 +14,7 @@ import config
import os
from sqlalchemy import create_engine
from bbg_helpers import init_bbg_session, retreive_data
+import re
def decode_dict(d):
return {k.decode() if isinstance(k, bytes) else k: \
@@ -58,17 +59,17 @@ def bbg_process(cursor, session, trade):
if not cursor.fetchone():
fields += ["MATURITY", "CRNCY", "NAME", "MTG_FACE_AMT", "FLOATER",
"FLT_SPREAD", "CPN", "CPN_FREQ", "FIRST_CPN_DT", "MTG_PAY_DELAY",
- "DAY_CNT_DES"]
+ "DAY_CNT_DES", "START_ACC_DT"]
bbg_id = (trade['cusip'] or trade['isin']) + ' Mtge'
bbg_type = 'Mtge'
data = retreive_data(session, [bbg_id], fields, overrides={'SETTLE_DT': trade['settle_date']})
- if not df[bbg_id]:
+ if not data[bbg_id]:
bbg_id = (trade['cusip'] or trade['isin']) + ' Corp'
bbg_type = 'Corp'
data = retreive_data(session, [bbg_id], fields, overrides={'SETTLE_DT': trade['settle_date']})
- bbg_data = df[bbg_id]
+ bbg_data = data[bbg_id]
if bbg_data.get('MTG_FACTOR_SET_DT', 0) == 0:
bbg_data['MTG_FACTOR_SET_DT'] = 1
bbg_data['INT_ACC'] = 0
@@ -78,7 +79,12 @@ def bbg_process(cursor, session, trade):
cursor.execute("UPDATE bonds SET principal_payment = %s, accrued_payment = %s "
"WHERE id = %s", (principal_payment, accrued_payment, trade['id']))
if len(fields) > 2: #we don't have the data in the securities table
- sqlstr = "INSERT INTO securities VALUES({0})".format(",".join(["%s"] * 15))
+ sql_fields = ['identifier', 'cusip', 'isin', 'description', 'face_amount',
+ 'maturity', 'floater', 'spread', 'coupon', 'frequency',
+ 'day_count', 'first_coupon_date', 'pay_delay', 'currency',
+ 'bbg_type', 'asset_class', 'start_accrued_date']
+ sqlstr = "INSERT INTO securities({0}) VALUES({1})".format(",".join(sql_fields),
+ ",".join(["%s"]*17))
isfloater = bbg_data['FLOATER'] == 'Y'
pay_delay = bbg_data.get('MTG_PAY_DELAY', 0)
day_count = bbg_data.get('DAY_CNT_DES')
@@ -94,7 +100,8 @@ def bbg_process(cursor, session, trade):
bbg_data.get('CPN') if not isfloater else None,
bbg_data.get('CPN_FREQ'), day_count,
bbg_data.get('FIRST_CPN_DT'), pay_delay,
- bbg_data.get('CRNCY'), bbg_type, trade['asset_class']))
+ bbg_data.get('CRNCY'), bbg_type, trade['asset_class'],
+ bbg_data.get('START_ACC_DT')))
#mark it at buy price
if trade.buysell:
sqlstr = "INSERT INTO marks VALUES(%s, %s, %s)"