Skip to content

Commit 7788f07

Browse files
committed
feat: add fees columns to trades and orders tables
- Trades table: add Fees column (total_fees) - Orders table: add Fee and Fee Rate columns (order_fee, order_fee_rate)
1 parent c886226 commit 7788f07

2 files changed

Lines changed: 16 additions & 0 deletions

File tree

investing_algorithm_framework/app/reporting/backtest_report.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -462,6 +462,7 @@ def _build_run_data(self):
462462
pct = (ng / cost * 100) if cost else 0
463463
op_dt = t.opened_at
464464
cl_dt = t.closed_at
465+
total_fees = getattr(t, 'total_fees', 0) or 0
465466
trades_list.append({
466467
'id': idx_t,
467468
'sym': sym,
@@ -472,6 +473,7 @@ def _build_run_data(self):
472473
),
473474
'close_price': round(cp, 2),
474475
'cost': round(cost, 2),
476+
'total_fees': round(total_fees, 4),
475477
'net_gain': round(ng, 2),
476478
'pct': round(pct, 2),
477479
})
@@ -576,6 +578,13 @@ def _build_run_data(self):
576578
for o in run.orders:
577579
o_dt = getattr(o, 'created_at', None)
578580
u_dt = getattr(o, 'updated_at', None)
581+
o_fee = getattr(o, 'order_fee', None)
582+
if o_fee is None:
583+
o_fee = getattr(o, 'fee', 0)
584+
o_fee = o_fee or 0
585+
o_fee_rate = getattr(
586+
o, 'order_fee_rate', 0
587+
) or 0
579588
orders_list.append({
580589
'sym': getattr(o, 'target_symbol', '')
581590
or '',
@@ -598,6 +607,10 @@ def _build_run_data(self):
598607
(getattr(o, 'amount', 0) or 0)
599608
* (getattr(o, 'price', 0) or 0), 2
600609
),
610+
'fee': round(float(o_fee), 4),
611+
'fee_rate': round(
612+
float(o_fee_rate), 4
613+
),
601614
'created': _fmt_date(o_dt)
602615
if o_dt else '',
603616
'updated': _fmt_date(u_dt)

investing_algorithm_framework/app/reporting/templates/dashboard.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6058,6 +6058,7 @@ var tradesHeaders = [
60586058
{key: 'open_price', label: 'Open Price', align: 'right'},
60596059
{key: 'close_price', label: 'Close Price', align: 'right'},
60606060
{key: 'cost', label: 'Cost', align: 'right'},
6061+
{key: 'total_fees', label: 'Fees', align: 'right'},
60616062
{key: 'net_gain', label: 'Net Gain', align: 'right', colorFn: function(r) { return r.net_gain >= 0 ? 'var(--green)' : 'var(--red)'; }},
60626063
{key: 'pct', label: 'Return %', align: 'right', colorFn: function(r) { return r.pct >= 0 ? 'var(--green)' : 'var(--red)'; }},
60636064
];
@@ -6071,6 +6072,8 @@ var ordersHeaders = [
60716072
{key: 'amount', label: 'Amount', align: 'right'},
60726073
{key: 'filled', label: 'Filled', align: 'right'},
60736074
{key: 'cost', label: 'Cost', align: 'right'},
6075+
{key: 'fee', label: 'Fee', align: 'right'},
6076+
{key: 'fee_rate', label: 'Fee Rate', align: 'right'},
60746077
{key: 'created', label: 'Created'},
60756078
{key: 'updated', label: 'Updated'},
60766079
];

0 commit comments

Comments
 (0)