diff options
Diffstat (limited to 'python/cds_rebook.py')
| -rw-r--r-- | python/cds_rebook.py | 41 |
1 files changed, 29 insertions, 12 deletions
diff --git a/python/cds_rebook.py b/python/cds_rebook.py index 0be9cb26..6a3d45b5 100644 --- a/python/cds_rebook.py +++ b/python/cds_rebook.py @@ -41,23 +41,40 @@ def new_version_quotes( (auction_date,), ) for index, series, version, oldfactor, newfactor in c1: + c2.execute( - "INSERT into index_quotes_pre(date, index, series, version, " - "tenor, close_price, source)" - "SELECT date, index, series, version+1, " - "tenor, (%s*close_price + %s)/%s, 'SRNTAS'" - "FROM index_quotes_pre " + "SELECT tenor, close_price FROM index_quotes_pre " "WHERE index=%s AND series=%s AND version=%s AND date=%s AND source='MKIT'", - ( - oldfactor, - (newfactor - oldfactor) * adj_recovery, - newfactor, + (index, series, version, auction_date), + ) + w = oldfactor / newfactor + + to_insert = [] + for tenor, closeprice in c2: + new_price = w * closeprice + (1 - w) * adj_recovery + ind = CreditIndex( index, series, - version, - auction_date, - ), + tenor, + version + 1, + value_date=auction_date, + freeze_version=True, + ) + try: + ind.price = new_price + except ValueError: + continue + to_insert.append((tenor, new_price, ind.spread)) + c2.executemany( + "INSERT INTO index_quotes_pre(date, index, series, version, " + "tenor, close_price, close_spread, source) " + "VALUES (%s, %s, %s, %s, %s, %s, %s, %s)", + [ + (auction_date, index, series, version + 1, *t, "SRNTAS") + for t in to_insert + ], ) + conn.commit() |
