def offer_cashflow(self): """Return the bid cashflow. :rtype: float :returns: Bid cashflow or 0.0 """ return float(multi_level_get(self.cashflow, "offer_values.total.value", '0.0'))
def offer_volume(self): """Get the bid volume. :rtype: float :returns: Bid volume or 0.0 """ return float(multi_level_get(self.volume, "offer_values.original.total.value", '0.0'))
def offer_cashflow(self): """Return the bid cashflow. :rtype: float :returns: Bid cashflow or 0.0 """ return float( multi_level_get(self.cashflow, "offer_values.total.value", '0.0'))
def rate(self, which): """Extract the rate paid for either "bid" or "offer" from the data. :param which: "bid" or "offer" :returns: The calculated rate :rtype: float """ if which.lower() not in ["bid", "offer"]: return 0.0 if which.lower() == "bid": volume = multi_level_get(self.volume, "bid_values.original.total.value", '0.0') cash = multi_level_get(self.cashflow, "bid_values.total.value", '0.0') else: volume = multi_level_get(self.volume, "offer_values.original.total.value", '0.0') cash = multi_level_get(self.cashflow, "offer_values.total.value", '0.0') if cash == '0.0' or volume == '0.0': return 0.0 return float(cash) / float(volume)
def bid_volume(self): """Get the bid volume. :rtype: float :returns: Bid volume or 0.0 """ return float( multi_level_get(self.volume, "bid_values.original.total.value", '0.0'))
def bm_unitdata(args): """ BMReport Unit Constraint Data The data can be filtered by date and or period using the --date and --period flags. :Example: To obtain data for period 5, 1st Jan 2016 .. code-block: $ pywind bm_unitdata --date 2016-01-01 --period 5 """ if args.date is not None: udd = UnitData(date=args.date) else: udd = UnitData() print("No date supplied, getting information for yesterday, {}.\n". format(udd.date)) if args.period is not None: udd.period = args.period if udd.get_data() is False: print("Unable to get unit data.") sys.exit(0) print("Data is for period {}, {}".format(udd.period, udd.date)) fmt = StdoutFormatter('9s', '30s', '>10.4f', '>10s', '>10.4f', '>10s', '>10.4f', '>10.4f', '>10.4f', ">10.4f") print("{:43s} Bid Volume Offer Volume Cashflow". format(' ')) print( fmt.titles("NGC", 'Lead', 'Original', 'Tagged', 'Original', 'Tagged', 'Bid', 'Offer', 'Bid Rate', 'Offer Rate')) for bmu in udd.data: print( fmt.row( bmu.id, bmu.lead, bmu.bid_volume, multi_level_get(bmu.volume, 'bid_values.tagged.total.value', 'n/a'), bmu.offer_volume, multi_level_get(bmu.volume, 'offer_values.tagged.total.value', 'n/a'), bmu.bid_cashflow, bmu.offer_cashflow, bmu.rate("bid"), bmu.rate("offer"))) return udd
def bm_unitdata(args): """ BMReport Unit Constraint Data The data can be filtered by date and or period using the --date and --period flags. :Example: To obtain data for period 5, 1st Jan 2016 .. code-block: $ pywind bm_unitdata --date 2016-01-01 --period 5 """ if args.date is not None: udd = UnitData(date=args.date) else: udd = UnitData() print("No date supplied, getting information for yesterday, {}.\n".format(udd.date)) if args.period is not None: udd.period = args.period if udd.get_data() is False: print("Unable to get unit data.") sys.exit(0) print("Data is for period {}, {}".format(udd.period, udd.date)) fmt = StdoutFormatter('9s', '30s', '>10.4f', '>10s', '>10.4f', '>10s', '>10.4f', '>10.4f', '>10.4f', ">10.4f") print("{:43s} Bid Volume Offer Volume Cashflow".format(' ')) print(fmt.titles("NGC", 'Lead', 'Original', 'Tagged', 'Original', 'Tagged', 'Bid', 'Offer', 'Bid Rate', 'Offer Rate')) for bmu in udd.data: print(fmt.row(bmu.id, bmu.lead, bmu.bid_volume, multi_level_get(bmu.volume, 'bid_values.tagged.total.value', 'n/a'), bmu.offer_volume, multi_level_get(bmu.volume, 'offer_values.tagged.total.value', 'n/a'), bmu.bid_cashflow, bmu.offer_cashflow, bmu.rate("bid"), bmu.rate("offer"))) return udd