In [4]:
#!/bin/python3
import numpy as np
import sys
import pytz

def printMatrix(matrix):
    """"""
    for row in range(len(matrix)):
        for col in range(len(matrix[row])):
            print(int(matrix[row][col]), end=' ')
        print('')

def matrixRotation(matrix: [list], r: int):
    """"""
    rowNum = len(matrix)
    colNum = len(matrix)
    result = np.zeros((rowNum, colNum))
    
    # Complete this function
    numLayers = min(rowNum, colNum) % 2
    
    # for layer in range(numLayers):
    
        
    printMatrix(result)

if __name__ == "__main__":
    
    t = [[1,2], [3,4]]
    matrixRotation(t, 1)


0 0 
0 0 

In [43]:
import requests
import pandas as pd
import datetime
import time

def datetimeToUnix(dt: str='2018-01-01'):
    """"""
    date = datetime.datetime.strptime(dt, '%Y-%m-%d')
    date = date.replace(tzinfo=pytz.UTC)
    return int(time.mktime(date.timetuple()))

"""
a = ['IP IM Equity', 'IF IM Equity', 'AST IM Equity', 'AMP IM Equity',
     'IMA IM Equity', 'MTV IM Equity', 'ELN IM Equity', 'REY IM Equity',
     'FKR IM Equity', 'GIMA IM Equity', 'SO IM Equity', 'BSS IM Equity',
     'IGD IM Equity', 'DAL IM Equity', 'CEM IM Equity', 'MARR IM Equity',
     'PRT IM Equity', 'LD IM Equity', 'TIP IM Equity', 'MN IM Equity',
     'PRI IM Equity', 'EIT IM Equity', 'STS IM Equity', 'UNIR IM Equity',
     'CAI IM Equity']
"""
# ------------ new intalian basket tickers --------------- #
dataServer = {
 "FKR IM Equity":{"GET":{"url":"http://192.168.5.9:9997/data/bbg/getAssetsHistoryStartEnd/FKR IM Equity/TOT_RETURN_INDEX_NET_DVDS/1514419200/{endStr}/EUR"}},
"MTV IM Equity":{"GET":{"url":"http://192.168.5.9:9997/data/bbg/getAssetsHistoryStartEnd/MTV IM Equity/TOT_RETURN_INDEX_NET_DVDS/1514419200/{endStr}/EUR"}},
"SO IM Equity":{"GET":{"url":"http://192.168.5.9:9997/data/bbg/getAssetsHistoryStartEnd/SO IM Equity/TOT_RETURN_INDEX_NET_DVDS/1514419200/{endStr}/EUR"}},
"PRT IM Equity":{"GET":{"url":"http://192.168.5.9:9997/data/bbg/getAssetsHistoryStartEnd/PRT IM Equity/TOT_RETURN_INDEX_NET_DVDS/1514419200/{endStr}/EUR"}},
"CAI IM Equity":{"GET":{"url":"http://192.168.5.9:9997/data/bbg/getAssetsHistoryStartEnd/CAI IM Equity/TOT_RETURN_INDEX_NET_DVDS/1514419200/{endStr}/EUR"}},
"BST IM Equity":{"GET":{"url":"http://192.168.5.9:9997/data/bbg/getAssetsHistoryStartEnd/BST IM Equity/TOT_RETURN_INDEX_NET_DVDS/1514419200/{endStr}/EUR"}},
"AST IM Equity":{"GET":{"url":"http://192.168.5.9:9997/data/bbg/getAssetsHistoryStartEnd/AST IM Equity/TOT_RETURN_INDEX_NET_DVDS/1514419200/{endStr}/EUR"}},
"IGD IM Equity":{"GET":{"url":"http://192.168.5.9:9997/data/bbg/getAssetsHistoryStartEnd/IGD IM Equity/TOT_RETURN_INDEX_NET_DVDS/1514419200/{endStr}/EUR"}},
"MN IM Equity":{"GET":{"url":"http://192.168.5.9:9997/data/bbg/getAssetsHistoryStartEnd/MN IM Equity/TOT_RETURN_INDEX_NET_DVDS/1514419200/{endStr}/EUR"}},
"TIP IM Equity":{"GET":{"url":"http://192.168.5.9:9997/data/bbg/getAssetsHistoryStartEnd/TIP IM Equity/TOT_RETURN_INDEX_NET_DVDS/1514419200/{endStr}/EUR"}},
"RM IM Equity":{"GET":{"url":"http://192.168.5.9:9997/data/bbg/getAssetsHistoryStartEnd/RM IM Equity/TOT_RETURN_INDEX_NET_DVDS/1514419200/{endStr}/EUR"}},
"LR IM Equity":{"GET":{"url":"http://192.168.5.9:9997/data/bbg/getAssetsHistoryStartEnd/LR IM Equity/TOT_RETURN_INDEX_NET_DVDS/1514419200/{endStr}/EUR"}},
"DIB IM Equity":{"GET":{"url":"http://192.168.5.9:9997/data/bbg/getAssetsHistoryStartEnd/DIB IM Equity/TOT_RETURN_INDEX_NET_DVDS/1514419200/{endStr}/EUR"}},
"DIS IM Equity":{"GET":{"url":"http://192.168.5.9:9997/data/bbg/getAssetsHistoryStartEnd/DIS IM Equity/TOT_RETURN_INDEX_NET_DVDS/1514419200/{endStr}/EUR"}},
"AMP IM Equity":{"GET":{"url":"http://192.168.5.9:9997/data/bbg/getAssetsHistoryStartEnd/AMP IM Equity/TOT_RETURN_INDEX_NET_DVDS/1514419200/{endStr}/EUR"}},
"GIMA IM Equity":{"GET":{"url":"http://192.168.5.9:9997/data/bbg/getAssetsHistoryStartEnd/GIMA IM Equity/TOT_RETURN_INDEX_NET_DVDS/1514419200/{endStr}/EUR"}},
"UNIR IM Equity":{"GET":{"url":"http://192.168.5.9:9997/data/bbg/getAssetsHistoryStartEnd/UNIR IM Equity/TOT_RETURN_INDEX_NET_DVDS/1514419200/{endStr}/EUR"}},
"ELN IM Equity":{"GET":{"url":"http://192.168.5.9:9997/data/bbg/getAssetsHistoryStartEnd/ELN IM Equity/TOT_RETURN_INDEX_NET_DVDS/1514419200/{endStr}/EUR"}},
"ELC IM Equity":{"GET":{"url":"http://192.168.5.9:9997/data/bbg/getAssetsHistoryStartEnd/ELC IM Equity/TOT_RETURN_INDEX_NET_DVDS/1514419200/{endStr}/EUR"}},
"IP IM Equity":{"GET":{"url":"http://192.168.5.9:9997/data/bbg/getAssetsHistoryStartEnd/IP IM Equity/TOT_RETURN_INDEX_NET_DVDS/1514419200/{endStr}/EUR"}},
"LD IM Equity":{"GET":{"url":"http://192.168.5.9:9997/data/bbg/getAssetsHistoryStartEnd/LD IM Equity/TOT_RETURN_INDEX_NET_DVDS/1514419200/{endStr}/EUR"}},
"XPR IM Equity":{"GET":{"url":"http://192.168.5.9:9997/data/bbg/getAssetsHistoryStartEnd/XPR IM Equity/TOT_RETURN_INDEX_NET_DVDS/1514419200/{endStr}/EUR"}},
"IF IM Equity":{"GET":{"url":"http://192.168.5.9:9997/data/bbg/getAssetsHistoryStartEnd/IF IM Equity/TOT_RETURN_INDEX_NET_DVDS/1514419200/{endStr}/EUR"}},
"DEA IM Equity":{"GET":{"url":"http://192.168.5.9:9997/data/bbg/getAssetsHistoryStartEnd/DEA IM Equity/TOT_RETURN_INDEX_NET_DVDS/1514419200/{endStr}/EUR"}},
"ASC IM Equity":{"GET":{"url":"http://192.168.5.9:9997/data/bbg/getAssetsHistoryStartEnd/ASC IM Equity/TOT_RETURN_INDEX_NET_DVDS/1514419200/{endStr}/EUR"}}
}

ds = {
    "FKR IM Equity":{
      "GET":{
        "url":"http://192.168.5.9:9997/data/bbg/getAssetsHistoryStartEnd/FKR IM Equity/TOT_RETURN_INDEX_NET_DVDS/1514246400/1530662400/EUR"
      }
    },
    "MTV IM Equity":{
      "GET":{
        "url":"http://192.168.5.9:9997/data/bbg/getAssetsHistoryStartEnd/MTV IM Equity/TOT_RETURN_INDEX_NET_DVDS/1514246400/1530662400/EUR"
      }
    },
    "SO IM Equity":{
      "GET":{
        "url":"http://192.168.5.9:9997/data/bbg/getAssetsHistoryStartEnd/SO IM Equity/TOT_RETURN_INDEX_NET_DVDS/1514246400/1530662400/EUR"
      }
    },
    "PRT IM Equity":{
      "GET":{
        "url":"http://192.168.5.9:9997/data/bbg/getAssetsHistoryStartEnd/PRT IM Equity/TOT_RETURN_INDEX_NET_DVDS/1514246400/1530662400/EUR"
      }
    },
    "CAI IM Equity":{
      "GET":{
        "url":"http://192.168.5.9:9997/data/bbg/getAssetsHistoryStartEnd/CAI IM Equity/TOT_RETURN_INDEX_NET_DVDS/1514246400/1530662400/EUR"
      }
    },
    "BST IM Equity":{
      "GET":{
        "url":"http://192.168.5.9:9997/data/bbg/getAssetsHistoryStartEnd/BST IM Equity/TOT_RETURN_INDEX_NET_DVDS/1514246400/1530662400/EUR"
      }
    },
    "AST IM Equity":{
      "GET":{
        "url":"http://192.168.5.9:9997/data/bbg/getAssetsHistoryStartEnd/AST IM Equity/TOT_RETURN_INDEX_NET_DVDS/1514246400/1530662400/EUR"
      }
    },
    "IGD IM Equity":{
      "GET":{
        "url":"http://192.168.5.9:9997/data/bbg/getAssetsHistoryStartEnd/IGD IM Equity/TOT_RETURN_INDEX_NET_DVDS/1514246400/1530662400/EUR"
      }
    },
    "MN IM Equity":{
      "GET":{
        "url":"http://192.168.5.9:9997/data/bbg/getAssetsHistoryStartEnd/MN IM Equity/TOT_RETURN_INDEX_NET_DVDS/1514246400/1530662400/EUR"
      }
    },
    "TIP IM Equity":{
      "GET":{
        "url":"http://192.168.5.9:9997/data/bbg/getAssetsHistoryStartEnd/TIP IM Equity/TOT_RETURN_INDEX_NET_DVDS/1514246400/1530662400/EUR"
      }
    },
    "REY IM Equity":{
      "GET":{
        "url":"http://192.168.5.9:9997/data/bbg/getAssetsHistoryStartEnd/REY IM Equity/TOT_RETURN_INDEX_NET_DVDS/1514246400/1530662400/EUR"
      }
    },
    "LR IM Equity":{
      "GET":{
        "url":"http://192.168.5.9:9997/data/bbg/getAssetsHistoryStartEnd/LR IM Equity/TOT_RETURN_INDEX_NET_DVDS/1514246400/1530662400/EUR"
      }
    },
    "DIB IM Equity":{
      "GET":{
        "url":"http://192.168.5.9:9997/data/bbg/getAssetsHistoryStartEnd/DIB IM Equity/TOT_RETURN_INDEX_NET_DVDS/1514246400/1530662400/EUR"
      }
    },
    "IMA IM Equity":{
      "GET":{
        "url":"http://192.168.5.9:9997/data/bbg/getAssetsHistoryStartEnd/IMA IM Equity/TOT_RETURN_INDEX_NET_DVDS/1514246400/1530662400/EUR"
      }
    },
    "AMP IM Equity":{
      "GET":{
        "url":"http://192.168.5.9:9997/data/bbg/getAssetsHistoryStartEnd/AMP IM Equity/TOT_RETURN_INDEX_NET_DVDS/1514246400/1530662400/EUR"
      }
    },
    "GIMA IM Equity":{
      "GET":{
        "url":"http://192.168.5.9:9997/data/bbg/getAssetsHistoryStartEnd/GIMA IM Equity/TOT_RETURN_INDEX_NET_DVDS/1514246400/1530662400/EUR"
      }
    },
    "UNIR IM Equity":{
      "GET":{
        "url":"http://192.168.5.9:9997/data/bbg/getAssetsHistoryStartEnd/UNIR IM Equity/TOT_RETURN_INDEX_NET_DVDS/1514246400/1530662400/EUR"
      }
    },
    "ELN IM Equity":{
      "GET":{
        "url":"http://192.168.5.9:9997/data/bbg/getAssetsHistoryStartEnd/ELN IM Equity/TOT_RETURN_INDEX_NET_DVDS/1514246400/1530662400/EUR"
      }
    },
    "ELC IM Equity":{
      "GET":{
        "url":"http://192.168.5.9:9997/data/bbg/getAssetsHistoryStartEnd/ELC IM Equity/TOT_RETURN_INDEX_NET_DVDS/1514246400/1530662400/EUR"
      }
    },
    "IP IM Equity":{
      "GET":{
        "url":"http://192.168.5.9:9997/data/bbg/getAssetsHistoryStartEnd/IP IM Equity/TOT_RETURN_INDEX_NET_DVDS/1514246400/1530662400/EUR"
      }
    },
    "LD IM Equity":{
      "GET":{
        "url":"http://192.168.5.9:9997/data/bbg/getAssetsHistoryStartEnd/LD IM Equity/TOT_RETURN_INDEX_NET_DVDS/1514246400/1530662400/EUR"
      }
    },
    "BSS IM Equity":{
      "GET":{
        "url":"http://192.168.5.9:9997/data/bbg/getAssetsHistoryStartEnd/BSS IM Equity/TOT_RETURN_INDEX_NET_DVDS/1514246400/1530662400/EUR"
      }
    },
    "IF IM Equity":{
      "GET":{
        "url":"http://192.168.5.9:9997/data/bbg/getAssetsHistoryStartEnd/IF IM Equity/TOT_RETURN_INDEX_NET_DVDS/1514246400/1530662400/EUR"
      }
    },
    "PRI IM Equity":{
      "GET":{
        "url":"http://192.168.5.9:9997/data/bbg/getAssetsHistoryStartEnd/PRI IM Equity/TOT_RETURN_INDEX_NET_DVDS/1514246400/1530662400/EUR"
      }
    },
    "GE IM Equity":{
      "GET":{
        "url":"http://192.168.5.9:9997/data/bbg/getAssetsHistoryStartEnd/GE IM Equity/TOT_RETURN_INDEX_NET_DVDS/1514246400/1530662400/EUR"
      }
    }
  }

a = list(dataServer.keys())
tickers = {    "IB_tick_AMP": 18.84,
    "IB_tick_AST": 1.878,
    "IB_tick_BSS": 32.3,
    "IB_tick_BST": 2.06,
    "IB_tick_CAI": 3.28,
    "IB_tick_DIB": 9.61,
    "IB_tick_ELC": 2.14,
    "IB_tick_ELN": 28.7,
    "IB_tick_FKR": 2.24,
    "IB_tick_GE": 7.46,
    "IB_tick_GIMA": 13.07,
    "IB_tick_IF": 22.56,
    "IB_tick_IGD": 6.921,
    "IB_tick_IMA": 72.75,
    "IB_tick_IP": 27.18,
    "IB_tick_LD": 10.16,
    "IB_tick_LR": 1.396,
    "IB_tick_MN": 1.46,
    "IB_tick_MTV": 4.15,
    "IB_tick_PRI": 31.75,
    "IB_tick_PRT": 3.79,
    "IB_tick_REY": 57.25,
    "IB_tick_SO": 2.088,
    "IB_tick_TIP": 6.31,
    "IB_tick_UNIR": 11.34}
tickers = ['%s IM Equity' % k.split('_')[-1] for k in tickers.keys()]
print(tickers)
print('----- Italian basket ticker list: ')

newTicker = list(ds.keys())
print('----- New Ticker: ')
print(newTicker)
# tickers = newTicker
a = newTicker
print('----- ', set(a) == set(tickers))
# ----------- Intalian Basket tickers Done ------------- #

a = ['LDO IM Equity', 'UCG IM Equity', 'ISP IM Equity']
a = ['AAPL US Equity', 'AMZN US Equity']
cef = {
    "BFZ US Equity": 0.1,
    "BNY US Equity": 0.1,
    "CEV US Equity": 0.1,
    "EVM US Equity": 0.1,
    "IEF US Equity": -0.7362570731796376,
    "JRI US Equity": 0.1,
    "LQD US Equity": -0.7233316214456829,
    "MVT US Equity": 0.1,
    "NKG US Equity": 0.1,
    "NKX US Equity": 0.1,
    "NMT US Equity": 0.1,
    "NRK US Equity": 0.1,
}
cefNew = {
                "NRK US Equity": 0.1,
                "JRS US Equity": 0.1,
                "MYJ US Equity": 0.1,
                "EVM US Equity": 0.1,
                "CEV US Equity": 0.1,
                "NKX US Equity": 0.1,
                "BFZ US Equity": 0.1,
                "MVT US Equity": 0.1,
                "BNY US Equity": 0.1,
                "NKG US Equity": 0.1,
                "IEF US Equity": -0.9774592071035839,
                "LQD US Equity": -0.5341753659773385
            }
# a = list(cef.keys())
a = list(cefNew.keys())
# a = ['CB CQISCEFT Index']
lis = ''
for i in a:
    lis += i
    lis += ','
print(a)
print(lis)

filename = 'CEF_New_Weights_data'
startdate = '2018-08-28'
enddate = '2018-08-30'
currency = 'USD'
field = 'PX_LAST'
# field = 'PX_LAST'
# field = 'CUR_MKT_CAP'


['SO IM Equity', 'UNIR IM Equity', 'IP IM Equity', 'FKR IM Equity', 'AST IM Equity', 'ELN IM Equity', 'LD IM Equity', 'IMA IM Equity', 'CAI IM Equity', 'BSS IM Equity', 'MTV IM Equity', 'TIP IM Equity', 'LR IM Equity', 'PRI IM Equity', 'IF IM Equity', 'MN IM Equity', 'REY IM Equity', 'GE IM Equity', 'DIB IM Equity', 'PRT IM Equity', 'BST IM Equity', 'GIMA IM Equity', 'AMP IM Equity', 'IGD IM Equity', 'ELC IM Equity']
----- Italian basket ticker list: 
----- New Ticker: 
['GIMA IM Equity', 'BST IM Equity', 'MTV IM Equity', 'IF IM Equity', 'IMA IM Equity', 'PRI IM Equity', 'IP IM Equity', 'SO IM Equity', 'PRT IM Equity', 'DIB IM Equity', 'REY IM Equity', 'MN IM Equity', 'LR IM Equity', 'CAI IM Equity', 'AMP IM Equity', 'UNIR IM Equity', 'BSS IM Equity', 'AST IM Equity', 'TIP IM Equity', 'FKR IM Equity', 'ELC IM Equity', 'IGD IM Equity', 'GE IM Equity', 'LD IM Equity', 'ELN IM Equity']
-----  True
['CEV US Equity', 'BFZ US Equity', 'MYJ US Equity', 'NKG US Equity', 'NRK US Equity', 'EVM US Equity', 'IEF US Equity', 'BNY US Equity', 'LQD US Equity', 'NKX US Equity', 'MVT US Equity', 'JRS US Equity']
CEV US Equity,BFZ US Equity,MYJ US Equity,NKG US Equity,NRK US Equity,EVM US Equity,IEF US Equity,BNY US Equity,LQD US Equity,NKX US Equity,MVT US Equity,JRS US Equity,

In [44]:
start = datetimeToUnix(startdate)
end = datetimeToUnix(enddate)
print(start)
print(end)
# start = 1363046400
# end = 1523538414
url = "http://192.168.5.9:9997/data/bbg/getAssetsHistoryStartEnd/[%s]/[%s]/%s/%s/%s" % (lis[:-1], field, start, end, currency)
print(url)
res = requests.get(url)
data = res.json()

df = pd.DataFrame()
for k, value in data.items():
    _ = pd.DataFrame.from_dict(value)[field]
    df[k] = _

df.index = pd.to_datetime(df.index, unit='s')
print(df.tail())
df.to_csv('data_%s_%s.csv' % (filename, field))


1535414400
1535587200
http://192.168.5.9:9997/data/bbg/getAssetsHistoryStartEnd/[CEV US Equity,BFZ US Equity,MYJ US Equity,NKG US Equity,NRK US Equity,EVM US Equity,IEF US Equity,BNY US Equity,LQD US Equity,NKX US Equity,MVT US Equity,JRS US Equity]/[PX_LAST]/1535414400/1535587200/USD
            CEV US Equity  BFZ US Equity  MYJ US Equity  NKG US Equity  \
2018-08-28          11.46          12.71          13.37        11.2550   
2018-08-29          11.54          12.71          13.37        11.2623   
2018-08-30          11.51          12.67          13.34        11.2185   

            NRK US Equity  EVM US Equity  IEF US Equity  BNY US Equity  \
2018-08-28          12.13          10.25         102.43        12.4500   
2018-08-29          12.13          10.25         102.40        12.4200   
2018-08-30          12.16          10.29         102.59        12.4182   

            LQD US Equity  NKX US Equity  MVT US Equity  JRS US Equity  
2018-08-28         115.62          13.39          13.86          10.37  
2018-08-29         115.50          13.34          13.82          10.36  
2018-08-30         115.61          13.43          13.82          10.29  

In [7]:
# 2018-04-24
import json
d = df.loc['2017-12-28']

data = d.to_dict()
ddd = {}
for ticker, price in data.items():
    ibt = 'IB_tick_%s' % ticker.split(' ')[0]
    ddd[ibt] = price

print('PriceBase: ')
print(json.dumps(ddd))
print('IndexBase: ', 1003.638966)


PriceBase: 
{"IB_tick_SO": 4.058, "IB_tick_UNIR": 14.3, "IB_tick_PRI": 33.77, "IB_tick_FKR": 2.072, "IB_tick_LD": 16.39, "IB_tick_ELN": 26.3, "IB_tick_AST": 2.088, "IB_tick_IMA": 68.85, "IB_tick_IGD": 0.9785, "IB_tick_GE": 9.955, "IB_tick_BSS": 43.06, "IB_tick_MTV": 6.545, "IB_tick_TIP": 5.58, "IB_tick_LR": 1.58, "IB_tick_IP": 26.56, "IB_tick_IF": 41.5, "IB_tick_MN": 2.162, "IB_tick_BST": 2.286, "IB_tick_ELC": 2.448, "IB_tick_PRT": 4.188, "IB_tick_REY": 46.51, "IB_tick_GIMA": 16.59, "IB_tick_AMP": 13.1, "IB_tick_CAI": 3.764, "IB_tick_DIB": 10.86}
IndexBase:  1003.638966

In [8]:
# Publishing API data (2017-12-28)
currentBasePrices = {
"IB_tick_BST": 2.286,
"IB_tick_IGD": 9.0965,
"IB_tick_LR": 1.58,
"IB_tick_SO": 4.058,
"IB_tick_RM": 0.556,
"IB_tick_IP": 26.56,
"IB_tick_ELN": 26.3,
"IB_tick_ELC": 2.448,
"IB_tick_TIP": 5.58,
"IB_tick_AMP": 13.1,
"IB_tick_DIS": 0.2618,
"IB_tick_CAI": 3.764,
"IB_tick_ASC": 3.602,
"IB_tick_XPR": 1.527,
"IB_tick_DIB": 10.86,
"IB_tick_FKR": 2.072,
"IB_tick_GIMA": 16.59,
"IB_tick_LD": 16.39,
"IB_tick_PRT": 4.188,
"IB_tick_AST": 2.088,
"IB_tick_UNIR": 14.3,
"IB_tick_DEA": 1.37,
"IB_tick_MTV": 6.545,
"IB_tick_IF": 41.5,
"IB_tick_MN": 2.162
}

for ticker, price in d.to_dict().items():
    ib_ticker = 'IB_tick_%s' % ticker.split(' ')[0]
    publishPrice = currentBasePrices[ib_ticker]
    if round(publishPrice - price, 4) != 0.0:
        raise

print('prices checked!')


---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-8-d40f5bb99cc6> in <module>()
     30 for ticker, price in d.to_dict().items():
     31     ib_ticker = 'IB_tick_%s' % ticker.split(' ')[0]
---> 32     publishPrice = currentBasePrices[ib_ticker]
     33     if round(publishPrice - price, 4) != 0.0:
     34         raise

KeyError: 'IB_tick_IMA'

In [9]:
a = {
"IB_tick_FKR": 2.12211164,
"IB_tick_MTV": 6.38,
"IB_tick_SO": 4.01,
"IB_tick_PRT": 3.9919639764,
"IB_tick_CAI": 3.6120657182,
"IB_tick_BST": 2.1843024302,
"IB_tick_AST": 2.12,
"IB_tick_IGD": 8.9617,
"IB_tick_MN": 2.082,
"IB_tick_TIP": 5.555,
"IB_tick_RM": 0.503611457,
"IB_tick_LR": 1.57,
"IB_tick_DIB": 10.82,
"IB_tick_DIS": 0.2585,
"IB_tick_AMP": 12.84,
"IB_tick_GIMA": 16.61,
"IB_tick_UNIR": 14.24,
"IB_tick_ELN": 26.03,
"IB_tick_ELC": 2.422,
"IB_tick_IP": 26.22,
"IB_tick_LD": 16.39,
"IB_tick_XPR": 1.505,
"IB_tick_IF": 39.5337547004,
"IB_tick_DEA": 1.349,
"IB_tick_ASC": 3.3651628161
}
print(json.dumps(a))


{"IB_tick_SO": 4.01, "IB_tick_ASC": 3.3651628161, "IB_tick_UNIR": 14.24, "IB_tick_IP": 26.22, "IB_tick_FKR": 2.12211164, "IB_tick_AST": 2.12, "IB_tick_ELN": 26.03, "IB_tick_LD": 16.39, "IB_tick_CAI": 3.6120657182, "IB_tick_MTV": 6.38, "IB_tick_TIP": 5.555, "IB_tick_DIS": 0.2585, "IB_tick_XPR": 1.505, "IB_tick_IF": 39.5337547004, "IB_tick_MN": 2.082, "IB_tick_RM": 0.503611457, "IB_tick_ELC": 2.422, "IB_tick_PRT": 3.9919639764, "IB_tick_BST": 2.1843024302, "IB_tick_GIMA": 16.61, "IB_tick_LR": 1.57, "IB_tick_IGD": 8.9617, "IB_tick_DEA": 1.349, "IB_tick_DIB": 10.82, "IB_tick_AMP": 12.84}

In [10]:
import copy
# Get right last prices at 2018-05-18
last = df.loc['2018-05-18']
last = last.to_json()

# Get right last total return index at 2018-05-18
last = df.loc['2018-05-18']
last = last.to_json()


# Get right adjusted base price at 2017-12-28
print('----- Last Price: ')
lastPrices = {"GIMA IM Equity":15.33,"SO IM Equity":3.106,"MTV IM Equity":4.55,"IGD IM Equity":7.449,"XPR IM Equity":1.362,"ELC IM Equity":2.35,"BST IM Equity":2.015,"FKR IM Equity":2.165,"AST IM Equity":2.37,"UNIR IM Equity":14.64,"TIP IM Equity":6.06,"LR IM Equity":1.466,"DEA IM Equity":1.548,"CAI IM Equity":3.245,"ASC IM Equity":3.115,"PRT IM Equity":4.155,"DIB IM Equity":9.76,"IF IM Equity":28.78,"LD IM Equity":11.1,"ELN IM Equity":30.08,"MN IM Equity":1.378,"DIS IM Equity":0.1958,"IP IM Equity":28.1,"AMP IM Equity":15.78,"RM IM Equity":0.788}

print('----- Total return Price: ')
totalReturnLast = {"GIMA IM Equity":15.33,"SO IM Equity":3.106,"MTV IM Equity":4.55,"IGD IM Equity":7.449,"XPR IM Equity":1.362,"ELC IM Equity":2.35,"BST IM Equity":2.0922,"FKR IM Equity":2.2138,"AST IM Equity":2.37,"UNIR IM Equity":14.64,"TIP IM Equity":6.06,"LR IM Equity":1.466,"DEA IM Equity":1.548,"CAI IM Equity":3.3329,"ASC IM Equity":3.2824,"PRT IM Equity":4.2841,"DIB IM Equity":9.76,"IF IM Equity":29.6799,"LD IM Equity":11.1,"ELN IM Equity":30.08,"MN IM Equity":1.378,"DIS IM Equity":0.1958,"IP IM Equity":28.1,"AMP IM Equity":15.78,"RM IM Equity":0.791}
print(totalReturnLast)

print('----- Original base Price: ')
basePrice = {"GIMA IM Equity":16.59,"SO IM Equity":4.058,"MTV IM Equity":6.545,"IGD IM Equity":9.0965,"XPR IM Equity":1.527,"ELC IM Equity":2.448,"BST IM Equity":2.286,"FKR IM Equity":2.072,"AST IM Equity":2.088,"UNIR IM Equity":14.3,"TIP IM Equity":5.58,"LR IM Equity":1.58,"DEA IM Equity":1.37,"CAI IM Equity":3.764,"ASC IM Equity":3.602,"PRT IM Equity":4.188,"DIB IM Equity":10.86,"IF IM Equity":41.5,"LD IM Equity":16.39,"ELN IM Equity":26.3,"MN IM Equity":2.162,"DIS IM Equity":0.2618,"IP IM Equity":26.56,"AMP IM Equity":13.1,"RM IM Equity":0.556}

# Update the Intalian Basket json file
def _getAdjustedLastPrice(lastPrices: dict, currentClosePrices: dict, bbgTotalReturnIndexs: dict) -> dict:
    """

        :param lastPrices: base price to calculate return.
        :param currentClosePrices: PX_LAST for current trading day.
        :param bbgTotalReturnIndexs: with IB ticker!!!
        :return: with IB ticker!!!
        """
    res = {}
    for ticker, lastPrice in lastPrices.items():
        currentClosePrice = currentClosePrices[ticker]
        bbgTotalReturnIndex = bbgTotalReturnIndexs[ticker]
        res[ticker] = round(currentClosePrice * lastPrice / bbgTotalReturnIndex, 10)

    return res

print('------- Adjusted base prices')
adjustedBasePrices = _getAdjustedLastPrice(basePrice, lastPrices, totalReturnLast)
# print(adjustedBasePrices)

for ticker, item in adjustedBasePrices.items():
    # print(ticker, item == basePrice[ticker])
    # print(lastPrices[ticker]/item)
    # print(totalReturnLast[ticker]/basePrice[ticker])
    if not round((lastPrices[ticker]/item), 8) == round(totalReturnLast[ticker]/basePrice[ticker], 8):
        print(ticker, 'test NOT passed!')

def _changeBbgTickerToIb(bbgPrices: dict) -> dict:
    """
    
    IP IM Equity ---> IB_tick_IP
    
    :param bbgPrices:
    :return:
    """
    res = {}
    for bbgTicker, value in bbgPrices.items():  # type: str
        symbol, _, _ = bbgTicker.split(' ')
        ticker = 'IB_tick_%s' % symbol
        res[ticker] = value
        
    return res

print('\npersistLastPrices: ')
persistLastPrices = _changeBbgTickerToIb(basePrice)
print(json.dumps(persistLastPrices))

print('\ncurrentTickPrice:')
currentTickPrice = _changeBbgTickerToIb(lastPrices)
print(json.dumps(currentTickPrice))

print('\nlastPrices: ')
lastAdjPrices = _changeBbgTickerToIb(adjustedBasePrices)
print(json.dumps(lastAdjPrices))

print('\nTotal reuturn prices: ')
print(_changeBbgTickerToIb(basePrice))
    
# Launch the live publish
# done.

# Test form Restlet
# done.


----- Last Price: 
----- Total return Price: 
{'CAI IM Equity': 3.3329, 'MTV IM Equity': 4.55, 'IF IM Equity': 29.6799, 'BST IM Equity': 2.0922, 'IP IM Equity': 28.1, 'SO IM Equity': 3.106, 'DIS IM Equity': 0.1958, 'DIB IM Equity': 9.76, 'XPR IM Equity': 1.362, 'LR IM Equity': 1.466, 'MN IM Equity': 1.378, 'PRT IM Equity': 4.2841, 'GIMA IM Equity': 15.33, 'ASC IM Equity': 3.2824, 'AMP IM Equity': 15.78, 'UNIR IM Equity': 14.64, 'AST IM Equity': 2.37, 'RM IM Equity': 0.791, 'TIP IM Equity': 6.06, 'FKR IM Equity': 2.2138, 'ELC IM Equity': 2.35, 'DEA IM Equity': 1.548, 'IGD IM Equity': 7.449, 'LD IM Equity': 11.1, 'ELN IM Equity': 30.08}
----- Original base Price: 
------- Adjusted base prices

persistLastPrices: 
{"IB_tick_SO": 4.058, "IB_tick_ASC": 3.602, "IB_tick_UNIR": 14.3, "IB_tick_IP": 26.56, "IB_tick_FKR": 2.072, "IB_tick_LD": 16.39, "IB_tick_ELN": 26.3, "IB_tick_AST": 2.088, "IB_tick_IGD": 9.0965, "IB_tick_MTV": 6.545, "IB_tick_TIP": 5.58, "IB_tick_DIS": 0.2618, "IB_tick_XPR": 1.527, "IB_tick_LR": 1.58, "IB_tick_IF": 41.5, "IB_tick_MN": 2.162, "IB_tick_RM": 0.556, "IB_tick_ELC": 2.448, "IB_tick_PRT": 4.188, "IB_tick_BST": 2.286, "IB_tick_GIMA": 16.59, "IB_tick_AMP": 13.1, "IB_tick_CAI": 3.764, "IB_tick_DEA": 1.37, "IB_tick_DIB": 10.86}

currentTickPrice:
{"IB_tick_SO": 3.106, "IB_tick_ASC": 3.115, "IB_tick_UNIR": 14.64, "IB_tick_IP": 28.1, "IB_tick_FKR": 2.165, "IB_tick_LD": 11.1, "IB_tick_ELN": 30.08, "IB_tick_AST": 2.37, "IB_tick_IGD": 7.449, "IB_tick_MTV": 4.55, "IB_tick_TIP": 6.06, "IB_tick_DIS": 0.1958, "IB_tick_XPR": 1.362, "IB_tick_LR": 1.466, "IB_tick_IF": 28.78, "IB_tick_MN": 1.378, "IB_tick_RM": 0.788, "IB_tick_ELC": 2.35, "IB_tick_PRT": 4.155, "IB_tick_BST": 2.015, "IB_tick_GIMA": 15.33, "IB_tick_AMP": 15.78, "IB_tick_CAI": 3.245, "IB_tick_DEA": 1.548, "IB_tick_DIB": 9.76}

lastPrices: 
{"IB_tick_SO": 4.058, "IB_tick_ASC": 3.4183006337, "IB_tick_UNIR": 14.3, "IB_tick_IP": 26.56, "IB_tick_FKR": 2.0263257747, "IB_tick_LD": 16.39, "IB_tick_ELN": 26.3, "IB_tick_AST": 2.088, "IB_tick_IGD": 9.0965, "IB_tick_MTV": 6.545, "IB_tick_TIP": 5.58, "IB_tick_DIS": 0.2618, "IB_tick_XPR": 1.527, "IB_tick_IF": 40.2417124047, "IB_tick_MN": 2.162, "IB_tick_RM": 0.5538912769, "IB_tick_ELC": 2.448, "IB_tick_PRT": 4.0617959431, "IB_tick_BST": 2.2016489819, "IB_tick_GIMA": 16.59, "IB_tick_LR": 1.58, "IB_tick_CAI": 3.664730415, "IB_tick_DEA": 1.37, "IB_tick_DIB": 10.86, "IB_tick_AMP": 13.1}

Total reuturn prices: 
{'IB_tick_SO': 4.058, 'IB_tick_ASC': 3.602, 'IB_tick_UNIR': 14.3, 'IB_tick_IP': 26.56, 'IB_tick_FKR': 2.072, 'IB_tick_LD': 16.39, 'IB_tick_ELN': 26.3, 'IB_tick_AST': 2.088, 'IB_tick_IGD': 9.0965, 'IB_tick_MTV': 6.545, 'IB_tick_TIP': 5.58, 'IB_tick_DIS': 0.2618, 'IB_tick_XPR': 1.527, 'IB_tick_LR': 1.58, 'IB_tick_IF': 41.5, 'IB_tick_MN': 2.162, 'IB_tick_RM': 0.556, 'IB_tick_ELC': 2.448, 'IB_tick_PRT': 4.188, 'IB_tick_BST': 2.286, 'IB_tick_GIMA': 16.59, 'IB_tick_AMP': 13.1, 'IB_tick_CAI': 3.764, 'IB_tick_DEA': 1.37, 'IB_tick_DIB': 10.86}

In [11]:
# download data to test blending function
tickers = ["SPY", "IWM", "EFA", ]

In [ ]: