상세투자분석 계산로직 수정

This commit is contained in:
Macbook
2026-06-07 15:12:42 +09:00
parent c4365283cf
commit e1cf2ea46d
14 changed files with 366 additions and 58 deletions
@@ -0,0 +1,23 @@
export type AnalysisMethod = 'MARK_TO_MARKET' | 'REALIZED_ONLY';
export const ANALYSIS_METHOD_OPTIONS: { value: AnalysisMethod; label: string; desc: string }[] = [
{
value: 'MARK_TO_MARKET',
label: '평가손익 포함 (표준)',
desc: '예수금 + 보유주식 시가평가. HTS·MTS 평가금액과 동일한 방식으로 수익률을 계산합니다.',
},
{
value: 'REALIZED_ONLY',
label: '실현손익만',
desc: '청산 완료된 거래의 실현손익만 반영합니다. 기말 미청산 포지션은 수익률에 포함하지 않습니다.',
},
];
export function normalizeAnalysisMethod(raw?: string | null): AnalysisMethod {
return raw === 'REALIZED_ONLY' ? 'REALIZED_ONLY' : 'MARK_TO_MARKET';
}
export function analysisMethodLabel(method?: string | null): string {
const m = normalizeAnalysisMethod(method);
return ANALYSIS_METHOD_OPTIONS.find(o => o.value === m)?.label ?? '평가손익 포함 (표준)';
}
+8
View File
@@ -1151,6 +1151,11 @@ export interface BacktestStats {
export interface BacktestAnalysis {
initialCapital: number;
finalEquity: number;
analysisMethod?: 'MARK_TO_MARKET' | 'REALIZED_ONLY';
cashBalance?: number;
holdingsValue?: number;
realizedPnl?: number;
unrealizedPnl?: number;
totalReturnPct: number;
totalProfitLoss: number;
grossProfit: number;
@@ -1230,6 +1235,8 @@ export interface BacktestSettingsDto {
partialExitPct: number;
/** "LONG_ONLY" | "SIGNAL_ONLY" — 매도 시그널 포지션 종속성 모드 */
positionMode?: 'LONG_ONLY' | 'SIGNAL_ONLY';
/** MARK_TO_MARKET | REALIZED_ONLY — 투자분석 방식 */
analysisMethod?: 'MARK_TO_MARKET' | 'REALIZED_ONLY';
}
export const DEFAULT_BACKTEST_SETTINGS: BacktestSettingsDto = {
@@ -1253,6 +1260,7 @@ export const DEFAULT_BACKTEST_SETTINGS: BacktestSettingsDto = {
partialExitEnabled: false,
partialExitPct: 50,
positionMode: 'LONG_ONLY',
analysisMethod: 'MARK_TO_MARKET',
};
/** 백테스팅 설정 로드 */