Beispiel #1
0
def py_IMMNextDates(startDate, numOfDates, datePref, endDate, rule='CFFEX'):
    '''Optional rule is one of 'CFFEX, 'CFFEXLT', 'INTERNATIONAL'
    '''
    errVec = Str_Vec()
    dateResult = PkInt_Vec()
    symResult = Str_Vec()
    
    rc = pk_IMMNextDates(dateToPkDate(startDate), numOfDates, datePref, dateToPkDate(endDate), rule, dateResult, symResult, errVec)
    _checkAndRaiseErr(errVec)
    return tuple((pkDateToDate(i) for i in dateResult))
Beispiel #2
0
def py_CreateIRSwap(swapId, conventions, asofDate, **att):
    errVec = Str_Vec()
    result = Param_VecVec()
#     att = {}
#     for k in ('startDate', 'fwdStartTenor', 'endDate', 'endDateTenor', 'notional', 'fixedRate', 
#               'floatSpread', 'discCurveId', 'fwdCurveId', 'firstStubDate', 'lastStubDate', 'addFixingDelayToStartDate'):
#         att[k] = attributes.get(k, None)
    conventions = dictToKeyValueVec(conventions)

    rc = pk_CreateIRSwap(swapId, conventions, dateToPkDate(asofDate), dateToPkDate(att.get('endDate', None)), 
            att.get('endDateTenor', ''), att.get('notional'), att.get('fixedRate'), att.get('floatSpread', 0.0), 
            att.get('discCurveId', ''), att.get('fwdCurveId', ''), dateToPkDate(att.get('firstStubDate', None)), dateToPkDate(att.get('lastStubDate', None)), 
            att.get('addFixingDelayToStartDate', True), result, errVec, att.get('fwdStartTenor', ''), att.get('resetFrequency', ''))

    _checkAndRaiseErr(errVec)
    return _unpackVecVecResult(result)
Beispiel #3
0
def py_SwapLegNPV(swapId, forwardCurveId, discountCurveId, cfAfterDate=None, legNumber=PkMissingInt, cfAfterDateInclusive=False, forecastTodaysFixing=False, debugLevel=0):
    errVec = Str_Vec()
    result = Param_VecVec()
    cfAfterDate = dateToPkDate(cfAfterDate) if cfAfterDate else PkMissingDate
    rc = pk_SwapLegNPV(_listToPkVec(swapId), legNumber, forwardCurveId, discountCurveId, cfAfterDate, cfAfterDateInclusive, forecastTodaysFixing, debugLevel, result, errVec)
    _checkAndRaiseErr(errVec)
    return _unpackVecVecResult(result)
Beispiel #4
0
def py_SwapLegAnalysis(swapId, legNumber, afterDate, forwardCurveId, discountCurveId, afterDateInclusive=True, forecastTodaysFixing=True, useSqlFriendlyColHeaders=True, selectedColumns='All', toDate=None):
    errVec = Str_Vec()
    result = Param_VecVec()
    if isinstance(selectedColumns, str):
        selectedColumns = [selectedColumns]
    selectedColumns = _listToPkVec(selectedColumns)
    rc = pk_SwapLegAnalysis(swapId, legNumber, dateToPkDate(afterDate), forwardCurveId, discountCurveId, afterDateInclusive, forecastTodaysFixing, useSqlFriendlyColHeaders, selectedColumns, dateToPkDate(toDate), result, errVec)
    _checkAndRaiseErr(errVec)
    return _unpackVecVecResult(result)
Beispiel #5
0
def py_BuildSwapCurve(curveName, anchorDate, indexName, tenors, rates, extFwdCurve, extDiscCurve='', startTenors=[], useExtCurveAsBase=True, template=''):
    '''returns forwardCurveId, discountCurveId, curveEngineId
    '''
    result = Param_VecVec()
    errVec = Str_Vec()
    rc = pk_BuildSwapCurve(curveName, dateToPkDate(anchorDate), indexName, _listToPkVec(startTenors), _listToPkVec(tenors), _listToPkVec(rates, Double_Vec), 
                           extFwdCurve, extDiscCurve, result, errVec, useExtCurveAsBase, template)
    _checkAndRaiseErr(errVec)
    names = tuple(rc)
    return names, _unpackVecVecResult(result)
Beispiel #6
0
def py_SwapInfo(objId, legNumber, asOfDate, resultFormat=''):
    resultMap = Matrix_Map()
    errVec = Str_Vec()
    rc = pk_SwapInfo(_listToPkVec(objId), legNumber, dateToPkDate(asOfDate), resultFormat, resultMap, errVec)
    _checkAndRaiseErr(errVec)
    result = _unpackMatrix_Map(resultMap)
    for k, v in result.iteritems():
        if len(v[0]) == 2:
            if v[0][0] == 'Key':
                result[k] = dict(v[1:])
        elif len(v) == 2:
            result[k] = dict(zip(v[0], v[1]))
    return result
Beispiel #7
0
def py_SwapContract(swapId, convention, anchorDate, settleDate, maturity, notional, fixedRate):
    '''convention is one of CNY_REPO_7D    CNY_SHIBOR_3M    CNY_SHIBOR_ON    CNY_DEPO_1Y
    '''
    errVec = Str_Vec()
    result = Param_VecVec()

    pk_SwapContract(swapId, convention, dateToPkDate(anchorDate), Param_t(settleDate), Param_t(maturity), notional, fixedRate, result, errVec)
    _checkAndRaiseErr(errVec)
    created = result[0]
    if created:
        created = created[0]
        if created.isString():
            created = created.asString()
    return created
Beispiel #8
0
def py_IMMSymbolToDate(immCodes, refDate, rule='CFFEX'):
    '''Optional rule is one of 'CFFEX, 'CFFEXLT', 'INTERNATIONAL'
    '''
    errVec = Str_Vec()
    result = Param_Vec()
    if isinstance(immCodes, str):
        immCodes = [immCodes]
    immCodes = _listToPkVec(immCodes)
    if isinstance(refDate, datetime.date):
        refDate = [dateToPkDate(refDate)]
    if len(refDate) < immCodes.size():
        refDate += [refDate[-1]] * (immCodes.size() - len(refDate))
    refDate = _listToPkVec(refDate)
    pk_IMMSymbolToDate(immCodes, refDate, rule, result, errVec)
    _checkAndRaiseErr(errVec)
    result = _unpackVecResult(result)
    return tuple((pkDateToDate(i) for i in result))
Beispiel #9
0
def py_BuildCfetsCurve(curveName, anchorDate, indexName, tenors, rates, method, discCurveName=''):
    errVec = Str_Vec()
    result = Param_VecVec() 
    rc = pk_BuildCfetsCurve(curveName, dateToPkDate(anchorDate), indexName, Str_Vec(tenors), Double_Vec(rates), method, discCurveName, result, errVec)
    _checkAndRaiseErr(errVec)
    return rc
Beispiel #10
0
def py_FixedRateBond(objId, description, bondType, faceAmount, coupons, scheduleID, issueDate, paymentCalendar, currency='CNY', settlementDays=1, dayCounter='', paymentBDC='', redemption=PkMissingDouble, compounding=PkMissingString, exerDate=PkMissingDate):
    errVec = Str_Vec()
    type = ['IB', 'SSE', 'Custom'].index(bondType) + 1
    rc = pk_FixedRateBond(objId, description, currency, settlementDays, _listToPkVec(faceAmount, vecType=float), scheduleID, _listToPkVec(coupons, vecType=float), dayCounter, paymentBDC, redemption, dateToPkDate(issueDate), paymentCalendar, compounding, type, errVec, exerDate)
    _checkAndRaiseErr(errVec)
    return rc
Beispiel #11
0
def py_Schedule(scheduleId, startDate, endDate, tenor, calendar, bdc=PkMissingString, endDateBDC=PkMissingString, genRule=PkMissingString, endOfMonth=False, firstDate=PkMissingDate, nextToLastDate=PkMissingDate):
    errVec = Str_Vec()
    rc = pk_Schedule(scheduleId, dateToPkDate(startDate), dateToPkDate(endDate), tenor, calendar, bdc, endDateBDC, genRule, endOfMonth, firstDate, nextToLastDate, errVec)
    _checkAndRaiseErr(errVec)
    return rc
Beispiel #12
0
def py_BondFlowAnalysis(bondId, afterDate):
    errVec = Str_Vec()
    result = Param_VecVec()
    rc = pk_BondFlowAnalysis(bondId, dateToPkDate(afterDate), result, errVec)
    _checkAndRaiseErr(errVec)
    return _unpackVecVecResult(result)
Beispiel #13
0
def _py_CalendarHolidayList(calendar, fromDate, toDate, type):
    errVec = Str_Vec()
    result = PkInt_Vec()
    rc = pk_CalendarHolidayList(calendar, dateToPkDate(fromDate), dateToPkDate(toDate), type, result, errVec)
    _checkAndRaiseErr(errVec)
    return tuple(pkDateToDate(d) for d in result)
Beispiel #14
0
def py_RollCurve(curveId, newCurveId, newCurveDate):
    errVec = Str_Vec()
    rc = pk_RollCurve(curveId, newCurveId, dateToPkDate(newCurveDate), errVec)
    _checkAndRaiseErr(errVec)
    return rc