Exemple #1
0
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)
Exemple #2
0
 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)
Exemple #3
0
    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
Exemple #4
0
    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]
Exemple #5
0
    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)
Exemple #6
0
    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)