コード例 #1
0
ファイル: peak.py プロジェクト: QBCtrading/Backtesting
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)
コード例 #2
0
ファイル: peak.py プロジェクト: QBCtrading/Backtesting
def py_ObjectSave(objectList, filename, user='', compress=True, overwrite=True, includeGroups=True, recurisve=False):
    resultVec = Str_Vec()
    errVec = Str_Vec()
    rc = pk_ObjectSave(_listToPkVec(objectList), filename, user, compress, overwrite, includeGroups, recurisve, resultVec, errVec)
    _checkAndRaiseErr(errVec)
    result = _unpackVecResult(resultVec)
    return result
コード例 #3
0
ファイル: peak.py プロジェクト: QBCtrading/Backtesting
def py_ObjectLoadFromBinary(length, data, times=[], users=[], files=[], prefix='', mode=0, suffix=''):
    resultVec = Str_Vec()
    errVec = Str_Vec()
    rc = pk_ObjectLoadFromBinary(length, data, _listToPkVec(times), _listToPkVec(users), _listToPkVec(files), resultVec, errVec, prefix, mode, suffix)
    _checkAndRaiseErr(errVec)
    result = tuple(resultVec)
    return result
コード例 #4
0
ファイル: peak.py プロジェクト: QBCtrading/Backtesting
def py_ObjectPropertyValues(objId, propertyName):
    errVec = Str_Vec()
    result = Str_Vec()
    rc = pk_ObjectPropertyValues(objId, propertyName, result, errVec)
    _checkAndRaiseErr(errVec)
    r = tuple(result)
    return r
コード例 #5
0
ファイル: peak.py プロジェクト: QBCtrading/Backtesting
def py_ObjectLoad(directory, pattern='.*\.bin', recursive=False, overwrite=True, times=[], users=[], files=[]):
    resultVec = Str_Vec()
    errVec = Str_Vec()
    rc = pk_ObjectLoad(directory, pattern, recursive, overwrite, _listToPkVec(times), _listToPkVec(users), _listToPkVec(files), resultVec, errVec)
    _checkAndRaiseErr(errVec)
    result = tuple(resultVec)
    return result
コード例 #6
0
ファイル: peak.py プロジェクト: QBCtrading/Backtesting
def py_BuildCurvePack(curvePackName, curveEngineName, baseTargets=[], baseInstrumentNames=[], scenarioInstrumentNames=[], scenarioNames=[], scenarioTargets=[], scenariosAreRelative=False, deltaBumpSize=1.e-4, centralDifference=False, gammaMode='', targetChangeTolerance=0.0, mispriceTolerance=1.e-6, impliedFromTargetTolerance=0.0):
    errVec = Str_Vec()
    result = Param_VecVec() 
    rc = pk_BuildCurvePack(curvePackName, curveEngineName, _listToPkVec(baseTargets, Double_Vec), _listToPkVec(baseInstrumentNames), 
                           _listToPkVec(scenarioInstrumentNames), _listToPkVec(scenarioNames), _matrixToDoubleVecVec(scenarioTargets), scenariosAreRelative, 
                           deltaBumpSize, centralDifference, gammaMode, targetChangeTolerance, mispriceTolerance, impliedFromTargetTolerance, result, errVec)
    _checkAndRaiseErr(errVec)
    return _unpackVecVecResult(result)
コード例 #7
0
ファイル: peak.py プロジェクト: QBCtrading/Backtesting
def py_YieldTSDiscount(curveId, dates, allowExtrapolation=True):
    """
    Returns the discount factor from the given YieldTermStructure
    """
    result = Double_Vec()
    errVec = Str_Vec()
    rc = pk_YieldTSDiscount(curveId, _listToPkVec(dates, vecType=int), allowExtrapolation, result, errVec)
    _checkAndRaiseErr(errVec)
    return tuple(result)
コード例 #8
0
ファイル: peak.py プロジェクト: QBCtrading/Backtesting
def py_YieldTSForwardRate(curveId, beginDates, endDates, dayCounter, compounding='Simple', frequency='Annual', allowExtrapolation=True):
    """
    Returns the forward rate from the given YieldTermStructure
    """
    result = Double_Vec()
    errVec = Str_Vec()
    rc = pk_YieldTSForwardRate(curveId, _listToPkVec(beginDates, vecType=int), _listToPkVec(endDates, vecType=int), dayCounter, compounding, frequency, allowExtrapolation, result, errVec)
    _checkAndRaiseErr(errVec)
    return tuple(result)
コード例 #9
0
ファイル: peak.py プロジェクト: QBCtrading/Backtesting
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)
コード例 #10
0
ファイル: peak.py プロジェクト: QBCtrading/Backtesting
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))
コード例 #11
0
ファイル: peak.py プロジェクト: QBCtrading/Backtesting
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)
コード例 #12
0
ファイル: peak.py プロジェクト: QBCtrading/Backtesting
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
コード例 #13
0
ファイル: peak.py プロジェクト: QBCtrading/Backtesting
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
コード例 #14
0
ファイル: peak.py プロジェクト: QBCtrading/Backtesting
def py_ObjectLoadFromFile(fileName):
    resultVec = Str_Vec()
    errVec = Str_Vec()
    try:
        file = open(fileName, 'rb')
        data = file.read()
    finally:
        if file:
            file.close()
    size = len(data)
    rc = py_ObjectLoadFromBinary(size, data)
    _checkAndRaiseErr(errVec)
    result = tuple(resultVec)
    return result
コード例 #15
0
ファイル: peak.py プロジェクト: QBCtrading/Backtesting
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)
コード例 #16
0
ファイル: peak.py プロジェクト: QBCtrading/Backtesting
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))
コード例 #17
0
ファイル: peak.py プロジェクト: QBCtrading/Backtesting
def py_BondNextCashflowDate(bondId, settlementDate=None):
    errVec = Str_Vec()
    settlementDate = settlementDate or PkMissingDate
    rc = pk_BondNextCashflowDate(bondId, settlementDate, errVec)
    _checkAndRaiseErr(errVec)
    return pkDateToDate(rc)
コード例 #18
0
ファイル: peak.py プロジェクト: QBCtrading/Backtesting
def py_CalendarAdjust(calendar, dates, BusinessDayConvention):
    errVec = Str_Vec()
    result = PkInt_Vec()
    rc = pk_CalendarAdjust(calendar, _listToPkVec(dates, vecType=int), BusinessDayConvention, result, errVec)
    _checkAndRaiseErr(errVec)
    return tuple(pkDateToDate(d) for d in result)
コード例 #19
0
ファイル: peak.py プロジェクト: QBCtrading/Backtesting
def py_DaysBetween(days1, days2, calendar):
    errVec = Str_Vec()
    result = PkInt_Vec()
    rc = pk_DaysBetween(_listToPkVec(days1, vecType=int), _listToPkVec(days2, vecType=int), calendar, result, errVec)
    _checkAndRaiseErr(errVec)
    return tuple(result)
コード例 #20
0
ファイル: peak.py プロジェクト: QBCtrading/Backtesting
def py_CalendarIsBusinessDay(calendar, days):
    errVec = Str_Vec()
    result = PkInt_Vec()
    rc = pk_CalendarIsBusinessDay(calendar, _listToPkVec(days, vecType=int), result, errVec)
    _checkAndRaiseErr(errVec)
    return tuple(bool(d) for d in result)
コード例 #21
0
ファイル: peak.py プロジェクト: QBCtrading/Backtesting
def py_CurveDates(curveId):
    result = PkInt_Vec()
    errVec = Str_Vec()
    rc = pk_CurveDates(curveId, result, errVec)
    _checkAndRaiseErr(errVec)
    return tuple(pkDateToDate(d) for d in result)
コード例 #22
0
ファイル: peak.py プロジェクト: QBCtrading/Backtesting
def py_BondPV(bondIds, discontCurveId, spreadBps=[], indexCurveId='', toCleanPrice=False, settlementDate=None, scaleTo100=False):
    errVec = Str_Vec()
    settlementDate = settlementDate or PkMissingDate
    rc = pk_BondPV(bondIds, discontCurveId, _listToPkVec(spreadBps, vecType=float), indexCurveId, toCleanPrice, settlementDate, scaleTo100, errVec)
    _checkAndRaiseErr(errVec)
    return rc
コード例 #23
0
ファイル: peak.py プロジェクト: QBCtrading/Backtesting
def py_DeleteAllObjects(deletePermanent=True):
    errVec = Str_Vec()
    rc = pk_DeleteAllObjects(deletePermanent, errVec)
    _checkAndRaiseErr(errVec)
    return rc
コード例 #24
0
ファイル: peak.py プロジェクト: QBCtrading/Backtesting
def py_ObjectCopy(oldId, newId):
    errVec = Str_Vec()
    rc = pk_ObjectCopy(oldId, newId, errVec)
    _checkAndRaiseErr(errVec)
    return rc
コード例 #25
0
ファイル: peak.py プロジェクト: QBCtrading/Backtesting
def py_FrequencyFromPeriod(periods):
    errVec = Str_Vec()
    result = Str_Vec()
    rc = pk_FrequencyFromPeriod(_listToPkVec(periods), result, errVec)
    _checkAndRaiseErr(errVec)
    return _pkVecToList(result)
コード例 #26
0
ファイル: peak.py プロジェクト: QBCtrading/Backtesting
def py_CalendarAdvance(calendar, startDates, periods, BusinessDayConvention, endOfMonth):
    errVec = Str_Vec()
    result = PkInt_Vec()
    rc = pk_CalendarAdvance(calendar, _listToPkVec(startDates, vecType=int), _listToPkVec(periods), BusinessDayConvention, endOfMonth, result, errVec)
    _checkAndRaiseErr(errVec)
    return tuple(pkDateToDate(d) for d in result)
コード例 #27
0
ファイル: peak.py プロジェクト: QBCtrading/Backtesting
def py_BondAccruedAmount(bondId, settlementDate=None):
    errVec = Str_Vec()
    settlementDate = settlementDate or PkMissingDate
    rc = pk_BondAccruedAmount(bondId, settlementDate, errVec)
    _checkAndRaiseErr(errVec)
    return rc
コード例 #28
0
ファイル: peak.py プロジェクト: QBCtrading/Backtesting
def py_DeleteObjects(objectIds):
    errVec = Str_Vec()
    rc = pk_DeleteObjects(_listToPkVec(objectIds), errVec)
    _checkAndRaiseErr(errVec)
    return rc
コード例 #29
0
ファイル: peak.py プロジェクト: QBCtrading/Backtesting
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
コード例 #30
0
ファイル: peak.py プロジェクト: QBCtrading/Backtesting
def py_BondPVBP(bondId, bondYield, compounding, settlementDateIn, errVec, tradeDate, scaleByDirtyPrice):
    errVec = Str_Vec()
    rc = pk_BondPVBP(bondId, bondYield, compounding, settlementDateIn, errVec, tradeDate, scaleByDirtyPrice)
    _checkAndRaiseErr(errVec)
    return rc