69 lines
2.8 KiB
Java
69 lines
2.8 KiB
Java
package com.goldenchart.dto;
|
|
|
|
import lombok.*;
|
|
|
|
/**
|
|
* Ta4j AnalysisCriterion 계산 결과 전체를 담는 DTO
|
|
*/
|
|
@Data @Builder @NoArgsConstructor @AllArgsConstructor
|
|
public class BacktestAnalysisDto {
|
|
|
|
// ── 기본 자본 ─────────────────────────────────────────────────────────────
|
|
double initialCapital;
|
|
double finalEquity;
|
|
/** 적용된 투자분석 방식 */
|
|
String analysisMethod;
|
|
/** 기말 예수금 */
|
|
double cashBalance;
|
|
/** 기말 보유주식 평가액 */
|
|
double holdingsValue;
|
|
/** 실현 손익 (청산 완료) */
|
|
double realizedPnl;
|
|
/** 평가 손익 (미청산 보유분) */
|
|
double unrealizedPnl;
|
|
|
|
// ── 수익성 지표 ──────────────────────────────────────────────────────────
|
|
/** 총 수익률 (소수, e.g. 0.152 = +15.2%) */
|
|
double totalReturnPct;
|
|
/** 총 손익 (금액) */
|
|
double totalProfitLoss;
|
|
/** 총 수익 (이익 거래 합산) */
|
|
double grossProfit;
|
|
/** 총 손실 (손실 거래 합산, 음수) */
|
|
double grossLoss;
|
|
/** 평균 거래 수익률 */
|
|
double avgReturnPct;
|
|
/** 손익비 (총이익 / |총손실|) */
|
|
double profitLossRatio;
|
|
|
|
// ── 거래 통계 ─────────────────────────────────────────────────────────────
|
|
int numberOfPositions;
|
|
int numberOfWinning;
|
|
int numberOfLosing;
|
|
int numberOfBreakEven;
|
|
/** 승률 0~1 */
|
|
double winRate;
|
|
|
|
// ── 리스크 지표 ───────────────────────────────────────────────────────────
|
|
/** 최대 낙폭 (음수, -0.15 = -15%) */
|
|
double maxDrawdownPct;
|
|
/** 최대 상승폭 */
|
|
double maxRunupPct;
|
|
/** 샤프 비율 */
|
|
double sharpeRatio;
|
|
/** 소르티노 비율 */
|
|
double sortinoRatio;
|
|
/** 칼마 비율 (총수익률 / |최대낙폭|) */
|
|
double calmarRatio;
|
|
/** Value at Risk (95%) */
|
|
double valueAtRisk95;
|
|
/** Expected Shortfall / CVaR */
|
|
double expectedShortfall;
|
|
|
|
// ── 벤치마크 비교 ─────────────────────────────────────────────────────────
|
|
/** 바이앤홀드 수익률 */
|
|
double buyAndHoldReturnPct;
|
|
/** 전략 대비 바이앤홀드 배수 (>1 이면 전략이 유리) */
|
|
double vsBuyAndHold;
|
|
}
|