def add_portfolio_subscription(config, omd): logging.info( 'add_portfolio_subscription: subscribe market data for portfolio items' ) p = portfolio.PortfolioManager(config) p.retrieve_position() undly_months_prices = eval( config.get("market", "option.underlying.month_price").strip('"').strip("'")) # example: MHI-20150929-22600-P toks = map(lambda x: x.split('-'), p.get_pos_contracts()) #[['MHI','20150929', 22600, 'P'], [...]] for t in toks: contractTuple = (t[0], 'FUT', 'HKFE', 'HKD', '', 0, '') #add_subscription(self, contractTuple, month, X, right): rc = map(lambda x: (omd.add_subscription(x[0], x[1], x[2], x[3])),\ [(contractTuple, m[0], t[2], 'P') for m in undly_months_prices] +\ [(contractTuple, m[0], t[2], 'C') for m in undly_months_prices]) # rc = map(lambda x: (omd.add_subscription(x[0], x[1], x[2], x[3])),\ # [((tok[0], 'OPT', 'HKFE', 'HKD', '', 0, ''), m[0], tok[2], tok[3]) for tok in toks]) logging.info('add_portfolio_subscription: add results: %s' % rc)
def ws_recal_pos(self, force_refresh=False): p = portfolio.PortfolioManager(config) if force_refresh: p.retrieve_position() l_gmap = p.recal_port() print l_gmap return json.dumps(l_gmap)
def ws_position_chart_ex(self): p = portfolio.PortfolioManager(config) p.retrieve_position() opt_pos_chart_tmpl = '%s%s/opt-pos-chart-stacked-tmpl.html' % ( cherrypy.request.app.config['/']['tools.staticdir.root'], cherrypy.request.app.config['/static']['tools.staticdir.tmpl']) f = open(opt_pos_chart_tmpl) html_tmpl = f.read() #html_tmpl = html_tmpl.replace('{{{dataPCpos}}}', self.generate_garray(p.get_tbl_pos_list())) # 2017 - handles futures html_tmpl = html_tmpl.replace( '{{{dataPCpos}}}', self.generate_garray_ex(p.get_tbl_pos_list())) html_tmpl = html_tmpl.replace('{{{dataTablePos}}}', p.get_tbl_pos_csv()) html_tmpl = html_tmpl.replace( '{{{option_months}}}', ''.join( ('%s, ' % m) for m in p.get_traded_months())) v = p.group_pos_by_right() html_tmpl = html_tmpl.replace('{{{PRvsCR}}}}', '%0.2f : %0.2f' % (v[0][1], v[1][1])) #print p.get_portfolio_summary() #html_tmpl = html_tmpl.replace('{{{pos_summary}}}', ''.join('<li>%s: %s</li>' % (x[0],x[1]) for x in p.get_portfolio_summary() )) #print '\n'.join('%s:\t\t%s' % (k,v) for k,v in sorted(json.loads(DataMap.rs.get(port_key)).iteritems())) return html_tmpl
def ws_pos_csv(self): p = portfolio.PortfolioManager(config) p.retrieve_position() s = "%s" % p.get_tbl_pos_csv_old() #s = "%s" % p.get_tbl_pos_csv() #print s s = s.replace(',[', '').replace(']', '<br>') print s return s[1:len(s) - 3]
def ws_position_summary(self): p = portfolio.PortfolioManager(config) keys = [("delta_1percent","number"),("delta_all","number"),("delta_c","number"),("delta_p","number"),\ ("theta_1percent","number"),("theta_all","number"),("theta_c","number"),("theta_p","number"),\ ("unreal_pl","number"),("last_updated","string"),("status","string")] d = p.get_portfolio_summary() dict = {} dict['cols'] = [{'label': x[0], 'type': x[1]} for x in keys] dict['rows'] = [{'v': d[x[0]]} for x in keys] print json.dumps(dict) return json.dumps(dict)
def refresh_portfolio(self, sec): p = portfolio.PortfolioManager(self.config) p.retrieve_position() #20150914 #p.recal_port() # undly_months_prices = eval(self.config.get("market", "option.underlying.month_price").strip('"').strip("'")) cnt = 0 while 1: now = int(time.strftime('%H%M')) if (now >= int(DataMap.mkt_sessions['morning'][0]) and now <= int(DataMap.mkt_sessions['morning'][1]) \ or now >= int(DataMap.mkt_sessions['afternoon'][0]) and now <= int(DataMap.mkt_sessions['afternoon'][1])): #20151002 # logging.debug('refresh_portfolio: force retrieve all positions from IB!!') # force retrive again on every run # p.retrieve_position() # subscribe new contracts traded # toks = map(lambda x: x.split('-'), p.get_pos_contracts()) # # for t in toks: # contractTuple = (t[0], 'FUT', 'HKFE', 'HKD', '', 0, '') # # #add_subscription(self, contractTuple, month, X, right): # rc = map(lambda x: (omd.add_subscription(x[0], x[1], x[2], x[3])),\ # [(contractTuple, m[0], t[2], 'P') for m in undly_months_prices] +\ # [(contractTuple, m[0], t[2], 'C') for m in undly_months_prices]) # s = p.recal_port() #print s sleep(sec)