인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

김성현님의 프로필 이미지

작성한 질문수

파이썬 주식 매매 봇으로 주식시장 자동사냥하기

4.5.3 전략과 벤치마크 성과지표 비교

4.5.3 total_value_pct 구할 때 -1 이 왜 필요한가요?

해결된 질문

작성

·

91

0

강의를 보면, total_return_pct-1 을 한 후 * 100 을 해서 수익률을 구하는데요, 그래프로 시각화 했을 때 시작 가격을 1이라고 하면, 그래프의 마지막이 4 와 5 사이에 있는 것 같아 이상하다는 생각이 들었습니다.

 

제가 생각한 경우의 수는 2가지인데요.

 

  1. 이전에 복리 수익률 등을 계산할 때, 1.xxx 식으로 수익률이 계산되기 때문에 이를 정제하는 과정에서 -1 을 하였고, 이와 같은 로직으로 그대로 구현(헷갈림 이슈)

  2. 1 이라는 가격에 사서 4.74 의 가격이 되었다면, 전체 자산 비율은 474% 가 늘어난 것이 맞지만, 기존에 1이 있었기 때문에 순 자산이 늘어난 비율은 3.74 로 고려

위와같이 두 가지입니다.

 

어떤 것이 맞는 것일까요? 혹시 다른 관점이시라면, 공유해주시면 감사하겠습니다.

 

개발만 해보고 수학적 이론을 제대로 접목시키는 것은 이번이 처음이라 헷갈리는 부분들이 많네요.🙂

강의 잘 듣고 있습니다. 감사합니다.

스크린샷 2025-01-31 오후 4.36.58.png

 

답변 2

0

MoneyPouch님의 프로필 이미지
MoneyPouch
지식공유자

안녕하세요, 머니파우치입니다.

말씀주신 항목 중 두 번째가 더 정확합니다🙂 어떤 종목이 1(시작가격)에서 시작해 4.74(최종가격)의 가격이 되었다면, 해당 종목의 수익률은 "최종가격/시작가격 - 1" 으로 계산하게 됩니다.

이는 시작가격 자체는 수익률에 해당하지 않고, 시작가격에서 최종가격까지의 증가량만 수익률에 해당하기 때문입니다. 즉, 위 식을 풀어써보면 "(최종가격 - 시작가격)/시작가격"과 동일합니다.

 

단순 수식만 봐선 1을 빼야하나 아닌가 아직 조금 헷갈리죠ㅎㅎ 작은 숫자로 계산해보면 조금 편하게 이해할 수 있을 것 같습니다.

예를 들어, 1(시작가격)에서 시작해 1.2(최종가격)의 가격이 되었다면, 직관적으로 이 종목의 수익률은 20%라고 알 수 있습니다. 여기에 (최종가격-시작가격)/시작가격 수식을 적용한다면 (1.2-1)/1 = 0.2 = 20%로 계산됩니다. 즉, 1을 뺀 값이 수익률임을 알 수 있습니다.



혹시 더 궁금하신게 있다면 알려주세요! 감사합니다.

0

인프런 AI 인턴님의 프로필 이미지

안녕하세요, 인프런 AI 인턴입니다. 김성현님.

질문하신 total_return_pct - 1의 의미에 대해서 설명드리겠습니다.

  1. 수익률 계산 방식: 일반적으로 수익률을 계산할 때는 초기 자본 대비 얼마나 증가했는지를 나타내기 위해 최종 가치를 초기 가치로 나눈 후, 1을 빼고 100을 곱합니다. 이때 -1을 하는 부분은 ‘초기 자본에 대한 증가율’을 구하기 위한 것입니다. 즉, 초기 투자 대비 얼마나 더 늘어났는지를 계산하기 위하여, 초기 값 1을 빼서 계산합니다. 이를 통해 순수한 수익률을 구할 수 있습니다.

  2. 그래프 시각화의 이해: 김성현님이 말씀하신 두 번째 경우가 맞습니다. 초기 값이 1일 경우, 예를 들어 4.74가 되었다고 하면 이는 총 374%의 수익률 증가를 의미하며, 이는 (최종 값 4.74 - 초기 값 1) / 초기 값 1 * 100 = 374%와 같습니다. 이는 초기 투자한 1을 제외한 순수한 수익 증가율을 나타냅니다.

개발 과정에서 수학적 개념을 접목시키는 것은 충분히 헷갈릴 수 있는 부분입니다. 강의를 통해 많이 배우고 계신 것 같아 다행입니다. 앞으로도 많은 도움 되시길 바랍니다. 감사합니다. 😊

The image shows a screenshot of a Python script calculating and printing the total return percentage of a stock using the “Buy & Hold” strategy. Here’s a breakdown of what the code does:1. **Calculating Total Value Ratio:** - `bm_daily_total_value` is calculated by dividing closing prices, where `d[‘close’].values` appears to be a series of close prices.2. **Calculating Total Return Percentage:** - `total_return_pct` computes the return by dividing the last value by the first value of `bm_daily_total_value`. - The percentage return is printed in a formatted way using two decimal places.3. **Output:** - A plot is likely generated of `bm_daily_total_value`. - The last and first values of `bm_daily_total_value` are printed. - The computed total return percentage is printed, showing a total return of `474.04%`. The script seems related to financial data analysis, specifically for evaluating investment performance.