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