コード例 #1
0
ファイル: AutoLib.py プロジェクト: eonsmile/CryptoTools
def initAuto(exch, notional, batchSize, apiDict, ccys, isBuild, spotDict=None):
  cl.skipMinutes(SKIP_MINS)
  riskDfs = []
  for i in range(SHARED_EXCH_DICT[exch]):
    if exch=='bbt':
      riskDfs.append(cl.bbtGetRiskDfs(i + 1, spotDict))
    else:
      riskDfs.append(cl.kutGetRiskDfs(i + 1))
  cl.parallelRun(riskDfs)
  #####
  ccyData = []
  for ccy in ccys:
    if exch=='bbt':
      ccyData.append(bbtGetCcyData(ccy, apiDict, riskDfs))
    else:
      ccyData.append(kutGetCcyData(ccy, apiDict, riskDfs))
  cl.parallelRun(ccyData)
  #####
  sbList = []
  for i in range(len(ccys)):
    paramSave('sb', ccys[i], ccyData[i].sb)
    paramSave('yld', ccys[i], ccyData[i].yld)
    sbList.append(ccyData[i].sb)
  ###
  sbRanks = list(scipy.stats.rankdata(sbList, method='ordinal'))
  for i in range(len(sbRanks)):
    sbRanks[i] = len(sbRanks) - sbRanks[i] + 1
  ###
  chosenCcyData=None
  for i in range(len(ccys)):
    j = sbRanks.index(i + 1)
    adjNotional = notional
    if ccyData[j].ccy in AUTO_DICT['NOTIONAL_MULT'].keys(): adjNotional *= AUTO_DICT['NOTIONAL_MULT'][ccyData[j].ccy]
    if isBuild:
      ccyData[j].chosen = chooseBuild(ccyData[j].mvDict)
      isOk = isGT('sb',ccyData[j].ccy,NCONFIRMS,(AUTO_DICT['SB_SHIFT']+20)/10000) and isGT('yld',ccyData[j].ccy,NCONFIRMS,AUTO_DICT['YIELD_BORDER'])
      if exch=='kut':
        isOk = isOk and isSimBuildOk(adjNotional, batchSize, ccyData[j])
    else:
      ccyData[j].chosen = chooseUnwind(ccyData[j].mvDict, adjNotional * batchSize)
      isOk = isLT('sb', ccyData[j].ccy, NCONFIRMS, AUTO_DICT['SB_SHIFT'] / 10000) and isLT('yld', ccyData[j].ccy, NCONFIRMS, AUTO_DICT['YIELD_BORDER']) and \
             isSimUnwindOk(exch, adjNotional, batchSize, ccyData[j])
    if isOk:
      chosenCcyData = ccyData[j]
      break
  return chosenCcyData, adjNotional
コード例 #2
0
ファイル: BBTWhatIf.py プロジェクト: eonsmile/CryptoTools
  for i in range(-100, 100):
    additional = i * 5000
    df['unrealised_pnl_sim'] = df['unrealised_pnl'] + df['delta_value'] * (tgtLiqH - 1)
    df['ab_delta'] = df['unrealised_pnl_sim'].clip(None, 0) - df['unrealised_pnl'].clip(None, 0)
    ab = availableBalance + additional + df['ab_delta'].sum()
    df['cushion'] = ab + df['im_value'] - df['mm_value'] + df['unrealised_pnl_sim'].clip(0, None)
    if df['cushion'].min() > 0:
      return additional # -ve = money can leave account
  return 0

######
# Init
######
apiDict=cl.getApiDict()
spotDict=dict()
spotDict['USDT']=cl.ftxGetMid(apiDict['ftx'],'USDT/USD')
#####
riskDfs = []
for i in range(SHARED_EXCH_DICT['bbt']):
  riskDfs.append(cl.bbtGetRiskDfs(i + 1, spotDict))
cl.parallelRun(riskDfs)

######
# Main
######
for i in range(SHARED_EXCH_DICT['bbt']):
  cl.printHeader('BBT' + str(i + 1))
  usdtDict=cl.bbCCXTInit(i+1).v2_private_get_wallet_balance({'coin': 'USDT'})['result']['USDT']
  print('Adjustment = ',str(bbtGetAdj(riskDfs[0].riskDf, float(usdtDict['available_balance']), tgtLiqH)))