TravelUS

TravelUS

AI 기술 기반의 해외여행 모임통장 서비스 프로젝트

2024.08.26 ~ 2024.10.11 (8주)

사용 기술

PythonJavaScriptTypeScriptReactTailwindMUIFastAPIPWANode.js

담당 역할

환율 및 외환 거래 관련 UI/UX, 통신 구현 + 환율 예측 데이터 모델 학습 및 고도화

프로젝트 개요

목표

  • 자동환전 모임통장 서비스: 희망환율 도달 시 외화저금통에 자동 환전을 기능을 제공합니다.
  • 여행 지출 관리: 여행 중/후 경비를 한 눈에 확인하고 정산까지 가능한 '머니로그' 기능을 제공합니다.
  • 간편한 환전 경험 제공: 손해를 최소로 환전하고, 여행 전후 금전관리를 한번에 해결하는 솔루션을 제공합니다.

배경

  • 변동 환율로 인한 손해를 줄이고, 해외여행 준비부터 정산까지 금융 흐름을 간소화하고자 이 프로젝트를 기획하였습니다.

주요 기능

최적의 환전을 위한 환율 예측 차트 제공

  • SARIMA 모델을 활용한 시계열 데이터 분석을 통해 환율 예측 차트 제공

모임원이 돈을 모아 희망환율에 도달하면 자동으로 환전해주는 해외모임통장 서비스

  • 실시간 환율 반영을 통해 매 정각 설정한 환율에 도달 시 자동 환젠 제공

여행 경비를 손쉽게 관리, 정산해주는 ‘머니로그’ 및 정산 기능

  • 여행 이후 혹은 도중에 인원수 설정에 맞는 간편한 정산 기능 서비스 제공

사용 기술

기술 스택

PythonJavaScriptTypeScriptReactTailwindMUIFastAPIPWANode.js

선택 이유

React + PWA

모바일 중심 사용환경을 고려한 앱을 구현하고자 했습니다.

Redux

사용자 상태 및 통장 정보 전역 관리를 하고자 했습니다.

SARIMA

환율 예측을 위한 외생변수 포함 시계열 모델 선택했습니다.

구현 사항

  • 희망환율에 도달 시 자동으로 원하는 금액만큼 외화저금통에 환전이 되는 로직을 구현했습니다.
  • 자동환전을 원하지 않는 사람들에게도 직접 환전 등의 선택지 제공도 제공하는 UI를 구현했습니다.
  • 외환 거래 시 환전될 예상 금액과 실제로 통장에 들어온 돈의 금액이 상이하지 않도록 구현했습니다.
  • 환율 예측 데이터를 제공할 때, 오차를 줄일 수 있도록 최적의 모델 연구했습니다.

외화로 환전

원화로 환전

환율 및 환율예측 조회

문제 해결 사례

문제

초기에는 단순 ARIMA 기반 모델을 사용해 환율을 예측했지만, 글로벌 금리나 원자재 가격과 같은 외부 요인이 반영되지 않아 예측 정확도가 낮았습니다. 테스트 결과 MAPE(평균 절대 백분율 오차)가 약 9~10% 수준으로 나타났고, 실제 환전 금액과 예측 금액 간 차이가 커 사용자에게 신뢰성 있는 정보를 제공하기 어렵다는 한계가 있었습니다.

해결 방안

외부 경제 지표의 영향을 반영하기 위해 SARIMA 모델로 전환하고, 미국 국채 금리, S&P500 지수, WTI 유가 등 주요 외생 변수를 추가했습니다. GPU 서버 환경에서 약 50개 이상의 파라미터 조합을 병렬 학습하며 모델 성능을 비교했고, MAPE를 기준으로 최적 모델을 선택했습니다. 또한 데이터 전처리 및 시계열 정규화를 반복 실험하며 예측 성능을 지속적으로 개선했습니다.

결과

모델 개선 이후 MAPE를 약 9~10% 수준에서 3~4% 수준으로 약 60% 이상 낮출 수 있었으며, 환전 예상 금액과 실제 입금 금액 간 평균 오차도 크게 감소했습니다. 추가로 테스트 과정에서 환율 소수점 처리 방식 차이로 인해 발생하던 금액 오차(평균 약 0.1~0.5원 수준)를 발견했고, 백엔드 API 응답값의 소수점 처리 로직을 수정하여 사용자 혼선을 방지할 수 있었습니다.

프로젝트 성과

성과

  • 특화 프로젝트 우수상 수상

결과

  • 사용자들이 사용하기에 간편한 조작성과 직관적인 UI를 제공함으로 목표하고자 했던 서비스를 제공

프로젝트 회고

아쉬웠던 점

  • SARIMA라는 모델을 더 빠른 시일 내에 알아서 모델 학습을 좀 더 견고히 했으면 더 좋은 결과가 있을 것이라는 아쉬움이 있었습니다.

개선 방안

  • 너무 한정적인 생각을 하지말고 좀 더 열린 마인드로 많은 정보를 찾아봐야하는 견문을 가지게 되었습니다.

새롭게 배운 것

  • Redux를 통해 상태 관리를 하고, React 환경에서 PWA를 적용해 모바일과 같은 적절한 어플리케이션을 개발할 수 있게 됐습니다.

깨달은 점

  • 상태 관리, 모바일 환경 등 React에서 적용할 수 있는 기술적 요인들이 수도 없이 많은 것을 배웠습니다.