57 lines
2.4 KiB
JavaScript
57 lines
2.4 KiB
JavaScript
import React from 'react';
|
|
|
|
const STRATEGY_ORDER = ['engine_w', 'random_null', 'coverage'];
|
|
const STRATEGY_LABEL = { engine_w: '엔진', random_null: '무작위', coverage: '커버리지' };
|
|
|
|
export default function TrackRecordCard({ byStrategy }) {
|
|
if (!byStrategy) return null;
|
|
|
|
const rows = STRATEGY_ORDER.filter((s) => byStrategy[s]);
|
|
|
|
return (
|
|
<div className="evolver-card backtest-track-record">
|
|
<h2>누적 성적표</h2>
|
|
{rows.length === 0 ? (
|
|
<p className="backtest-note">아직 백테스트 데이터가 없습니다.</p>
|
|
) : (
|
|
<>
|
|
<table className="backtest-table">
|
|
<thead>
|
|
<tr>
|
|
<th>전략</th>
|
|
<th>누적 장수</th>
|
|
<th>회차수</th>
|
|
<th>1등</th>
|
|
<th>2등</th>
|
|
<th>3등</th>
|
|
<th>4등</th>
|
|
<th>5등</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
{rows.map((s) => {
|
|
const a = byStrategy[s];
|
|
return (
|
|
<tr key={s}>
|
|
<td>{STRATEGY_LABEL[s] || s}</td>
|
|
<td>{(a.n_tickets || 0).toLocaleString()}</td>
|
|
<td>{a.draws || 0}</td>
|
|
<td>{a['1st'] || 0}</td>
|
|
<td>{a['2nd'] || 0}</td>
|
|
<td>{a['3rd'] || 0}</td>
|
|
<td>{a['4th'] || 0}</td>
|
|
<td>{a['5th'] || 0}</td>
|
|
</tr>
|
|
);
|
|
})}
|
|
</tbody>
|
|
</table>
|
|
<p className="backtest-note">
|
|
엔진이 무작위를 넘지 못하면 분석에 통계적 우위가 없다는 정직한 증거입니다.
|
|
</p>
|
|
</>
|
|
)}
|
|
</div>
|
|
);
|
|
}
|