From 5384df39a38c366246bf62c569dad71e607c24b0 Mon Sep 17 00:00:00 2001 From: Aidan Bailey <45186175+aidan-bailey@users.noreply.github.com> Date: Thu, 10 Jul 2025 04:40:28 +0200 Subject: [PATCH] backtester: fix report template generation when using exchange level funding (#1963) * backtester: fix report template failing to iterate ExchangePairStatistics correctly when using exchange level funding * chore: refactor mapKey var name to key --- backtester/report/tpl.gohtml | 78 +++++++++++++++++------------------- 1 file changed, 36 insertions(+), 42 deletions(-) diff --git a/backtester/report/tpl.gohtml b/backtester/report/tpl.gohtml index e76b3cad..558d9ace 100644 --- a/backtester/report/tpl.gohtml +++ b/backtester/report/tpl.gohtml @@ -292,20 +292,14 @@ - {{ range $exchange, $unused := .Statistics.ExchangeAssetPairStatistics}} - {{ range $asset, $unused := .}} - {{ range $base, $unused := .}} - {{ range $quote, $unused := .}} - - {{ $exchange}} - {{ $asset}} - {{ $base}}-{{$quote}} - {{ $.Prettify.Decimal8 .MarketMovement}}% - - {{end}} - {{end}} - {{end}} - {{end}} + {{ range $key, $stats := .Statistics.ExchangeAssetPairStatistics }} + + {{ $key.Exchange }} + {{ $key.Asset }} + {{ $key.Base }}-{{ $key.Quote }} + {{ $.Prettify.Decimal8 $stats.MarketMovement }}% + + {{ end }} {{else}} @@ -329,11 +323,11 @@ - {{ range $mapKey, $stats := .Statistics.ExchangeAssetPairStatistics}} + {{ range $key, $stats := .Statistics.ExchangeAssetPairStatistics}} - {{ $mapKey.Exchange}} - {{ $mapKey.Asset}} - {{ $mapKey.Base.Currency}}-{{$mapKey.Quote.Currency}} + {{ $key.Exchange}} + {{ $key.Asset}} + {{ $key.Base.Currency}}-{{$key.Quote.Currency}} {{ $.Prettify.Decimal8 $stats.InitialHoldings.BaseInitialFunds }} {{$stats.FinalHoldings.Pair.Base}} {{ $.Prettify.Decimal8 $stats.InitialHoldings.QuoteInitialFunds }} {{$stats.FinalHoldings.Pair.Quote}} {{ $.Prettify.Decimal8 $stats.InitialHoldings.TotalInitialValue }} {{$stats.FinalHoldings.Pair.Quote}} @@ -1223,11 +1217,11 @@ - {{ range $mapKey, $stats := .Statistics.ExchangeAssetPairStatistics}} + {{ range $key, $stats := .Statistics.ExchangeAssetPairStatistics}}
-

Pair Statistics for {{$mapKey.Exchange}} {{ $mapKey.Asset}} {{ $mapKey.Base.Currency}}-{{$mapKey.Quote.Currency}}

+

Pair Statistics for {{$key.Exchange}} {{ $key.Asset}} {{ $key.Base.Currency}}-{{$key.Quote.Currency}}

@@ -1658,9 +1652,9 @@

Orders

- {{ range $mapKey, $val := .Statistics.ExchangeAssetPairStatistics}} + {{ range $key, $val := .Statistics.ExchangeAssetPairStatistics}}
-

{{$mapKey.Exchange}} {{$mapKey.Asset}} {{ $mapKey.Base }}-{{$mapKey.Quote}}

+

{{$key.Exchange}} {{$key.Asset}} {{ $key.Base }}-{{$key.Quote}}

@@ -1678,11 +1672,11 @@ {{range $val.FinalOrders.Orders}} - + - - - + + + @@ -1699,9 +1693,9 @@

Events

- {{ range $mapKey, $val := .Statistics.ExchangeAssetPairStatistics}} + {{ range $key, $val := .Statistics.ExchangeAssetPairStatistics}}
-

{{$mapKey.Exchange}} {{$mapKey.Asset}} {{ $mapKey.Base }}-{{$mapKey.Quote}}

+

{{$key.Exchange}} {{$key.Asset}} {{ $key.Base }}-{{$key.Quote}}

{{ .Order.Date }}{{ $.Prettify.Decimal8 .ClosePrice}} {{$mapKey.Quote}}{{ $.Prettify.Decimal8 .ClosePrice}} {{$key.Quote}} {{ .Order.Side }}{{$.Prettify.Float8 .Order.Price }} {{$mapKey.Quote}}{{$.Prettify.Float8 .Order.Amount }} {{$mapKey.Base}}{{$.Prettify.Float8 .Order.Fee }} {{$mapKey.Quote}}{{$.Prettify.Float8 .Order.Price }} {{$key.Quote}}{{$.Prettify.Float8 .Order.Amount }} {{$key.Base}}{{$.Prettify.Float8 .Order.Fee }} {{$key.Quote}} {{ $.Prettify.Decimal8 .CostBasis }} {{.Order.FeeAsset}} {{ $.Prettify.Decimal8 .SlippageRate }}%
@@ -1710,16 +1704,16 @@ - {{if $mapKey.Asset.IsFutures}} + {{if $key.Asset.IsFutures}} {{ else }} - - - - + + + + {{ end }} @@ -1728,7 +1722,7 @@ {{ if ne $ev.FillEvent nil }} - + {{ else if ne $ev.SignalEvent nil}} - + {{ end }} - {{if $mapKey.Asset.IsFutures}} + {{if $key.Asset.IsFutures}} {{if ne $ev.PNL nil }} - + {{else}} - + {{end}} {{else }} - - - - + + + + {{end}} {{end}}
Price Action Event DetailsHoldings Position Direction Unrealised PNL Realised PNL{{$mapKey.Base}} Funds{{$mapKey.Quote}} FundsTotal value in {{$mapKey.Quote}}Committed funds in {{$mapKey.Quote}}{{$key.Base}} Funds{{$key.Quote}} FundsTotal value in {{$key.Quote}}Committed funds in {{$key.Quote}}
{{$ev.FillEvent.GetTime}}{{ $.Prettify.Decimal8 $ev.FillEvent.GetClosePrice}} {{if $mapKey.Asset.IsFutures}}{{if ne $ev.PNL nil }}{{$ev.PNL.GetCollateralCurrency}}{{end}}{{else}}{{$mapKey.Quote}}{{end}}{{ $.Prettify.Decimal8 $ev.FillEvent.GetClosePrice}} {{if $key.Asset.IsFutures}}{{if ne $ev.PNL nil }}{{$ev.PNL.GetCollateralCurrency}}{{end}}{{else}}{{$key.Quote}}{{end}} {{$ev.FillEvent.GetDirection}}
    @@ -1739,7 +1733,7 @@
{{$ev.SignalEvent.GetTime}}{{ $.Prettify.Decimal8 $ev.SignalEvent.GetClosePrice}} {{if $mapKey.Asset.IsFutures}}{{if ne $ev.PNL nil }}{{$ev.PNL.GetCollateralCurrency}}{{end}}{{else}}{{$mapKey.Quote}}{{end}}{{ $.Prettify.Decimal8 $ev.SignalEvent.GetClosePrice}} {{if $key.Asset.IsFutures}}{{if ne $ev.PNL nil }}{{$ev.PNL.GetCollateralCurrency}}{{end}}{{else}}{{$key.Quote}}{{end}} {{$ev.SignalEvent.GetDirection}}
    @@ -1749,23 +1743,23 @@
{{ $.Prettify.Decimal8 $ev.PNL.GetExposure}} {{$mapKey.Base}}-{{$mapKey.Quote}}{{ $.Prettify.Decimal8 $ev.PNL.GetExposure}} {{$key.Base}}-{{$key.Quote}} {{$ev.PNL.GetDirection}} {{$.Prettify.Decimal8 $ev.PNL.GetUnrealisedPNL.PNL}} {{if ne $ev.PNL nil }}{{$ev.PNL.GetCollateralCurrency}}{{end}} {{$.Prettify.Decimal8 $ev.PNL.GetRealisedPNL.PNL}} {{if ne $ev.PNL nil }}{{$ev.PNL.GetCollateralCurrency}}{{end}}0 {{$mapKey.Base}}-{{$mapKey.Quote}}0 {{$key.Base}}-{{$key.Quote}} N/A 0 0{{ $.Prettify.Decimal8 $ev.Holdings.BaseSize}} {{$mapKey.Base}}{{ $.Prettify.Decimal8 $ev.Holdings.QuoteSize}} {{$mapKey.Quote}}{{ $.Prettify.Decimal8 $ev.Holdings.TotalValue}} {{$mapKey.Quote}}{{ $.Prettify.Decimal8 $ev.Holdings.CommittedFunds}} {{$mapKey.Quote}}{{ $.Prettify.Decimal8 $ev.Holdings.BaseSize}} {{$key.Base}}{{ $.Prettify.Decimal8 $ev.Holdings.QuoteSize}} {{$key.Quote}}{{ $.Prettify.Decimal8 $ev.Holdings.TotalValue}} {{$key.Quote}}{{ $.Prettify.Decimal8 $ev.Holdings.CommittedFunds}} {{$key.Quote}}