{{if .UseDarkTheme}} {{else}} {{end}}
{{- /*gotype: github.com/thrasher-corp/gocryptotrader/backtester/report.Data*/ -}}{{.Config.Goal}}
{{.Statistics.StrategyDescription}}
{{ if or .Config.DataSettings.APIData .Config.DataSettings.DatabaseData }}| Start Date | {{.Config.DataSettings.APIData.StartDate}} |
| End Date | {{.Config.DataSettings.APIData.EndDate}} |
| Interval | {{.Config.DataSettings.Interval}} |
| Start Date | {{.Config.DataSettings.DatabaseData.StartDate}} |
| End Date | {{.Config.DataSettings.DatabaseData.EndDate}} |
| Interval | {{.Config.DataSettings.Interval}} |
| Was any data missing? | {{ .Statistics.WasAnyDataMissing}} |
| Interval | {{.Config.DataSettings.Interval}} |
| Exchange | Asset | Currency | Initial Funds | Final Funds | {{ if eq .Config.StrategySettings.DisableUSDTracking false }}Initial Fund in USD | Final Funds in USD | {{end}}Difference | |
|---|---|---|---|---|---|---|---|---|
| {{.Exchange}} | {{.Asset}} | {{.Currency}} | {{ $.Prettify.Decimal8 .InitialFunds}} {{.Currency}} | {{ $.Prettify.Decimal8 .FinalFunds }} {{.Currency}} | {{ if eq $.Config.StrategySettings.DisableUSDTracking false }}${{ $.Prettify.Decimal2 .USDInitialFunds}} | ${{ $.Prettify.Decimal2 .USDFinalFunds}} | {{ end }} {{if .ShowInfinite}}Infinity% | {{ else }}{{ .Difference}}% | {{ end }}
| Exchange | Asset | Currency | Initial Collateral | Final Collateral | Difference | |
|---|---|---|---|---|---|---|
| {{.Exchange}} | {{.Asset}} | {{.Currency}} | {{ $.Prettify.Decimal8 .InitialFunds }} {{.Currency}} | {{ $.Prettify.Decimal8 .FinalFunds }} {{.Currency}} | {{if .ShowInfinite}}Infinity% | {{ else }}{{ .Difference}}% | {{ end }}
| Exchange | Asset | Currency | Market Movement |
|---|---|---|---|
| {{ $key.Exchange }} | {{ $key.Asset }} | {{ $key.Base }}-{{ $key.Quote }} | {{ $.Prettify.Decimal8 $stats.MarketMovement }}% |
| Exchange | Asset | Currency | Initial Base funds | Initial Quote funds | Initial Total value | Resulting Base funds | Resulting Quote funds | Resulting Total value | Did it make profit? | Did it beat the market? | Strategy Movement | Market Movement |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| {{ $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}} | {{ $.Prettify.Decimal8 $stats.FinalHoldings.BaseSize }} {{ $stats.FinalHoldings.Pair.Base}} | {{ $.Prettify.Decimal8 $stats.FinalHoldings.QuoteSize }} {{ $stats.FinalHoldings.Pair.Quote}} | {{ $.Prettify.Decimal8 $stats.FinalHoldings.TotalValue }} {{ $stats.FinalHoldings.Pair.Quote}} | {{ $stats.IsStrategyProfitable }} | {{ $stats.DoesPerformanceBeatTheMarket }} | {{ $.Prettify.Decimal8 $stats.StrategyMovement }}% | {{ $.Prettify.Decimal8 $stats.MarketMovement}}% |
| Initial Total Funds in USD | ${{ $.Prettify.Decimal2 .Statistics.FundingStatistics.Report.InitialFunds}} |
| Final Total Funds in USD | ${{ $.Prettify.Decimal2 .Statistics.FundingStatistics.Report.FinalFunds}} |
| Difference | {{ $.Prettify.Decimal8 .Statistics.FundingStatistics.TotalUSDStatistics.HoldingValueDifference}}% |
| Strategy name | Is multi currency | Custom settings |
|---|---|---|
| {{.Config.StrategySettings.Name}} | {{.Config.StrategySettings.SimultaneousSignalProcessing}} | {{.Config.StrategySettings.CustomSettings}} |
| Exchange Name | Asset | Currency | Buy side Min Amount | Buy side Max Amount | Buy side Max Total | Sell side Min Amount | Sell side Max Amount | Sell side Max Total | Min Slippage Percent | Max Slippage Percent | Taker Fee | Maximum Holdings Ratio |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| {{.ExchangeName}} | {{.Asset}} | {{.Base}}-{{.Quote}} | {{ $.Prettify.Decimal64 .BuySide.MinimumSize}} {{if .Asset.IsFutures}} {{.Base}}-{{.Quote}} {{else}}{{.Base}} {{end}} | {{ $.Prettify.Decimal64 .BuySide.MaximumSize}} {{if .Asset.IsFutures}} {{.Base}}-{{.Quote}} {{else}}{{.Base}} {{end}} | {{ $.Prettify.Decimal64 .BuySide.MaximumTotal}} {{if .Asset.IsFutures}}{{else}}{{.Quote}} {{end}} | {{ $.Prettify.Decimal64 .SellSide.MinimumSize}} {{if .Asset.IsFutures}} {{.Base}}-{{.Quote}} {{else}}{{.Base}} {{end}} | {{ $.Prettify.Decimal64 .SellSide.MaximumSize}} {{if .Asset.IsFutures}} {{.Base}}-{{.Quote}} {{else}}{{.Base}} {{end}} | {{ $.Prettify.Decimal64 .SellSide.MaximumTotal}} {{if .Asset.IsFutures}}{{else}}{{.Quote}} {{end}} | {{ $.Prettify.Decimal64 .MinimumSlippagePercent}}% | {{ $.Prettify.Decimal64 .MaximumSlippagePercent}}% | {{.TakerFee}} | {{.MaximumHoldingsRatio}} |
| Exchange Name | Asset | Currency | Paired With | Initial Funds | Final Funds | Transfer Fee | Is Collateral |
|---|---|---|---|---|---|---|---|
| {{.Exchange}} | {{.Asset}} | {{.Currency}} | {{.PairedWith}} | {{ $.Prettify.Decimal8 .InitialFunds}} {{.Currency}} | {{ $.Prettify.Decimal8 .FinalFunds}} {{.Currency}} | {{ $.Prettify.Decimal64 .TransferFee}} | {{ .IsCollateral }} |
| Buy side Min Amount | Buy side Max Amount | Buy side Max Total | Sell side Min Amount | Sell side Max Amount | Sell side Max Total |
|---|---|---|---|---|---|
| {{ $.Prettify.Decimal64 .Config.PortfolioSettings.BuySide.MinimumSize}} | {{ $.Prettify.Decimal64 .Config.PortfolioSettings.BuySide.MaximumSize}} | {{ $.Prettify.Decimal64 .Config.PortfolioSettings.BuySide.MaximumTotal}} | {{ $.Prettify.Decimal64 .Config.PortfolioSettings.SellSide.MinimumSize}} | {{ $.Prettify.Decimal64 .Config.PortfolioSettings.SellSide.MaximumSize}} | {{ $.Prettify.Decimal64 .Config.PortfolioSettings.SellSide.MaximumTotal}} |
| Risk-Free Rate |
|---|
| {{ .Config.StatisticSettings.RiskFreeRate}} |
| Exchange Name | Asset | Currency Base | Currency Quote | Warning |
|---|---|---|---|---|
| {{.ExchangeName}} | {{.Asset}} | {{.Base}} | {{.Quote}} | order execution limits supported but disabled, live results may differ |
| {{.Exchange}} | {{.Asset}} | {{.Pair.Base}} | {{.Pair.Quote}} | {{.Message}} |
| Strategy Name | {{.Statistics.StrategyName}} |
| Risk Free Rate | {{.Statistics.RiskFreeRate}}% |
| Total Buy Orders | {{ $.Prettify.Int .Statistics.TotalBuyOrders}} |
| Total Sell Orders | {{$.Prettify.Int .Statistics.TotalSellOrders}} |
| Total Long Orders | {{ $.Prettify.Int .Statistics.TotalLongOrders}} |
| Total Short Orders | {{ $.Prettify.Int .Statistics.TotalShortOrders}} |
| Total Orders | {{$.Prettify.Int .Statistics.TotalOrders}} |
| Biggest Drawdown | Start: {{.Statistics.BiggestDrawdown.MaxDrawdown.Highest.Time }} End: {{.Statistics.BiggestDrawdown.MaxDrawdown.Lowest.Time }} Drop: {{ $.Prettify.Decimal2 .Statistics.BiggestDrawdown.MaxDrawdown.DrawdownPercent}}% |
| Best performing market movement | {{.Statistics.BestMarketMovement.Exchange }} {{.Statistics.BestMarketMovement.Asset}} {{.Statistics.BestMarketMovement.Pair}} {{ $.Prettify.Decimal2 .Statistics.BestMarketMovement.MarketMovement}}% |
| Best performing strategy movement | {{.Statistics.BestStrategyResults.Exchange }} {{.Statistics.BestStrategyResults.Asset}} {{.Statistics.BestStrategyResults.Pair}} {{ $.Prettify.Decimal2 .Statistics.BestStrategyResults.StrategyMovement}}% |
| Long Orders | {{ $.Prettify.Int $stats.BuyOrders}} |
| Short Orders | {{ $.Prettify.Int $stats.SellOrders}} |
| Lowest Unrealised PNL | {{ $.Prettify.Decimal8 $stats.LowestUnrealisedPNL.Value}} at {{ $stats.LowestUnrealisedPNL.Time}} |
| Highest Unrealised PNL | {{ $.Prettify.Decimal8 $stats.HighestUnrealisedPNL.Value}} at {{ $stats.HighestUnrealisedPNL.Time}} |
| Lowest Realised PNL | {{ $.Prettify.Decimal8 $stats.LowestRealisedPNL.Value}} at {{ $stats.LowestRealisedPNL.Time}} |
| Highest Realised PNL | {{ $.Prettify.Decimal8 $stats.HighestRealisedPNL.Value}} at {{ $stats.HighestRealisedPNL.Time}} |
| Base Initial Funds | {{ $.Prettify.Decimal8 $stats.FinalHoldings.BaseInitialFunds}} {{$stats.FinalHoldings.Pair.Base}} |
| Quote Initial Funds | {{ $.Prettify.Decimal8 $stats.FinalHoldings.QuoteInitialFunds}} {{$stats.FinalHoldings.Pair.Quote}} |
| Buy Orders | {{ $.Prettify.Int $stats.BuyOrders}} |
| Buy Amount | {{ $.Prettify.Decimal8 $stats.FinalHoldings.BoughtAmount}} {{$stats.FinalHoldings.Pair.Base}} |
| Sell Orders | {{ $.Prettify.Int $stats.SellOrders}} |
| Sell Amount | {{ $.Prettify.Decimal8 $stats.FinalHoldings.SoldAmount}} {{$stats.FinalHoldings.Pair.Base}} |
| Total Orders | {{ $.Prettify.Int $stats.TotalOrders}} |
| Biggest Drawdown | Start: {{ $stats.MaxDrawdown.Highest.Time }} End: {{ $stats.MaxDrawdown.Lowest.Time }} Drop: {{ $.Prettify.Decimal8 $stats.MaxDrawdown.DrawdownPercent}}% |
| Starting Close Price | {{ $.Prettify.Decimal8 $stats.StartingClosePrice.Value}} {{$stats.FinalHoldings.Pair.Quote}} |
| Ending Close Price | {{ $.Prettify.Decimal8 $stats.EndingClosePrice.Value}} {{ $stats.FinalHoldings.Pair.Quote }} |
| Lowest Close Price | {{ $.Prettify.Decimal8 $stats.LowestClosePrice.Value}} {{$stats.FinalHoldings.Pair.Quote}} |
| Highest Close Price | {{ $.Prettify.Decimal8 $stats.HighestClosePrice.Value}} {{ $stats.FinalHoldings.Pair.Quote}} |
| Highest Committed Funds | {{ $.Prettify.Decimal8 $stats.HighestCommittedFunds.Value}} at {{ $stats.HighestCommittedFunds.Time}} |
| Market Movement | {{ $.Prettify.Decimal8 $stats.MarketMovement}}% |
| Strategy Movement | {{ $.Prettify.Decimal8 $stats.StrategyMovement}}% |
| Did it beat the market? | {{ .DoesPerformanceBeatTheMarket }} |
| Final Holdings Value | {{ $.Prettify.Decimal8 $stats.FinalHoldings.BaseValue}} {{ $stats.FinalHoldings.Pair.Quote }} |
| Total Value | {{ $.Prettify.Decimal8 $stats.FinalHoldings.TotalValue}} {{ $stats.FinalHoldings.Pair.Quote}} |
| Total Value Lost to Volume Sizing | {{ $.Prettify.Decimal8 $stats.FinalHoldings.TotalValueLostToVolumeSizing}} {{$stats.FinalHoldings.Pair.Quote}} |
| Total Value Lost to Slippage | {{ $.Prettify.Decimal8 $stats.FinalHoldings.TotalValueLostToSlippage}} {{ $stats.FinalHoldings.Pair.Quote }} |
| Total Value Lost | {{ $.Prettify.Decimal8 $stats.FinalHoldings.TotalValueLost}} {{$stats.FinalHoldings.Pair.Quote}} |
| Total Fees | {{ $.Prettify.Decimal8 $stats.FinalHoldings.TotalFees}} {{ $stats.FinalHoldings.Pair.Quote }} |
| Final Funds | {{ $.Prettify.Decimal8 $stats.FinalHoldings.QuoteSize}} {{ $stats.FinalHoldings.Pair.Quote}} |
| Final Holdings | {{ $.Prettify.Decimal8 $stats.FinalHoldings.BaseSize}} {{$stats.FinalHoldings.Pair.Base}} |
| Final Holdings Value | {{ $.Prettify.Decimal8 $stats.FinalHoldings.BaseValue}} {{ $stats.FinalHoldings.Pair.Quote }} |
| Total Value | {{ $.Prettify.Decimal8 $stats.FinalHoldings.TotalValue}} {{ $stats.FinalHoldings.Pair.Quote}} |
| Risk Free Rate | {{$.Statistics.RiskFreeRate}}% | |
| Compound Annual Growth Rate | {{ if $stats.CompoundAnnualGrowthRate.IsZero}}N/A | {{else}}{{ $.Prettify.Decimal8 $stats.CompoundAnnualGrowthRate}}% | {{end}}
| Sharpe Ratio | {{$stats.ArithmeticRatios.SharpeRatio}} |
| Sortino Ratio | {{$stats.ArithmeticRatios.SortinoRatio}} |
| Information Ratio | {{$stats.ArithmeticRatios.InformationRatio}} |
| Calmar Ratio | {{$stats.ArithmeticRatios.CalmarRatio}} |
| Sharpe Ratio | {{$stats.GeometricRatios.SharpeRatio}} |
| Sortino Ratio | {{$stats.GeometricRatios.SortinoRatio}} |
| Information Ratio | {{$stats.GeometricRatios.InformationRatio}} |
| Calmar Ratio | {{$stats.GeometricRatios.CalmarRatio}} |
| Initial Collateral | {{ $.Prettify.Decimal8 .ReportItem.InitialFunds}} | |
| Final Collateral | {{ $.Prettify.Decimal8 .ReportItem.FinalFunds}} | |
| Initial Funds | {{ $.Prettify.Decimal8 .ReportItem.InitialFunds}} | |
| Final Funds | {{ $.Prettify.Decimal8 .ReportItem.FinalFunds}} | |
| Difference | {{ if .ReportItem.ShowInfinite}}Infinity% | {{else}}{{ $.Prettify.Decimal8 .ReportItem.Difference}}% | {{end}}
| Starting Close Price | {{$.Prettify.Decimal8 .StartingClosePrice.Value}} at {{.StartingClosePrice.Time}} | |
| Ending Close Price | {{$.Prettify.Decimal8 .EndingClosePrice.Value}} at {{.EndingClosePrice.Time}} | |
| Highest Close Price | {{$.Prettify.Decimal8 .HighestClosePrice.Value}} at {{.HighestClosePrice.Time}} | |
| Lowest Close Price | {{$.Prettify.Decimal8 .LowestClosePrice.Value}} at {{.LowestClosePrice.Time}} | |
| Market Movement | {{$.Prettify.Decimal8 .MarketMovement}}% | |
| Did Strategy Beat The Market? | {{.DidStrategyBeatTheMarket}} | |
| Compound Annual Growth Rate | {{ if .CompoundAnnualGrowthRate.IsZero}}N/A | {{else}}{{$.Prettify.Decimal8 .CompoundAnnualGrowthRate}}% | {{end}}
| Initial Total USD Value | ${{$.Prettify.Decimal8 .Statistics.FundingStatistics.Report.InitialFunds}} | |
| Final Total USD Value | ${{$.Prettify.Decimal8 .Statistics.FundingStatistics.Report.FinalFunds}} | |
| Strategy movement | {{$.Prettify.Decimal8 .Statistics.FundingStatistics.TotalUSDStatistics.HoldingValueDifference}}% | |
| Risk Free Rate | {{$.Prettify.Decimal8 .Statistics.FundingStatistics.TotalUSDStatistics.RiskFreeRate}} | |
| Benchmark movement | {{$.Prettify.Decimal8 .Statistics.FundingStatistics.TotalUSDStatistics.BenchmarkMarketMovement}}% | |
| Did strategy beat the benchmark? | {{.Statistics.FundingStatistics.TotalUSDStatistics.DidStrategyBeatTheMarket}} | |
| Did overall strategy make a profit? | {{.Statistics.FundingStatistics.TotalUSDStatistics.DidStrategyMakeProfit}} | |
| Highest Holdings | ${{$.Prettify.Decimal8 .Statistics.FundingStatistics.TotalUSDStatistics.HighestHoldingValue.Value}} at {{.Statistics.FundingStatistics.TotalUSDStatistics.HighestHoldingValue.Time}} | |
| Lowest Holdings | ${{$.Prettify.Decimal8 .Statistics.FundingStatistics.TotalUSDStatistics.LowestHoldingValue.Value}} at {{.Statistics.FundingStatistics.TotalUSDStatistics.LowestHoldingValue.Time}} | |
| Max Drawdown | Start: {{ .Statistics.FundingStatistics.TotalUSDStatistics.MaxDrawdown.Highest.Time }} End: {{ .Statistics.FundingStatistics.TotalUSDStatistics.MaxDrawdown.Lowest.Time }} Drop: {{ $.Prettify.Decimal8 .Statistics.FundingStatistics.TotalUSDStatistics.MaxDrawdown.DrawdownPercent}}% | |
| Compound Annual Growth Rate | {{ if .Statistics.FundingStatistics.TotalUSDStatistics.CompoundAnnualGrowthRate.IsZero}}N/A | {{else}}{{$.Prettify.Decimal8 .Statistics.FundingStatistics.TotalUSDStatistics.CompoundAnnualGrowthRate}}% | {{end}}
| Sharpe Ratio | {{ .Statistics.FundingStatistics.TotalUSDStatistics.ArithmeticRatios.SharpeRatio}} |
| Sortino Ratio | {{ .Statistics.FundingStatistics.TotalUSDStatistics.ArithmeticRatios.SortinoRatio}} |
| Information Ratio | {{ .Statistics.FundingStatistics.TotalUSDStatistics.ArithmeticRatios.InformationRatio}} |
| Calmar Ratio | {{ .Statistics.FundingStatistics.TotalUSDStatistics.ArithmeticRatios.CalmarRatio}} |
| Sharpe Ratio | {{ .Statistics.FundingStatistics.TotalUSDStatistics.GeometricRatios.SharpeRatio}} |
| Sortino Ratio | {{ .Statistics.FundingStatistics.TotalUSDStatistics.GeometricRatios.SortinoRatio}} |
| Information Ratio | {{ .Statistics.FundingStatistics.TotalUSDStatistics.GeometricRatios.InformationRatio}} |
| Calmar Ratio | {{ .Statistics.FundingStatistics.TotalUSDStatistics.GeometricRatios.CalmarRatio}} |
| Date | Close Price | Side | Price | Amount | Fee | Total | Slippage Rate |
|---|---|---|---|---|---|---|---|
| {{ .Order.Date }} | {{ $.Prettify.Decimal8 .ClosePrice}} {{$key.Quote}} | {{ .Order.Side }} | {{$.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 }}% |
| Date | Price | Action | Event Details | {{if $key.Asset.IsFutures}}Holdings | Position Direction | Unrealised PNL | Realised PNL | {{ else }}{{$key.Base}} Funds | {{$key.Quote}} Funds | Total value in {{$key.Quote}} | Committed funds in {{$key.Quote}} | {{ end }}||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| {{$ev.FillEvent.GetTime}} | {{ $.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}} |
|
{{ else if ne $ev.SignalEvent nil}}
{{$ev.SignalEvent.GetTime}} | {{ $.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}} |
|
{{ end }}
{{if $key.Asset.IsFutures}}
{{if ne $ev.PNL nil }}
{{ $.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}} | {{else}}0 {{$key.Base}}-{{$key.Quote}} | N/A | 0 | 0 | {{end}} {{else }}{{ $.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}} | {{end}}