여천 NCC 73-2

거래일자거래종류종목명거래수량거래금액수수료
2025.12.09사채이자입금여천NCC 73-2020,5490
2025.09.09사채이자입금여천NCC 73-2016,5050
2025.09.30장내당일채권매수대금출금여천NCC 73-20737,025730
2025.08.18장내당일채권매수대금출금여천NCC 73-20898,131890
2025.08.14장내당일채권매수대금출금여천NCC 73-201,019,5201,010.00
2025.08.12장내당일채권매수대금출금여천NCC 73-201,079,1311,070.00
2025.08.11장내당일채권매수대금출금여천NCC 73-2011,27910
2026.03.09채권만기상환금입금여천NCC 73-20531,7600
2026.03.09채권만기상환금입금여천NCC 73-20247,2830
2026.03.09채권만기상환금입금여천NCC 73-20946,9140
2026.03.09채권만기상환금입금여천NCC 73-2062,3230
2026.03.09채권만기상환금입금여천NCC 73-201,005,2170
2026.03.09채권만기상환금입금여천NCC 73-201,153,9890
2026.03.09채권만기상환금입금여천NCC 73-2012,0620
  • 원금: 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()

댓글 남기기

이 사이트는 Akismet을 사용하여 스팸을 줄입니다. 댓글 데이터가 어떻게 처리되는지 알아보세요.

위로 스크롤