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

{{.Statistics.StrategyName}}

{{.Config.Nickname }}

Results

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 }} {{ range $exchange, $unused := .Statistics.ExchangeAssetPairStatistics}} {{ range $asset, $unused := .}} {{ range $pair, $unused := .}} {{end}} {{end}} {{end}}
Exchange Asset Currency Starting funds Resulting funds Did it make profit? Did it beat the market? Strategy Movement Market Movement
{{ $exchange}} {{ $asset}} {{ $pair}} ${{ printf "%.8f" .FinalHoldings.InitialFunds }} {{.FinalHoldings.Pair.Quote}} ${{ printf "%.8f" .FinalHoldings.TotalValue }} {{ .FinalHoldings.Pair.Quote}} {{ gt .FinalHoldings.TotalValue .FinalHoldings.InitialFunds }} {{ gt .StrategyMovement .MarketMovement }} {{ printf "%.2f" .StrategyMovement }}% {{ printf "%.2f" .MarketMovement }}%

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 Initial Funds 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}} {{ printf "$%.8f" .InitialFunds}} {{.Quote}} {{.BuySide.MinimumSize}} {{.Base}} {{.BuySide.MaximumSize}} {{.Base}} ${{printf "%.8f" .BuySide.MaximumTotal}} {{.Quote}} {{.SellSide.MinimumSize}} {{.Base}} {{.SellSide.MaximumSize}} {{.Base}} ${{printf "%.8f" .SellSide.MaximumTotal}} {{.Quote}} {{.MinimumSlippagePercent}}% {{.MaximumSlippagePercent}}% {{.TakerFee}} {{.MaximumHoldingsRatio}}

Warnings

{{ range .Config.CurrencySettings}} {{if .ShowExchangeOrderLimitWarning}} {{end}} {{end}}
Exchange Name Asset Currency Base Currency Quote Warning
{{.ExchangeName}} {{.Asset}} {{.Base}} {{.Quote}} order execution limits supported but disabled, results may not work when in production

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}} ${{printf "%.8f" .Config.PortfolioSettings.BuySide.MaximumTotal}} {{.Config.PortfolioSettings.SellSide.MinimumSize}} {{.Config.PortfolioSettings.SellSide.MaximumSize}} ${{printf "%.8f" .Config.PortfolioSettings.SellSide.MaximumTotal}}

Statistics Settings

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

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 gt $val.MaxDrawdown.Highest.Price 0.0 }} {{ end }}
Initial Funds ${{printf "%.8f" $val.FinalHoldings.InitialFunds}} {{$val.FinalHoldings.Pair.Quote}}
Buy Orders {{$val.BuyOrders}}
Buy Value ${{printf "%.8f" $val.FinalHoldings.BoughtValue}} {{$val.FinalHoldings.Pair.Quote}}
Buy Amount {{printf "%.8f" $val.FinalHoldings.BoughtAmount}} {{$val.FinalHoldings.Pair.Base}}
Sell Orders {{$val.SellOrders}}
Sell Value ${{printf "%.8f" $val.FinalHoldings.SoldValue}} {{$val.FinalHoldings.Pair.Quote}}
Sell Amount {{printf "%.8f" $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 "%.2f" $val.MaxDrawdown.DrawdownPercent}}%
Starting Close Price ${{printf "%.8f" $val.StartingClosePrice}} {{$val.FinalHoldings.Pair.Quote}}
Ending Close Price ${{printf "%.8f" $val.EndingClosePrice}} {{ $val.FinalHoldings.Pair.Quote }}
Lowest Close Price ${{printf "%.8f" $val.LowestClosePrice}} {{$val.FinalHoldings.Pair.Quote}}
Highest Close Price ${{printf "%.8f" $val.HighestClosePrice}} {{ $val.FinalHoldings.Pair.Quote}}
Highest Committed Funds ${{printf "%.8f" $val.HighestCommittedFunds.Value}} at {{ $val.HighestCommittedFunds.Time}}
Market Movement {{printf "%.2f" $val.MarketMovement}}%
Strategy Movement {{ printf "%.2f" $val.StrategyMovement}}%
Did it beat the market? {{ gt .StrategyMovement $val.MarketMovement}}
Total Value Lost to Volume Sizing ${{printf "%.8f" $val.FinalHoldings.TotalValueLostToVolumeSizing}} {{$val.FinalHoldings.Pair.Quote}}
Total Value Lost to Slippage ${{printf "%.8f" $val.FinalHoldings.TotalValueLostToSlippage}} {{ $val.FinalHoldings.Pair.Quote }}
Total Value Lost ${{printf "%.8f" $val.FinalHoldings.TotalValueLost}} {{$val.FinalHoldings.Pair.Quote}}
Total Fees ${{printf "%.8f" $val.FinalHoldings.TotalFees}} {{ $val.FinalHoldings.Pair.Quote }}
Final Funds ${{printf "%.8f" $val.FinalHoldings.RemainingFunds}} {{ $val.FinalHoldings.Pair.Quote}}
Final Holdings {{printf "%.8f" $val.FinalHoldings.PositionsSize}} {{$val.FinalHoldings.Pair.Base}}
Final Holdings Value ${{printf "%.8f" $val.FinalHoldings.PositionsValue}} {{ $val.FinalHoldings.Pair.Quote }}
Total Value ${{printf "%.8f" $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 Purchase Price Slippage Rate Amount Fees Cost Basis
{{ .Detail.Date }} ${{ .ClosePrice}} {{$pair.Quote}} {{ .Detail.Side }} ${{ .Detail.Price }} {{$pair.Quote}} {{ .SlippageRate }}% {{printf "%.8f" .Detail.Amount }} {{$pair.Base}} ${{printf "%.8f" .Detail.Fee }} {{$pair.Quote}} ${{printf "%.8f" .CostBasis }} {{$pair.Quote}}
{{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 Committed Funds
{{$ev.FillEvent.GetTime}} ${{$ev.FillEvent.GetClosePrice}} {{$pair.Quote}} {{$ev.FillEvent.GetDirection}} {{$ev.FillEvent.GetReason}}{{$ev.SignalEvent.GetTime}} ${{ printf "%f" $ev.SignalEvent.Price}} {{$pair.Quote}} {{$ev.SignalEvent.GetDirection}} {{$ev.SignalEvent.GetReason}}${{printf "%.8f" $ev.Holdings.CommittedFunds}} {{$pair.Quote}}
{{end}} {{end}} {{end}}