def add_summary_page(self): """Build a table which is shown on the first page which gives an overview of the portfolios""" s = PortfolioSummary() s.include_long_short() pieces = [] for r in self.results: tmp = s(r.port, PortfolioSummary.analyze_returns) tmp['desc'] = r.desc tmp['sid'] = r.sid tmp = tmp.set_index(['sid', 'desc'], append=1).reorder_levels([2, 1, 0]) pieces.append(tmp) frame = pd.concat(pieces) tf = self.pdf.table_formatter(frame) tf.apply_basic_style(cmap=self.table_style) # [col.guess_format(pcts=1, trunc_dot_zeros=1) for col in tf.cells.iter_cols()] tf.cells.match_column_labels( ['nmonths', 'cnt', 'win cnt', 'lose cnt', 'dur max']).int_format() tf.cells.match_column_labels(['sharpe ann', 'sortino', 'dur avg']).float_format(precision=1) tf.cells.match_column_labels(['maxdd dt']).apply_format( new_datetime_formatter('%d-%b-%y')) tf.cells.match_column_labels([ 'cagr', 'mret avg', 'mret std ann', 'ret std', 'mret avg ann', 'maxdd', 'avg dd', 'winpct', 'ret avg', 'ret min', 'ret max' ]).percent_format() self.pdf.build_page('summary', {'F1': tf.build()})
def add_summary_page(self): """Build a table which is shown on the first page which gives an overview of the portfolios""" s = PortfolioSummary() s.include_long_short() pieces = [] for r in self.results: tmp = s(r.port, PortfolioSummary.analyze_returns) tmp["desc"] = r.desc tmp["sid"] = r.sid tmp = tmp.set_index(["sid", "desc"], append=1).reorder_levels([2, 1, 0]) pieces.append(tmp) frame = pd.concat(pieces) tf = self.pdf.table_formatter(frame) tf.apply_basic_style(cmap=self.table_style) # [col.guess_format(pcts=1, trunc_dot_zeros=1) for col in tf.cells.iter_cols()] tf.cells.match_column_labels( ["nmonths", "cnt", "win cnt", "lose cnt", "dur max"]).int_format() tf.cells.match_column_labels(["sharpe ann", "sortino", "dur avg"]).float_format(precision=1) tf.cells.match_column_labels(["maxdd dt"]).apply_format( new_datetime_formatter("%d-%b-%y")) tf.cells.match_column_labels([ "cagr", "mret avg", "mret std ann", "ret std", "mret avg ann", "maxdd", "avg dd", "winpct", "ret avg", "ret min", "ret max", ]).percent_format() self.pdf.build_page("summary", {"F1": tf.build()})
def add_summary_page(self): """Build a table which is shown on the first page which gives an overview of the portfolios""" s = PortfolioSummary() s.include_long_short() pieces = [] for r in self.results: tmp = s(r.port, PortfolioSummary.analyze_returns) tmp['desc'] = r.desc tmp['sid'] = r.sid tmp = tmp.set_index(['sid', 'desc'], append=1).reorder_levels([2, 1, 0]) pieces.append(tmp) frame = pd.concat(pieces) tf = self.pdf.table_formatter(frame) tf.apply_basic_style(cmap=self.table_style) # [col.guess_format(pcts=1, trunc_dot_zeros=1) for col in tf.cells.iter_cols()] tf.cells.match_column_labels(['nmonths', 'cnt', 'win cnt', 'lose cnt', 'dur max']).int_format() tf.cells.match_column_labels(['sharpe ann', 'sortino', 'dur avg']).float_format(precision=1) tf.cells.match_column_labels(['maxdd dt']).apply_format(new_datetime_formatter('%d-%b-%y')) tf.cells.match_column_labels(['cagr', 'mret avg', 'mret std ann', 'ret std', 'mret avg ann', 'maxdd', 'avg dd', 'winpct', 'ret avg', 'ret min', 'ret max']).percent_format() self.pdf.build_page('summary', {'F1': tf.build()})
IntFormatter = pad_positive_wrapper(fmt.new_int_formatter(nan='-')) FloatFormatter = pad_positive_wrapper(fmt.new_float_formatter(nan='-')) PercentFormatter = pad_positive_wrapper(fmt.new_percent_formatter(nan='-')) ThousandsFormatter = pad_positive_wrapper(fmt.new_thousands_formatter(nan='-')) MillionsFormatter = pad_positive_wrapper(fmt.new_millions_formatter(nan='-')) BillionsFormatter = pad_positive_wrapper(fmt.new_billions_formatter(nan='-')) # Don't attempt to pad DynamicNumberFormatter = fmt.DynamicNumberFormat(nan='-', pcts=1, trunc_dot_zeros=1) DollarCentsFormatter = pad_positive_wrapper(fmt.new_float_formatter(prefix='$', nan='-')) DollarFormatter = pad_positive_wrapper(fmt.new_int_formatter(prefix='$', nan='-')) ThousandDollarsFormatter = pad_positive_wrapper(fmt.new_thousands_formatter(prefix='$', nan='-')) MillionDollarsFormatter = pad_positive_wrapper(fmt.new_millions_formatter(prefix='$', nan='-')) BillionDollarsFormatter = pad_positive_wrapper(fmt.new_billions_formatter(prefix='$', nan='-')) YmdFormatter = fmt.new_datetime_formatter('%Y%m%d', True) Y_m_dFormatter = fmt.new_datetime_formatter('%Y_%m_%d', True) mdYFormatter = fmt.new_datetime_formatter('%m/%d/%Y', True) class DynamicTable(Table): def __init__(self, data, on_wrap=None, **kwargs): self.on_wrap = on_wrap Table.__init__(self, data, **kwargs) self._longTableOptimize = 0 def wrap(self, awidth, aheight): self.on_wrap and self.on_wrap(self, awidth, aheight) return Table.wrap(self, awidth, aheight)
DynamicNumberFormatter = fmt.DynamicNumberFormat(method='col', nan='-', pcts=1, trunc_dot_zeros=1) DollarCentsFormatter = pad_positive_wrapper( fmt.new_float_formatter(prefix='$', nan='-')) DollarFormatter = pad_positive_wrapper( fmt.new_int_formatter(prefix='$', nan='-')) ThousandDollarsFormatter = pad_positive_wrapper( fmt.new_thousands_formatter(prefix='$', nan='-')) MillionDollarsFormatter = pad_positive_wrapper( fmt.new_millions_formatter(prefix='$', nan='-')) BillionDollarsFormatter = pad_positive_wrapper( fmt.new_billions_formatter(prefix='$', nan='-')) YmdFormatter = fmt.new_datetime_formatter('%Y%m%d', True) Y_m_dFormatter = fmt.new_datetime_formatter('%Y-%m-%d', True) mdYFormatter = fmt.new_datetime_formatter('%m/%d/%Y', True) class DynamicTable(Table): def __init__(self, data, on_wrap=None, **kwargs): self.on_wrap = on_wrap Table.__init__(self, data, **kwargs) self._longTableOptimize = 0 def wrap(self, awidth, aheight): self.on_wrap and self.on_wrap(self, awidth, aheight) return Table.wrap(self, awidth, aheight)
IntFormatter = pad_positive_wrapper(fmt.new_int_formatter(nan="-")) FloatFormatter = pad_positive_wrapper(fmt.new_float_formatter(nan="-")) PercentFormatter = pad_positive_wrapper(fmt.new_percent_formatter(nan="-")) ThousandsFormatter = pad_positive_wrapper(fmt.new_thousands_formatter(nan="-")) MillionsFormatter = pad_positive_wrapper(fmt.new_millions_formatter(nan="-")) BillionsFormatter = pad_positive_wrapper(fmt.new_billions_formatter(nan="-")) # Don't attempt to pad DynamicNumberFormatter = fmt.DynamicNumberFormat(method="col", nan="-", pcts=1, trunc_dot_zeros=1) DollarCentsFormatter = pad_positive_wrapper(fmt.new_float_formatter(prefix="$", nan="-")) DollarFormatter = pad_positive_wrapper(fmt.new_int_formatter(prefix="$", nan="-")) ThousandDollarsFormatter = pad_positive_wrapper(fmt.new_thousands_formatter(prefix="$", nan="-")) MillionDollarsFormatter = pad_positive_wrapper(fmt.new_millions_formatter(prefix="$", nan="-")) BillionDollarsFormatter = pad_positive_wrapper(fmt.new_billions_formatter(prefix="$", nan="-")) YmdFormatter = fmt.new_datetime_formatter("%Y%m%d", True) Y_m_dFormatter = fmt.new_datetime_formatter("%Y-%m-%d", True) mdYFormatter = fmt.new_datetime_formatter("%m/%d/%Y", True) class DynamicTable(Table): def __init__(self, data, on_wrap=None, **kwargs): self.on_wrap = on_wrap Table.__init__(self, data, **kwargs) self._longTableOptimize = 0 def wrap(self, awidth, aheight): self.on_wrap and self.on_wrap(self, awidth, aheight) return Table.wrap(self, awidth, aheight)
def test_fmt_datetime(self): self.assertEquals( fmt.new_datetime_formatter('%Y-%m')(pd.to_datetime('1/1/2013')), '2013-01')
def test_fmt_datetime(self): self.assertEqual( fmt.new_datetime_formatter("%Y-%m")(pd.to_datetime("1/1/2013")), "2013-01")
def test_fmt_datetime(self): self.assertEquals(fmt.new_datetime_formatter("%Y-%m")(pd.to_datetime("1/1/2013")), "2013-01")
DynamicNumberFormatter = fmt.DynamicNumberFormat(method="col", nan="-", pcts=1, trunc_dot_zeros=1) DollarCentsFormatter = pad_positive_wrapper( fmt.new_float_formatter(prefix="$", nan="-")) DollarFormatter = pad_positive_wrapper( fmt.new_int_formatter(prefix="$", nan="-")) ThousandDollarsFormatter = pad_positive_wrapper( fmt.new_thousands_formatter(prefix="$", nan="-")) MillionDollarsFormatter = pad_positive_wrapper( fmt.new_millions_formatter(prefix="$", nan="-")) BillionDollarsFormatter = pad_positive_wrapper( fmt.new_billions_formatter(prefix="$", nan="-")) YmdFormatter = fmt.new_datetime_formatter("%Y%m%d", True) Y_m_dFormatter = fmt.new_datetime_formatter("%Y-%m-%d", True) mdYFormatter = fmt.new_datetime_formatter("%m/%d/%Y", True) class DynamicTable(Table): def __init__(self, data, on_wrap=None, **kwargs): self.on_wrap = on_wrap Table.__init__(self, data, **kwargs) self._longTableOptimize = 0 def wrap(self, awidth, aheight): self.on_wrap and self.on_wrap(self, awidth, aheight) return Table.wrap(self, awidth, aheight)
def test_fmt_datetime(self): self.assertEqual(fmt.new_datetime_formatter('%Y-%m')(pd.to_datetime('1/1/2013')), '2013-01')