paper.ts 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. // 모의투자 표시용 순수 유틸 (서버·클라이언트 공용) — bp(basis point)·토큰 포맷
  2. // bp = 만분율. 예: 1234bp = 12.34%
  3. import type { ChangeDirection } from '@/lib/utils/stock';
  4. // bp 부호 방향 (수익률·손익 색 병행 표기용)
  5. export function bpDirection(bp: number|null|undefined): ChangeDirection {
  6. if (bp === null || bp === undefined || bp === 0) {
  7. return 'flat';
  8. }
  9. return bp > 0 ? 'up' : 'down';
  10. }
  11. // bp → % 문자열 (부호 포함). 예: 1234 → "+12.34%"
  12. export function formatBpPercent(bp: number|null|undefined): string {
  13. if (bp === null || bp === undefined) {
  14. return '—';
  15. }
  16. const sign = bp > 0 ? '+' : '';
  17. return `${sign}${(bp / 100).toFixed(2)}%`;
  18. }
  19. // bp → % 절대값 (부호 없이, 승률·MDD 등 방향 무의미한 지표용). 예: 6500 → "65.00%"
  20. export function formatBpAbs(bp: number|null|undefined): string {
  21. if (bp === null || bp === undefined) {
  22. return '—';
  23. }
  24. return `${(Math.abs(bp) / 100).toFixed(2)}%`;
  25. }
  26. // 토큰 금액 (천 단위 구분 + "토큰" 단위)
  27. export function formatToken(value: number|null|undefined): string {
  28. if (value === null || value === undefined) {
  29. return '—';
  30. }
  31. return `${value.toLocaleString('ko-KR')} 토큰`;
  32. }
  33. // 토큰 금액 (단위 없이 숫자만)
  34. export function formatTokenNumber(value: number|null|undefined): string {
  35. if (value === null || value === undefined) {
  36. return '—';
  37. }
  38. return value.toLocaleString('ko-KR');
  39. }