Documentation
¶
Index ¶
- type AnalysisResult
- type Analyzer
- type AnalyzerRegistry
- type AverageTradeDurationAnalyzer
- type BacktestConfig
- type BacktestResult
- type Backtester
- type DrawdownAnalyzer
- type DrawdownStats
- type EquityCurveAnalyzer
- type ExpectancyAnalyzer
- type ExpectancyPerTradeAnalyzer
- type MaxConsecutiveAnalyzer
- type MultiAssetBacktester
- type PortfolioResult
- type PortfolioSimulator
- type Position
- type ProfitFactorAnalyzer
- type RExpectancyAnalyzer
- type SharpeRatioAnalyzer
- type SystemQualityNumberAnalyzer
- type Trade
- type TradeStats
- type TradeStatsAnalyzer
- type WinLossRatioAnalyzer
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AnalysisResult ¶ added in v0.0.3
type AnalysisResult map[string]interface{}
AnalysisResult represents the collected results from all analyzers.
type Analyzer ¶ added in v0.0.3
type Analyzer interface {
Name() string
Analyze(trades []metrics.Trade, equityCurve []metrics.EquityPoint) interface{}
}
Analyzer is an interface for analyzing backtest results.
type AnalyzerRegistry ¶ added in v0.0.3
type AnalyzerRegistry struct {
// contains filtered or unexported fields
}
AnalyzerRegistry maintains a list of available analyzers.
func NewAnalyzerRegistry ¶ added in v0.0.3
func NewAnalyzerRegistry() *AnalyzerRegistry
NewAnalyzerRegistry returns a new AnalyzerRegistry.
func (*AnalyzerRegistry) Add ¶ added in v0.0.3
func (ar *AnalyzerRegistry) Add(analyzer Analyzer)
Add adds an analyzer to the registry.
func (*AnalyzerRegistry) Run ¶ added in v0.0.3
func (ar *AnalyzerRegistry) Run(trades []metrics.Trade, equityCurve []metrics.EquityPoint) AnalysisResult
Run executes all registered analyzers and returns the combined results.
type AverageTradeDurationAnalyzer ¶ added in v0.0.3
type AverageTradeDurationAnalyzer struct{}
func (*AverageTradeDurationAnalyzer) Analyze ¶ added in v0.0.3
func (atda *AverageTradeDurationAnalyzer) Analyze(trades []metrics.Trade, equityCurve []metrics.EquityPoint) interface{}
func (*AverageTradeDurationAnalyzer) Name ¶ added in v0.0.3
func (atda *AverageTradeDurationAnalyzer) Name() string
type BacktestConfig ¶
type BacktestResult ¶
type BacktestResult struct {
TotalTrades int
WinningTrades int
LosingTrades int
WinRate decimal.Decimal
TotalProfit decimal.Decimal
TotalLoss decimal.Decimal
NetProfit decimal.Decimal
GrossProfit decimal.Decimal
GrossLoss decimal.Decimal
ProfitFactor decimal.Decimal
AverageWin decimal.Decimal
AverageLoss decimal.Decimal
AverageTrade decimal.Decimal
MaxConsecutiveWins int
MaxConsecutiveLosses int
MaxDrawdown decimal.Decimal
MaxDrawdownPercent decimal.Decimal
RecoveryFactor decimal.Decimal
RiskRewardRatio decimal.Decimal
CalmarRatio decimal.Decimal
SortinoRatio decimal.Decimal
SharpeRatio decimal.Decimal
CAGR decimal.Decimal
FinalEquity decimal.Decimal
InitialCapital decimal.Decimal
Trades []Trade
Analysis AnalysisResult
}
type Backtester ¶
type Backtester struct {
// contains filtered or unexported fields
}
func NewBacktester ¶
func NewBacktester(s *series.TimeSeries, strategy trading.Strategy) *Backtester
func (*Backtester) AddAnalyzer ¶ added in v0.0.3
func (b *Backtester) AddAnalyzer(a Analyzer)
AddAnalyzer adds an analyzer to the backtester.
func (*Backtester) Run ¶
func (b *Backtester) Run(config BacktestConfig) BacktestResult
type DrawdownAnalyzer ¶ added in v0.0.3
type DrawdownAnalyzer struct{}
DrawdownAnalyzer analyzes drawdown performance.
func (*DrawdownAnalyzer) Analyze ¶ added in v0.0.3
func (a *DrawdownAnalyzer) Analyze(trades []metrics.Trade, equityCurve []metrics.EquityPoint) interface{}
func (*DrawdownAnalyzer) Name ¶ added in v0.0.3
func (a *DrawdownAnalyzer) Name() string
type DrawdownStats ¶ added in v0.0.3
DrawdownStats represents drawdown statistics.
type EquityCurveAnalyzer ¶ added in v0.0.3
type EquityCurveAnalyzer struct{}
EquityCurveAnalyzer simply returns the equity curve data points.
func (*EquityCurveAnalyzer) Analyze ¶ added in v0.0.3
func (a *EquityCurveAnalyzer) Analyze(trades []metrics.Trade, equityCurve []metrics.EquityPoint) interface{}
func (*EquityCurveAnalyzer) Name ¶ added in v0.0.3
func (a *EquityCurveAnalyzer) Name() string
type ExpectancyAnalyzer ¶ added in v0.0.3
type ExpectancyAnalyzer struct{}
func (*ExpectancyAnalyzer) Analyze ¶ added in v0.0.3
func (ea *ExpectancyAnalyzer) Analyze(trades []metrics.Trade, equityCurve []metrics.EquityPoint) interface{}
func (*ExpectancyAnalyzer) Name ¶ added in v0.0.3
func (ea *ExpectancyAnalyzer) Name() string
type ExpectancyPerTradeAnalyzer ¶ added in v0.0.3
type ExpectancyPerTradeAnalyzer struct{}
func (*ExpectancyPerTradeAnalyzer) Analyze ¶ added in v0.0.3
func (ept *ExpectancyPerTradeAnalyzer) Analyze(trades []metrics.Trade, equityCurve []metrics.EquityPoint) interface{}
func (*ExpectancyPerTradeAnalyzer) Name ¶ added in v0.0.3
func (ept *ExpectancyPerTradeAnalyzer) Name() string
type MaxConsecutiveAnalyzer ¶ added in v0.0.3
type MaxConsecutiveAnalyzer struct{}
func (*MaxConsecutiveAnalyzer) Analyze ¶ added in v0.0.3
func (mca *MaxConsecutiveAnalyzer) Analyze(trades []metrics.Trade, equityCurve []metrics.EquityPoint) interface{}
func (*MaxConsecutiveAnalyzer) Name ¶ added in v0.0.3
func (mca *MaxConsecutiveAnalyzer) Name() string
type MultiAssetBacktester ¶ added in v0.0.3
type MultiAssetBacktester struct {
// contains filtered or unexported fields
}
MultiAssetBacktester runs backtests across multiple assets simultaneously
func NewMultiAssetBacktester ¶ added in v0.0.3
func NewMultiAssetBacktester(strategy trading.Strategy) *MultiAssetBacktester
func (*MultiAssetBacktester) AddAsset ¶ added in v0.0.3
func (m *MultiAssetBacktester) AddAsset(symbol string, s *series.TimeSeries)
func (*MultiAssetBacktester) Run ¶ added in v0.0.3
func (m *MultiAssetBacktester) Run(config BacktestConfig) map[string]BacktestResult
Run performs a backtest across all assets. This is a simplified version where each asset is tested independently for now. A true portfolio backtester would handle rebalancing and correlation.
type PortfolioResult ¶ added in v0.0.3
type PortfolioResult struct {
AssetResults map[string]BacktestResult
TotalEquity decimal.Decimal
}
PortfolioResult combines results from multiple assets
type PortfolioSimulator ¶ added in v0.0.3
type PortfolioSimulator struct {
InitialCapital decimal.Decimal
Fees decimal.Decimal
Slippage decimal.Decimal
}
PortfolioSimulator simulates a portfolio based on signals
func NewPortfolioSimulator ¶ added in v0.0.3
func NewPortfolioSimulator(initialCapital, fees, slippage float64) *PortfolioSimulator
NewPortfolioSimulator returns a new PortfolioSimulator
func (*PortfolioSimulator) SimulateLongOnly ¶ added in v0.0.3
func (ps *PortfolioSimulator) SimulateLongOnly(s *series.TimeSeries, signals []int) BacktestResult
SimulateLongOnly simulates a long-only portfolio based on buy/sell signals
type ProfitFactorAnalyzer ¶ added in v0.0.3
type ProfitFactorAnalyzer struct{}
func (*ProfitFactorAnalyzer) Analyze ¶ added in v0.0.3
func (pfa *ProfitFactorAnalyzer) Analyze(trades []metrics.Trade, equityCurve []metrics.EquityPoint) interface{}
func (*ProfitFactorAnalyzer) Name ¶ added in v0.0.3
func (pfa *ProfitFactorAnalyzer) Name() string
type RExpectancyAnalyzer ¶ added in v0.0.3
type RExpectancyAnalyzer struct{}
func (*RExpectancyAnalyzer) Analyze ¶ added in v0.0.3
func (rea *RExpectancyAnalyzer) Analyze(trades []metrics.Trade, equityCurve []metrics.EquityPoint) interface{}
func (*RExpectancyAnalyzer) Name ¶ added in v0.0.3
func (rea *RExpectancyAnalyzer) Name() string
type SharpeRatioAnalyzer ¶ added in v0.0.3
SharpeRatioAnalyzer calculates the Sharpe Ratio.
func (*SharpeRatioAnalyzer) Analyze ¶ added in v0.0.3
func (a *SharpeRatioAnalyzer) Analyze(trades []metrics.Trade, equityCurve []metrics.EquityPoint) interface{}
func (*SharpeRatioAnalyzer) Name ¶ added in v0.0.3
func (a *SharpeRatioAnalyzer) Name() string
type SystemQualityNumberAnalyzer ¶ added in v0.0.3
type SystemQualityNumberAnalyzer struct{}
func (*SystemQualityNumberAnalyzer) Analyze ¶ added in v0.0.3
func (sqna *SystemQualityNumberAnalyzer) Analyze(trades []metrics.Trade, equityCurve []metrics.EquityPoint) interface{}
func (*SystemQualityNumberAnalyzer) Name ¶ added in v0.0.3
func (sqna *SystemQualityNumberAnalyzer) Name() string
type TradeStats ¶ added in v0.0.3
type TradeStats struct {
TotalTrades int
WinningTrades int
LosingTrades int
WinRate decimal.Decimal
ProfitFactor decimal.Decimal
Expectancy decimal.Decimal
AverageWin decimal.Decimal
AverageLoss decimal.Decimal
TotalNetProfit decimal.Decimal
}
TradeStats represents basic trade statistics.
type TradeStatsAnalyzer ¶ added in v0.0.3
type TradeStatsAnalyzer struct{}
TradeStatsAnalyzer analyzes trade-level performance.
func (*TradeStatsAnalyzer) Analyze ¶ added in v0.0.3
func (a *TradeStatsAnalyzer) Analyze(trades []metrics.Trade, equityCurve []metrics.EquityPoint) interface{}
func (*TradeStatsAnalyzer) Name ¶ added in v0.0.3
func (a *TradeStatsAnalyzer) Name() string
type WinLossRatioAnalyzer ¶ added in v0.0.3
type WinLossRatioAnalyzer struct{}
func (*WinLossRatioAnalyzer) Analyze ¶ added in v0.0.3
func (wlra *WinLossRatioAnalyzer) Analyze(trades []metrics.Trade, equityCurve []metrics.EquityPoint) interface{}
func (*WinLossRatioAnalyzer) Name ¶ added in v0.0.3
func (wlra *WinLossRatioAnalyzer) Name() string