| 거래일자 | 거래종류 | 종목명 | 거래수량 | 거래금액 | 수수료 |
| 2025.12.09 | 사채이자입금 | 여천NCC 73-2 | 0 | 20,549 | 0 |
| 2025.09.09 | 사채이자입금 | 여천NCC 73-2 | 0 | 16,505 | 0 |
| 2025.09.30 | 장내당일채권매수대금출금 | 여천NCC 73-2 | 0 | 737,025 | 730 |
| 2025.08.18 | 장내당일채권매수대금출금 | 여천NCC 73-2 | 0 | 898,131 | 890 |
| 2025.08.14 | 장내당일채권매수대금출금 | 여천NCC 73-2 | 0 | 1,019,520 | 1,010.00 |
| 2025.08.12 | 장내당일채권매수대금출금 | 여천NCC 73-2 | 0 | 1,079,131 | 1,070.00 |
| 2025.08.11 | 장내당일채권매수대금출금 | 여천NCC 73-2 | 0 | 11,279 | 10 |
| 2026.03.09 | 채권만기상환금입금 | 여천NCC 73-2 | 0 | 531,760 | 0 |
| 2026.03.09 | 채권만기상환금입금 | 여천NCC 73-2 | 0 | 247,283 | 0 |
| 2026.03.09 | 채권만기상환금입금 | 여천NCC 73-2 | 0 | 946,914 | 0 |
| 2026.03.09 | 채권만기상환금입금 | 여천NCC 73-2 | 0 | 62,323 | 0 |
| 2026.03.09 | 채권만기상환금입금 | 여천NCC 73-2 | 0 | 1,005,217 | 0 |
| 2026.03.09 | 채권만기상환금입금 | 여천NCC 73-2 | 0 | 1,153,989 | 0 |
| 2026.03.09 | 채권만기상환금입금 | 여천NCC 73-2 | 0 | 12,062 | 0 |
- 원금: 3,745,086원
- 회수금액: 3,996,602원
- 수익금: 251,516원
- 투자 기간: 211일
- 연 수익률: 11.6%
- 실 수익률: 6.7%
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker
import platform
# 1. 한글 폰트 및 마이너스 기호 깨짐 방지 설정
if platform.system() == 'Darwin': # Mac
plt.rc('font', family='AppleGothic')
elif platform.system() == 'Windows': # Windows
plt.rc('font', family='Malgun Gothic')
plt.rcParams['axes.unicode_minus'] = False
# 2. 데이터 생성 (텍스트 데이터를 정제하여 구조화)
# 매수대금은 현금 유출이므로 음수(-), 입금은 현금 유입이므로 양수(+)로 처리
data = [
['2025-08-11', '장내당일채권매수대금출금', -11279, 10],
['2025-08-12', '장내당일채권매수대금출금', -1079131, 1070],
['2025-08-14', '장내당일채권매수대금출금', -1019520, 1010],
['2025-08-18', '장내당일채권매수대금출금', -898131, 890],
['2025-09-30', '장내당일채권매수대금출금', -737025, 730],
['2025-09-09', '사채이자입금', 16505, 0],
['2025-12-09', '사채이자입금', 20549, 0],
['2026-03-09', '채권만기상환금입금', 531760, 0],
['2026-03-09', '채권만기상환금입금', 247283, 0],
['2026-03-09', '채권만기상환금입금', 946914, 0],
['2026-03-09', '채권만기상환금입금', 62323, 0],
['2026-03-09', '채권만기상환금입금', 1005217, 0],
['2026-03-09', '채권만기상환금입금', 1153989, 0],
['2026-03-09', '채권만기상환금입금', 12062, 0]
]
# DataFrame 변환
df = pd.DataFrame(data, columns=['거래일자', '거래종류', '거래금액', '수수료'])
df['거래일자'] = pd.to_datetime(df['거래일자'])
# 3. 데이터 집계 및 분석
# 일별/거래종류별 합계
daily_summary = df.groupby(['거래일자', '거래종류'])['거래금액'].sum().unstack(fill_value=0)
# 일자별 순현금흐름 및 누적 현금흐름 계산 (투자금 회수 시점 파악)
daily_net_flow = df.groupby('거래일자')['거래금액'].sum()
cumulative_cashflow = daily_net_flow.cumsum()
# 총 투자 결과 요약 출력
total_invested = abs(df[df['거래금액'] < 0]['거래금액'].sum())
total_returned = df[df['거래금액'] > 0]['거래금액'].sum()
total_fee = df['수수료'].sum()
net_profit = total_returned - total_invested - total_fee
print("=== 여천NCC 73-2 투자 결과 요약 ===")
print(f"총 매수 금액: {total_invested:,.0f} 원")
print(f"총 발생 수수료: {total_fee:,.0f} 원")
print(f"총 회수 금액(이자+만기): {total_returned:,.0f} 원")
print(f"순수익: {net_profit:,.0f} 원")
print(f"단순 수익률: {(net_profit / (total_invested + total_fee)) * 100:.2f}%\n")
# 4. 시각화 (그래프 그리기)
fig, ax1 = plt.subplots(figsize=(14, 7))
# 막대 그래프: 일별 현금 흐름 (유출입)
daily_summary.plot(kind='bar', stacked=True, ax=ax1, alpha=0.85, width=0.6)
ax1.set_ylabel('현금 흐름 금액 (원)', fontsize=12)
ax1.set_xlabel('거래 일자', fontsize=12)
ax1.set_title('여천NCC 73-2 채권 현금흐름 및 누적 손익', fontsize=16, fontweight='bold')
ax1.yaxis.set_major_formatter(ticker.FuncFormatter(lambda x, p: format(int(x), ',')))
# x축 날짜 포맷팅 깔끔하게
xtick_labels = [x.strftime('%Y-%m-%d') for x in daily_summary.index]
ax1.set_xticklabels(xtick_labels, rotation=45, ha='right')
ax1.axhline(0, color='black', linewidth=1) # 0원 기준선 추가
ax1.legend(loc='upper left')
# 꺾은선 그래프: 누적 현금흐름 (투자 후 회수까지의 과정)
ax2 = ax1.twinx()
ax2.plot(range(len(cumulative_cashflow)), cumulative_cashflow.values,
color='crimson', marker='o', linewidth=2, markersize=6, label='누적 현금흐름')
ax2.set_ylabel('누적 금액 (원)', color='crimson', fontsize=12)
ax2.yaxis.set_major_formatter(ticker.FuncFormatter(lambda x, p: format(int(x), ',')))
ax2.tick_params(axis='y', labelcolor='crimson')
ax2.legend(loc='upper right')
plt.grid(axis='y', linestyle='--', alpha=0.5)
fig.tight_layout()
plt.show()