프리미엄
예측대회
투자분석
아카데미
커뮤니티
로그인Valley AI 시작하기시작하기
Valley Space인기
[AI로 법인세 신고] ⑥ 회계처리 구현 : 외화매수/매도
이름 없는 블로그분석 (블로그)

[AI로 법인세 신고] ⑥ 회계처리 구현 : 외화매수/매도

avatar
반야복음
2026.04.01조회수 43회


이전 글에서는 매도 거래에 대한 회계처리를 구현하였다.

이제부터는 어렵게 생각할게 진짜 별로 없다.


이번에는 거래유형 별 계정 분개를 기반으로 환전과 관련된

"외화매수", "외화매도" 외화 거래를 구현해

Tmp_book 데이터프레임을 채워나갈 예정이다.


"외화매수" 거래 회계처리

1. 계정 분개 

원화가 나가고 외화가 들어오는 거래다.

외화는 환전 당시 환율로 계산하면 된다.

(차) 외화예금 / (대) 보통예금


2. 장부 기입 

다음과 같이 Tmp_book 데이터프레임에 값을 넣어 임시 장부에 기입한다.


JSON 파일의 'transaction_type' 키에 대한 값이 "외화매수"일 경우,

필요한 키에 대한 값을 인자로 전달하여 buy_fx_book 함수를 실행한다.


행 하나에 대한 기장을 실행한다. 

image.png


3 . 거래 기록

buy_fx_book 함수는 실행을 마치기 전에 

해당 거래를 매매기록(trading)과 보유잔고(portfolio) 및 외화잔고(fx_history)에 반영하는

buy_fx_trade 함수를 호출한다. 


이때 사전에 찾은 매매기준율(USD, JPY) ...

회원가입만 해도
이 글을 무료로 읽을 수 있어요.

Basic 7일 무료 체험 시작하기
이미 계정이 있으신가요?로그인하기
댓글 0개
avatar
반야복음
구독자 5명구독중 9명
아직 공부 중
아직 작성된 댓글이 없습니다.
분석 (블로그) 카테고리의 다른글

[AI로 법인세 신고] ⑤ 회계처리 구현 : 매도

이전 글에서는 매수 거래에 대한 회계처리를 구현하면서 정말 큰 산을 넘었다. 역시 세무사가 괜히 있는게 아니다. 이번에는 거래유형 별 계정 분개를 기반으로 "매도" 거래를 구현해 Tmp_book 데이터프레임을 채워나갈 예정이다. "매도" 거래 회계처리 1. 계정 분개  "매도"는 주식을 파는 것이다.  주식이 나가고 매도대금이 들어오면서 손익이 인식된다. 이때 발생하는 거래수수료와 환차익은 심플하게 손익에 모두 녹일 수 있다. 근거 규정은 아래와 같다. K-IFRS 제1109호 (금융상품) 제3.2.12항 (금융자산의 제거) 금융자산 전체를 제거하는 경우에는 다음 ⑴과 ⑵의 차액을 당기손익으로 인식한다. ⑴ 금융자산의 장부금액(제거일에 측정) ⑵ 수취한 대가(새로 획득한 모든 자산에서 새로 부담하게 된 모든 부채를 차감한 금액 포함) K-IFRS 제1109호 용어의 정의 (거래원가) 금융자산이나 금융부채의 취득, 발행, 처분과 직접 관련된 증분원가(문단 B5.4.8 참조).  증분원가는 그 금융상품의 취득, 발행, 처분이 없었다면 생기지 않았을...
분석 (블로그)
2026. 03. 31
3
0
30
[AI로 법인세 신고] ⑤ 회계처리 구현 : 매도

[AI로 법인세 신고] ④ 회계처리 구현 : 매수

이전 글에서는 회계처리를 구현하기 위한 밑작업으로 데이터프레임에 대한 틀을 짰다. 이제 본격적으로 거래유형 별 계정 분개를 기반으로  Tmp_book 데이터프레임을 채워나가보자. "매수" 거래 회계처리 1. 계정 분개  "매수"는 주식을 사는 것이다.  매수대금과 수수료가 나가고 주식이 들어온다. 이때 나가는 외화는 환차익을 평가해줘야 한다. 수수료는 비용으로 처리한다. 따라서 "매수" 거래는 장부에 4개 행으로 기록된다. (차) 단기매매증권 / (대) 외화예금 (차) 외환차손 or (대)외환차익 (차) 국내지급수수료 / (대) 외화예금 (차) 외환차손 or (대)외환차익 이때 차변의 단기매매증권 및 국내지급수수료는 당일 기준매매율로 계산하고 대변 외화예금은 fx_history 데이터프레임으로 추적 중인 외화통장 평균 장부환율을 사용한다. 그 결과 차변의 값이 크면 대변에 외환차익이, 대변의 값이 크면 차변에 외환차손이 기입되어야 한다. 2. 장부 기입  다음과 같이 Tmp_book 데이터프레임에 값을 넣어 임시 ...
분석 (블로그)
2026. 03. 30
5
2
80

[AI로 법인세 신고] ③ dataframe 구상하기

이전 글에서 거래 내역을 바탕으로 계정 분개를 하고, 외화차/손익 계산을 위한 매매기준율 데이터도 구했다. 본 글에서는 이제 거래내역을 회계처리하기 위한 밑작업으로 데이터프레임의 틀을 짜기 위한 로직을 구상하고자 한다. 1. 매매기준율 관련 : USD_exchange, JPY_exchange ① USD_exchange 우선 pandas 라이브러리를 통해 'date'와 'exchange' 컬럼을 가진 데이터프레임을 만들고,  USD매매기준율 엑셀파일에서 '날짜' 컬럼과 '환율' 컬럼 값을 넣은 뒤 USD_exchange라는 딕셔너리 형태로 추출할 것이다.  다만, 'date'는 YYYY.MM.DD 날짜 형식에서 YYYY-MM-DD 날짜 형식으로 변환한다.  ② JPY_exchange 마찬가지로 'date'와 'exchange' 컬럼을 가진 데이터프레임을 만들고, JYP매매기준율 엑셀파일에서 '날짜' 컬럼과 '환율' 컬럼 값을 넣은 뒤 JPY_exchange라는 딕셔너리 형태로 가져올 것이다. 이때, 'date'는 엑셀파일의 '날짜' 컬럼에서 값을 가져올때 ...
분석 (블로그)
2026. 03. 28
4
0
33

[AI로 법인세 신고] ② 계정 분개 및 외화평가 데이터 준비

이전 글에서 증권 거래내역서를 PDF파일에서 JSON 파일로 변환했다. 거래내역 한 건당 나오는 key 값은 아래와 같다.  여기서 회계처리를 위해 아래 코드를 통해 transaction_type(거래유형) 별로 키 값을 뽑아 보았다. import json with open('output.json', 'r', encoding='utf-8') as f: data = json.load(f) unique_types = {item.get('transaction_type') for item in data.get('transactions', []) if item.get('transaction_type')} print(unique_types) 거래유형 및 대응되는 복식부기 계정은 대충 아래와 같이 정리했다. 이렇게 계정과목을 잡고 분개한 이유는 회계처리 구현 파트에서 자세히 적었다. 아래는 해당 글로 이동하는 링크이다. 매수 매도 외화매수/매도 외화매수/매도(기타) 환전정산입금 이체입금/출금 배당금, 이자 등 이 글에서는 외환차손·익만 일단 짚고 넘어가자 외화를 가지고 증권 거래를 한터라  환율 변동에 따른 손익을 별도의 계정으로 분리하여 회계처리해야 한다. 즉,  해당 거래에 대해서는 외환차익/외환차손 계정을 사용하여 분개를 따로 해줘야 한다. 이때 고려해야 하는 환율 변동 손익의 유형은 크게 2가지다. ① 미실현 손익 (외화환산이익/손실)  기말 결산 시점에 계좌에 남아있는 '외화예금(화폐성 자산)'의 장부 환율과  기말 고시 환율 간의 차이를 평가하여 기록하는 손익이다.  ② 실현 손익 (외환차익/외환차손)  보유 중인 외화를 원화로 환전(외화 매도)하거나,  주식을 사기 위해 외화를 지출할 때 실제로 확정되어 발생하는 손익이다.  단, ...
분석 (블로그)
2026. 03. 26
7
0

[AI로 법인세 신고] ① 거래내역서 전처리 : PDF → JSON

법인을 설립하여 주식 투자를 하고 있을 경우, 개별 매매에 대한 복식부기 회계처리를 일일이 해야하는게 참 귀찮을 수 있다.  그래서 AI를 활용하여 법인세 신고를 굳이 셀프로 처리해보고자 하였다. 우선 법인세 신고를 위해 거래내역에 대한 회계처리를 해야한다. 증권사 홈페이지로 들어가서 작년 1년간의 거래내역서를 신청하면, 메일로 PDF 파일을 보내준다. 비밀번호로 사업자등록번호를 입력하고 문서를 열람하면 아래와 같이 편집 권한이 비활성화되어 있다. 이 상태에서는 전처리가 안되기 때문에 pdf를 인쇄해서 pdf로 다시 변환해준다. 이제 gemini API를 이용해서 PDF 파일을 우선 JSON 파일로 변환해줄 것이다. gemini API를 사용하는 이유는 꽁짜로 유료 API를 사용할 수 있기 때문이다. 구글 클라우드 플랫폼(GCP)을 신규 가입하면 90일간 쓸 수 있는 40만원 가량의 크레딧을 준다. 가입 방법은 link를 참고하시라 크레딧이 있으면, 제미나이 API 호출 시 발생하는 비용이 크레딧에서 먼저 차감된다. API키를 발급받아 이 크레딧으로 Gemini API(Vertex AI)를 호출하여 PDF 파일을 json으로 바꿔주자 API키 발급 방법은 link를 참고하시라 거래명세서는 대충 이런 형식이다. 이걸 토대로 API에 던져줄 프롬프트는 아래와 같이 쌈마이하게 만들어봤는데 일단 동작은 잘한다. 더 효율적으로 동작하게 할 방법이 있을수도 있을 것 같은데 지금 알빠는 아닌 것 같다. [Extraction Rules] You are a financial data extraction expert. I will provide you with a chunk of a PDF document containing transaction histories. Your goal is to extract ALL transaction records found in this chunk and return them in JSON format. Extraction Logic: - A single transaction record consists of a pair of two consecutive rows. - First row generally contains: 거래일자, 종목명, 수량, 거래금액, 수수료, 변제/연체합, 예수금 - Second row generally contains: 통화, 거래구분, 단가, 거래금액(외), 거래세및농특세, 소득/주민세, 예수금(외) - Combine these 2 rows into a single JSON object. - If this chunk contains the first page of the document, completely ignore the cover/summary pages and start extracting ONLY after the string "■거래내역" appears. - If this chunk does not contain "■거래내역", assume the document is a continuation of the table and extract all 2-row pairs that match the transaction data pattern. Exclude Repeating Elements (Negative Prompting): Absolutely ignore the following repeating header/footer text and do not treat them as data: - "잔고 및 거래 명세서" - "■거래내역" and "※ 수량단위 : ..." - Table column names (e.g., 거래일자, 종목명, 통화, 거래구분 etc.) - Top right "키움증권" - "계좌번호 : ****-**** (주)****" - "2025/01/01~2025/12/31 전체거래" - Page numbers like "page : n/40" - Timestamps like "2026-**-** **:**:**" - Bottom left "원본" - "-끝-", "키움증권 주식회사", and any stamp/seal. Data Integrity: - Extract the exact text. Do not remove commas (,) or symbols. - If a specific...
분석 (블로그)
2026. 03. 25
8
[AI로 법인세 신고] ④ 회계처리 구현 : 매수
[AI로 법인세 신고] ③ dataframe 구상하기
56
[AI로 법인세 신고] ② 계정 분개 및 외화평가 데이터 준비
0
93
[AI로 법인세 신고] ① 거래내역서 전처리 : PDF → JSON