{{if .UseDarkTheme}} {{else}} {{end}} {{- /*gotype: github.com/thrasher-corp/gocryptotrader/backtester/report.Data*/ -}}

Results for {{.Statistics.StrategyName}} {{.Config.Nickname }}

Executive Summary

Goal

{{.Config.Goal}}

Strategy Description

{{.Statistics.StrategyDescription}}

{{ if or .Config.DataSettings.APIData .Config.DataSettings.DatabaseData }} {{ if .Config.DataSettings.APIData}} {{end}} {{ if .Config.DataSettings.DatabaseData}} {{if .Statistics.WasAnyDataMissing}} {{end}} {{end}}
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}}
{{ end }} {{ if or .Config.DataSettings.CSVData .Config.DataSettings.LiveData }}
Interval {{.Config.DataSettings.Interval}}
{{ end }} {{if $.Config.StrategySettings.UseExchangeLevelFunding}}
Funding results
{{ range .Statistics.Funding.Items}} {{if .ShowInfinite}} {{ else }} {{ end }} {{end}}
Exchange Asset Currency Initial Funds Initial Fund in USD Final Funds Final Funds in USD Difference
{{.Exchange}} {{.Asset}} {{.Currency}} {{.InitialFunds}} {{.Currency}} ${{.InitialFundsUSD}} {{.FinalFunds}} {{.Currency}} ${{.FinalFundsUSD}}∞%{{ .Difference}}%
Totals
Initial Total Funds in USD ${{ .Statistics.Funding.InitialTotalUSD}}
Final Total Funds in USD ${{ .Statistics.Funding.FinalTotalUSD}}
Difference {{ .Statistics.Funding.Difference}}%
Pair market movement
{{ range $exchange, $unused := .Statistics.ExchangeAssetPairStatistics}} {{ range $asset, $unused := .}} {{ range $pair, $unused := .}} {{end}} {{end}} {{end}}
Exchange Asset Currency Market Movement
{{ $exchange}} {{ $asset}} {{ $pair}} {{ .MarketMovement}}%
{{else}} {{ range $exchange, $unused := .Statistics.ExchangeAssetPairStatistics}} {{ range $asset, $unused := .}} {{ range $pair, $unused := .}} {{end}} {{end}} {{end}}
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
{{ $exchange}} {{ $asset}} {{ $pair}} {{ .InitialHoldings.BaseInitialFunds }} {{.FinalHoldings.Pair.Base}} {{ .InitialHoldings.QuoteInitialFunds }} {{.FinalHoldings.Pair.Quote}} {{ .InitialHoldings.TotalInitialValue }} {{.FinalHoldings.Pair.Quote}} {{ .FinalHoldings.BaseSize }} {{ .FinalHoldings.Pair.Base}} {{ .FinalHoldings.QuoteSize }} {{ .FinalHoldings.Pair.Quote}} {{ .FinalHoldings.TotalValue }} {{ .FinalHoldings.Pair.Quote}} {{ .IsStrategyProfitable }} {{ .DoesPerformanceBeatTheMarket }} {{ .StrategyMovement }}% {{ .MarketMovement}}%
Totals
Initial Total Funds in USD ${{ .Statistics.Funding.InitialTotalUSD}}
Final Total Funds in USD ${{ .Statistics.Funding.FinalTotalUSD}}
Difference {{ .Statistics.Funding.Difference}}%
{{end}}

Config

Strategy Settings

Strategy name {{.Config.StrategySettings.Name}}
Is multi currency {{.Config.StrategySettings.SimultaneousSignalProcessing}}
Custom settings {{.Config.StrategySettings.CustomSettings}}

Currency Settings

{{ range .Config.CurrencySettings}} {{end}}
Exchange Name Asset Currency Base Currency Quote 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}} {{.BuySide.MinimumSize}} {{.Base}} {{.BuySide.MaximumSize}} {{.Base}} {{.BuySide.MaximumTotal}} {{.Quote}} {{.SellSide.MinimumSize}} {{.Base}} {{.SellSide.MaximumSize}} {{.Base}} {{.SellSide.MaximumTotal}} {{.Quote}} {{.MinimumSlippagePercent}}% {{.MaximumSlippagePercent}}% {{.TakerFee}} {{.MaximumHoldingsRatio}}

Funding Settings

{{ range .Statistics.Funding.Items}} {{end}}
Exchange Name Asset Currency Paired With Initial Funds Transfer Fee
{{.Exchange}} {{.Asset}} {{.Currency}} {{.PairedWith}} {{ .InitialFunds}} {{ .TransferFee}}

Portfolio Settings

Can Use Leverage Max Leverage Rate Max Orders With Leverage Ratio Buy side Min Amount Buy side Max Amount Buy side Max Total Sell side Min Amount Sell side Max Amount Sell side Max Total
{{.Config.PortfolioSettings.Leverage.CanUseLeverage}} {{.Config.PortfolioSettings.Leverage.MaximumLeverageRate}} {{.Config.PortfolioSettings.Leverage.MaximumOrdersWithLeverageRatio}} {{.Config.PortfolioSettings.BuySide.MinimumSize}} {{.Config.PortfolioSettings.BuySide.MaximumSize}} {{ .Config.PortfolioSettings.BuySide.MaximumTotal}} {{.Config.PortfolioSettings.SellSide.MinimumSize}} {{.Config.PortfolioSettings.SellSide.MaximumSize}} {{ .Config.PortfolioSettings.SellSide.MaximumTotal}}

Statistics Settings

Risk-Free Rate
{{.Config.StatisticSettings.RiskFreeRate}}

Warnings

{{ range .Config.CurrencySettings}} {{if .ShowExchangeOrderLimitWarning}} {{end}} {{end}} {{ range .Warnings}} {{end}}
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}}

Charts

{{ range .EnhancedCandles}} {{ if .IsOverLimit}}

Note: Number of candles processed is higher than chart can render. Only showing the first 1,100

{{end}}

{{.Exchange}} {{.Asset}} {{.Pair}}

{{end}}

Statistics

{{ if .Statistics.BiggestDrawdown}} {{end}} {{ if .Statistics.BestMarketMovement}} {{end}} {{ if .Statistics.BestStrategyResults}} {{ end}}
Strategy Name {{.Statistics.StrategyName}}
Risk Free Rate {{.Statistics.RiskFreeRate}}%
Total Buy Orders {{.Statistics.TotalBuyOrders}}
Total Sell Orders {{.Statistics.TotalSellOrders}}
Total Orders {{.Statistics.TotalOrders}}
Biggest Drawdown Start: {{.Statistics.BiggestDrawdown.MaxDrawdown.Highest.Time }} End: {{.Statistics.BiggestDrawdown.MaxDrawdown.Lowest.Time }} Drop: {{.Statistics.BiggestDrawdown.MaxDrawdown.DrawdownPercent}}%
Best performing market movement {{.Statistics.BestMarketMovement.Exchange }} {{.Statistics.BestMarketMovement.Asset}} {{.Statistics.BestMarketMovement.Pair}} {{.Statistics.BestMarketMovement.MarketMovement}}%
Best performing strategy movement {{.Statistics.BestStrategyResults.Exchange }} {{.Statistics.BestStrategyResults.Asset}} {{.Statistics.BestStrategyResults.Pair}} {{.Statistics.BestStrategyResults.StrategyMovement}}%
{{ range $exchange, $unused := .Statistics.ExchangeAssetPairStatistics}} {{ range $asset, $unused := .}} {{ range $pair, $val := .}}

Statistics for {{$exchange}} {{ $asset}} {{ $pair}}

{{if $.Config.StrategySettings.UseExchangeLevelFunding}} {{end}} {{ if $val.MaxDrawdown.Highest.Price.IsZero }} {{else}} {{ end }}
Base Initial Funds {{ $val.FinalHoldings.BaseInitialFunds}} {{$val.FinalHoldings.Pair.Base}}
Quote Initial Funds {{ $val.FinalHoldings.QuoteInitialFunds}} {{$val.FinalHoldings.Pair.Quote}}
Buy Orders {{$val.BuyOrders}}
Buy Value {{ $val.FinalHoldings.BoughtValue}} {{$val.FinalHoldings.Pair.Quote}}
Buy Amount {{ $val.FinalHoldings.BoughtAmount}} {{$val.FinalHoldings.Pair.Base}}
Sell Orders {{$val.SellOrders}}
Sell Value {{ $val.FinalHoldings.SoldValue}} {{$val.FinalHoldings.Pair.Quote}}
Sell Amount {{ $val.FinalHoldings.SoldAmount}} {{$val.FinalHoldings.Pair.Base}}
Total Orders {{$val.TotalOrders}}
Biggest Drawdown Start: {{ $val.MaxDrawdown.Highest.Time }} End: {{ $val.MaxDrawdown.Lowest.Time }} Drop: {{printf "%.8v" $val.MaxDrawdown.DrawdownPercent}}%
Starting Close Price {{ $val.StartingClosePrice}} {{$val.FinalHoldings.Pair.Quote}}
Ending Close Price {{ $val.EndingClosePrice}} {{ $val.FinalHoldings.Pair.Quote }}
Lowest Close Price {{ $val.LowestClosePrice}} {{$val.FinalHoldings.Pair.Quote}}
Highest Close Price {{ $val.HighestClosePrice}} {{ $val.FinalHoldings.Pair.Quote}}
Highest Committed Funds {{ $val.HighestCommittedFunds.Value}} at {{ $val.HighestCommittedFunds.Time}}
Market Movement {{ $val.MarketMovement}}%
Strategy Movement {{ $val.StrategyMovement}}%
Did it beat the market? {{ .DoesPerformanceBeatTheMarket }}
Total Value Lost to Volume Sizing {{ $val.FinalHoldings.TotalValueLostToVolumeSizing}} {{$val.FinalHoldings.Pair.Quote}}
Total Value Lost to Slippage {{ $val.FinalHoldings.TotalValueLostToSlippage}} {{ $val.FinalHoldings.Pair.Quote }}
Total Value Lost {{ $val.FinalHoldings.TotalValueLost}} {{$val.FinalHoldings.Pair.Quote}}
Total Fees {{ $val.FinalHoldings.TotalFees}} {{ $val.FinalHoldings.Pair.Quote }}
Final Funds {{ $val.FinalHoldings.QuoteSize}} {{ $val.FinalHoldings.Pair.Quote}}
Final Holdings {{ $val.FinalHoldings.BaseSize}} {{$val.FinalHoldings.Pair.Base}}
Final Holdings Value {{ $val.FinalHoldings.BaseValue}} {{ $val.FinalHoldings.Pair.Quote }}
Total Value {{ $val.FinalHoldings.TotalValue}} {{ $val.FinalHoldings.Pair.Quote}}
Rates
Risk Free Rate {{$val.RiskFreeRate}}%
Compound Annual Growth Rate {{$val.CompoundAnnualGrowthRate}}%
{{if $val.ShowMissingDataWarning}}

Missing data was detected during this backtesting run
Ratio calculations will be skewed

{{end}} Arithmetic Ratios
Sharpe Ratio {{$val.ArithmeticRatios.SharpeRatio}}
Sortino Ratio {{$val.ArithmeticRatios.SortinoRatio}}
Information Ratio {{$val.ArithmeticRatios.InformationRatio}}
Calmar Ratio {{$val.ArithmeticRatios.CalmarRatio}}
Geometric Ratios
Sharpe Ratio {{$val.GeometricRatios.SharpeRatio}}
Sortino Ratio {{$val.GeometricRatios.SortinoRatio}}
Information Ratio {{$val.GeometricRatios.InformationRatio}}
Calmar Ratio {{$val.GeometricRatios.CalmarRatio}}
{{end}} {{end}} {{end}}

Orders

{{ range $exchange, $unused := .Statistics.ExchangeAssetPairStatistics}} {{ range $asset, $unused := .}} {{ range $pair, $val := .}}

{{$exchange}} {{$asset}} {{ $pair }}

{{range $val.FinalOrders.Orders}} {{end}}
Date Close Price Side Price Amount Fee Total Slippage Rate
{{ .Detail.Date }} {{ .ClosePrice}} {{$pair.Quote}} {{ .Detail.Side }} {{ .Detail.Price }} {{$pair.Quote}} {{ .Detail.Amount }} {{$pair.Base}} {{.Detail.Fee }} {{$pair.Quote}} {{ .CostBasis }} {{$pair.Quote}} {{ .SlippageRate }}%
{{end}} {{end}} {{end}}

Events

{{ range $exchange, $unused := .Statistics.ExchangeAssetPairStatistics}} {{ range $asset, $unused :=.}} {{ range $pair, $data := .}}

{{$exchange}} {{$asset}} {{ $pair }}

{{range $ev := $data.Events}} {{ if ne $ev.FillEvent nil }} {{ else if ne $ev.SignalEvent nil}} {{ end }} {{end}}
Date Price Action Why {{$pair.Base}} Funds {{$pair.Quote}} Funds Total Value
{{$ev.FillEvent.GetTime}} {{$ev.FillEvent.GetClosePrice}} {{$pair.Quote}} {{$ev.FillEvent.GetDirection}} {{$ev.FillEvent.GetReason}}{{$ev.SignalEvent.GetTime}} {{ $ev.SignalEvent.GetPrice}} {{$pair.Quote}} {{$ev.SignalEvent.GetDirection}} {{$ev.SignalEvent.GetReason}}{{ $ev.Holdings.BaseSize}} {{$pair.Base}} {{ $ev.Holdings.QuoteSize}} {{$pair.Quote}} {{ $ev.Holdings.TotalValue}} {{$pair.Quote}}
{{end}} {{end}} {{end}}