<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>관성을 이기는 데이터</title>
    <link>https://songseungwon.tistory.com/</link>
    <description>7년차 개발 PO. 생산성 향상을 위한 데이터 프로덕트를 만들어요.</description>
    <language>ko</language>
    <pubDate>Thu, 6 Aug 2026 22:45:14 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>PO Wade</managingEditor>
    <image>
      <title>관성을 이기는 데이터</title>
      <url>https://tistory1.daumcdn.net/tistory/3293246/attach/113d6772f5ca401597d4a8e0c7605f4e</url>
      <link>https://songseungwon.tistory.com</link>
    </image>
    <item>
      <title>국내/해외 ETF 매매시 일반 위탁 계좌 vs 절세 계좌(연금저축, IRP, ISA) 세금 차이 정리</title>
      <link>https://songseungwon.tistory.com/157</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;ETF 매매 시 세금 (&lt;i&gt;*배당소득세는 원천징수&lt;/i&gt;)&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;일반 위탁 계좌&lt;/b&gt;&lt;br /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;국내상장 국내주식형 ETF:
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;매도 -&amp;gt; 증권거래세 X&lt;/li&gt;
&lt;li&gt;매매차익 -&amp;gt; &lt;span style=&quot;color: #006dd7;&quot;&gt;비과세&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;배당소득 -&amp;gt; 배당소득세 15.4%&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;국내상장 국내주식형 외 ETF:
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;매도 -&amp;gt; 증권거래세 X&lt;/li&gt;
&lt;li&gt;매매차익 -&amp;gt; 배당소득세 15.4%&lt;/li&gt;
&lt;li&gt;배당소득 -&amp;gt; 배당소득세 15.4%&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;해외상장 ETF(&lt;i&gt;*위탁계좌 only&lt;/i&gt;):
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;매도 -&amp;gt; 증권거래세 X (*&lt;i&gt;SEC fee 소액 발생 0.00x 수준&lt;/i&gt;)&lt;/li&gt;
&lt;li&gt;매매차익 -&amp;gt; &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;매매차익&lt;/span&gt; 250만원&lt;/span&gt; 초과분 양도소득세 &lt;span style=&quot;color: #ee2323;&quot;&gt;22%&lt;/span&gt; (&lt;i&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;*분리과세&lt;/span&gt;&lt;/i&gt;)&lt;/li&gt;
&lt;li&gt;매당소득 -&amp;gt; 배당소득세 15.4%&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;절세 계좌:&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;연금 계좌(&lt;i&gt;연금저축, IRP&lt;/i&gt;):
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;연금수령 -&amp;gt; 연금소득세 &lt;span style=&quot;color: #006dd7;&quot;&gt;3.3 ~ 5.5%&lt;/span&gt; (&lt;i&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;*분리과세&lt;/span&gt;&lt;/i&gt;)&lt;/li&gt;
&lt;li&gt;연금 외 수령 -&amp;gt; 기타 소득세&lt;span style=&quot;color: #ee2323;&quot;&gt; 16.5%&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;연말정산 &lt;span style=&quot;color: #006dd7;&quot;&gt;세액공제&lt;/span&gt; -&amp;gt; 납입금 내 최대 600만 원 한도(&lt;i&gt;*2023년부터 400-&amp;gt;600 증액&lt;/i&gt;)에 대해 &lt;span style=&quot;color: #006dd7;&quot;&gt;13.2%&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;i&gt;*16.5% if under 총 급여 5,500만 원(or 종합소득 4,500만 원)&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;&lt;i&gt;*연말정산 환급액 = 기납부세액 - (소득 공제 후 산출 세액 &lt;span style=&quot;color: #006dd7;&quot;&gt;- 세액공제액&lt;/span&gt;)&lt;/i&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;i&gt;! 세액 공제액은 &lt;i&gt;소득 공제 후 산출 세액을 초과할 수 없음 (&lt;i&gt;소득 공제 후 산출 세액&lt;span&gt; &amp;gt;=&lt;/span&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&amp;nbsp;세액공제액&lt;span style=&quot;color: #333333;&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/i&gt;&lt;/i&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;종합자산관리 계좌(&lt;i&gt;중개형 ISA&lt;/i&gt;):
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;중도해지 -&amp;gt; &amp;nbsp;위탁 계좌 과세와 동일&lt;/li&gt;
&lt;li&gt;만기해지 -&amp;gt; 손익통산(*&lt;i&gt;매매차익+분배금&lt;/i&gt;) &lt;span style=&quot;color: #006dd7;&quot;&gt;200만 원(*서민형&lt;/span&gt;&lt;i&gt; 400만 원)&lt;/i&gt; 초과분 &lt;span style=&quot;color: #006dd7;&quot;&gt;9.9%&lt;/span&gt; (&lt;i&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;*분리과세&lt;/span&gt;&lt;/i&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참고)&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://www.samsungfund.com/etf/insight/newsroom/view.do?seqn=62753&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span style=&quot;background-color: #f1f3f8; color: #111111; text-align: start;&quot;&gt;ISA&amp;middot;연금저축&amp;middot;IRP '절세계좌 3종&amp;rsquo; 혜택 하나씩 비교해 보자면?&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://toss.im/tossfeed/article/etf-and-tax&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span style=&quot;color: #111111;&quot;&gt;&lt;span style=&quot;caret-color: #111111; background-color: #f1f3f8;&quot;&gt;살 때보다 팔 때 알아야 할, ETF 세금의 모든 것&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://casenote.kr/법령/소득세법/제61조&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span style=&quot;color: #111111;&quot;&gt;&lt;span style=&quot;caret-color: #111111; background-color: #f1f3f8;&quot;&gt;소득세법 제61조(세액감면액 및 세액공제액의 산출세액 초과 시의 적용방법 등)&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>2. 도메인/자산운용</category>
      <category>etf</category>
      <category>IRP</category>
      <category>ISA</category>
      <category>산출세액</category>
      <category>세액공제</category>
      <category>소득공제</category>
      <category>소득세</category>
      <category>연금저축</category>
      <category>연말정산</category>
      <category>절세계좌</category>
      <author>PO Wade</author>
      <guid isPermaLink="true">https://songseungwon.tistory.com/157</guid>
      <comments>https://songseungwon.tistory.com/157#entry157comment</comments>
      <pubDate>Tue, 10 Jun 2025 18:54:10 +0900</pubDate>
    </item>
    <item>
      <title>[Dolt + Python + MySQL] 금융 분석을 위한 재무제표 데이터베이스 구축과 실행</title>
      <link>https://songseungwon.tistory.com/156</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;재무제표 데이터를 확보할 때 yfinance를 많이 사용하며, 긴 시계열에 대해서는 공시자료를 스크래핑하여 필요한 table 영역만 적절히 포멧팅할 수도 있다. 가장 좋은 건 yfinance 같은 무료 api를 활용해 적정 주기마다 데이터를 가져와 적재해 두는 것인데, 상장된 모든 주가 재무정보를 개인 PC나 클라우드 서버에 저장해 두는 건 개인으로서 여간 부담되는 일이 아니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때, 약소하게나마 대안으로 사용해 볼 수 있는 것이 다른 사람들이 공개해 둔 DB인데, DropBox나 DoltHub가 대표적이다. 코드가 익숙하다면 DoltHub에서 매우 쉽고 빠르게 DB 전체를 Pull 할 수 있으며 아래 예시로 사용한 1.26 GB짜리 재무데이터를 수 초 내에 모두 다운로드 가능하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;DoltHub는 코드 버전관리를 위해 Git을 사용하는 것처럼, SQL DB의 버전관리 목적으로 이용할 수 있다. fork, clone, branch, merge, push, pull 등 git command를 그대로 차용하기 때문에 git에 익숙하다면 어렵지 않게 적응이 가능하다. Open Source라 &lt;a href=&quot;https://github.com/dolthub/dolt&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Github에도 코드베이스가 공개되어 있으며&lt;/a&gt; 여타 Open Source가 그런 것처럼 Enterprise Support 등에 대해 별도의 가격 플랜은 존재한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2488&quot; data-origin-height=&quot;2088&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bKUsNo/btsNPFndKpq/ggz4gWxJObKFq1B7E20l71/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bKUsNo/btsNPFndKpq/ggz4gWxJObKFq1B7E20l71/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bKUsNo/btsNPFndKpq/ggz4gWxJObKFq1B7E20l71/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbKUsNo%2FbtsNPFndKpq%2Fggz4gWxJObKFq1B7E20l71%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2488&quot; height=&quot;2088&quot; data-origin-width=&quot;2488&quot; data-origin-height=&quot;2088&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예시 저장소는 미국 기업을 대상으로 하며, 상장된 모든 기업은 아니지만 상당히 많은 기업의 10년 이상 적재된 raw data를 받아볼 수 있다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;1702&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bAoGOw/btsNP0kRpHa/fbByGK9BKkuzfYpEtNDC3k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bAoGOw/btsNP0kRpHa/fbByGK9BKkuzfYpEtNDC3k/img.png&quot; data-alt=&quot;post-no-preference / earnings&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bAoGOw/btsNP0kRpHa/fbByGK9BKkuzfYpEtNDC3k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbAoGOw%2FbtsNP0kRpHa%2FfbByGK9BKkuzfYpEtNDC3k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3000&quot; height=&quot;1702&quot; data-origin-width=&quot;3000&quot; data-origin-height=&quot;1702&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;post-no-preference / earnings&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용법은 Github이나 Dolt Document에서 간단히 살펴볼 수 있으니 각 명령어에 대한 설명은 공식 문서를 참고하길 바라며, 본문에서는 필요한 데이터를 추출하는 프로세스만 가볍게 다뤄보겠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 Dolt는 Git과 같은 버전관리 도구이므로, 버전관리 대상 폴더를 지정하여 init 시키는 것이 선행되어야 한다. 만약, Dolt를 현재 작업 중인 PC에서 처음 사용한다면 DoltHub에 가입하고 가입 정보를 global config로 설정해줘야 한다. Git의 Remote 저장소를 GitHub로 설정하기 위한 작업과 동일하다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1152&quot; data-origin-height=&quot;338&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c3AYdQ/btsNQPJmgD2/SHeGMKprtV1goDKdgmJOr1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c3AYdQ/btsNQPJmgD2/SHeGMKprtV1goDKdgmJOr1/img.png&quot; data-alt=&quot;user.email, user.name 뒤에는 각자 계정 정보를 입력한다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c3AYdQ/btsNQPJmgD2/SHeGMKprtV1goDKdgmJOr1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc3AYdQ%2FbtsNQPJmgD2%2FSHeGMKprtV1goDKdgmJOr1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1152&quot; height=&quot;338&quot; data-origin-width=&quot;1152&quot; data-origin-height=&quot;338&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;user.email, user.name 뒤에는 각자 계정 정보를 입력한다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;dolt init 명령어를 수행하면 .dolt 폴더와 함께 버전관리에 필요한 파일들이 생성되고 작업 폴더에서 SQL DB의 변경된 버전을 저장하고, 원격 저장소에 밀어 넣는 등의 작업을 수행할 수 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러나 우리는 필요한 데이터를 가져오기만 하면 되기 때문에 dolt clone 명령어와 함께 필요한 repository를 지정해주면, 현재 경로 하위에 earnings라는 폴더가 생성되고, 해당 폴더 내 .dolt 폴더 역시 확인할 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1444&quot; data-origin-height=&quot;268&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c6gK7l/btsNQFzXLyi/SXy07qzIZDsEHsuWd2xUW1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c6gK7l/btsNQFzXLyi/SXy07qzIZDsEHsuWd2xUW1/img.png&quot; data-alt=&quot;위 예시에서는 명령어 실행을 위해 임시 폴더를 사용하였음&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c6gK7l/btsNQFzXLyi/SXy07qzIZDsEHsuWd2xUW1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc6gK7l%2FbtsNQFzXLyi%2FSXy07qzIZDsEHsuWd2xUW1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1444&quot; height=&quot;268&quot; data-origin-width=&quot;1444&quot; data-origin-height=&quot;268&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;위 예시에서는 명령어 실행을 위해 임시 폴더를 사용하였음&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터가 잘 가져왔다면 dolt를 활용해 쿼리를 실행해본다. mysql이 설치되어 있다면 기본적으로 mysql, information_schema 2개의 database는 보일 것이고, 추가된 earnings database와 그 하위 table을 확인할 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1352&quot; data-origin-height=&quot;248&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JnWuH/btsNQ2IsN4V/YkudZqCzTrrXDRO4mzqoK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JnWuH/btsNQ2IsN4V/YkudZqCzTrrXDRO4mzqoK0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JnWuH/btsNQ2IsN4V/YkudZqCzTrrXDRO4mzqoK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJnWuH%2FbtsNQ2IsN4V%2FYkudZqCzTrrXDRO4mzqoK0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1352&quot; height=&quot;248&quot; data-origin-width=&quot;1352&quot; data-origin-height=&quot;248&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1414&quot; data-origin-height=&quot;526&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nS0zi/btsNP83JkTp/ajjtEMVAiXaZ2ekJCTqoJ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nS0zi/btsNP83JkTp/ajjtEMVAiXaZ2ekJCTqoJ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nS0zi/btsNP83JkTp/ajjtEMVAiXaZ2ekJCTqoJ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnS0zi%2FbtsNP83JkTp%2FajjtEMVAiXaZ2ekJCTqoJ1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1414&quot; height=&quot;526&quot; data-origin-width=&quot;1414&quot; data-origin-height=&quot;526&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래는 데이터를 일부 추출한 예시다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1378&quot; data-origin-height=&quot;332&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bqPy4f/btsNPiMCZOW/BHi1jcKF8dYWPUvy6wnkG0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bqPy4f/btsNPiMCZOW/BHi1jcKF8dYWPUvy6wnkG0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bqPy4f/btsNPiMCZOW/BHi1jcKF8dYWPUvy6wnkG0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbqPy4f%2FbtsNPiMCZOW%2FBHi1jcKF8dYWPUvy6wnkG0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1378&quot; height=&quot;332&quot; data-origin-width=&quot;1378&quot; data-origin-height=&quot;332&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우리는 sql 서버를 dolt로 띄우고, 띄운 서버를 python으로 접근해 데이터를 쿼리 할 것이다. dolt sql-server 명령어를 수행하면 sql 로컬 서버를 기본 포트 3306번으로 띄울 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1802&quot; data-origin-height=&quot;258&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cHbsGq/btsNPdkGynO/518k9aZi9YLeTucLjkr5b0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cHbsGq/btsNPdkGynO/518k9aZi9YLeTucLjkr5b0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cHbsGq/btsNPdkGynO/518k9aZi9YLeTucLjkr5b0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcHbsGq%2FbtsNPdkGynO%2F518k9aZi9YLeTucLjkr5b0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1802&quot; height=&quot;258&quot; data-origin-width=&quot;1802&quot; data-origin-height=&quot;258&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;python에서는 mysql-connector-python 패키지를 설치한 다음 아래와 같이 명령어를 수행하면 SQL 서버에 진입 가능하고, pandas read_sql 함수를 통해 쿼리가 동일하게 실행되어야 한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1876&quot; data-origin-height=&quot;1098&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bYxbcQ/btsNPyWlA7m/MPhh5o5yhd3yiz3mLynr4k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bYxbcQ/btsNPyWlA7m/MPhh5o5yhd3yiz3mLynr4k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bYxbcQ/btsNPyWlA7m/MPhh5o5yhd3yiz3mLynr4k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbYxbcQ%2FbtsNPyWlA7m%2FMPhh5o5yhd3yiz3mLynr4k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1876&quot; height=&quot;1098&quot; data-origin-width=&quot;1876&quot; data-origin-height=&quot;1098&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2434&quot; data-origin-height=&quot;1608&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cATj4w/btsNPGNdLGM/9Iuq9jxangHvSYyZvStlc0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cATj4w/btsNPGNdLGM/9Iuq9jxangHvSYyZvStlc0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cATj4w/btsNPGNdLGM/9Iuq9jxangHvSYyZvStlc0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcATj4w%2FbtsNPGNdLGM%2F9Iuq9jxangHvSYyZvStlc0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2434&quot; height=&quot;1608&quot; data-origin-width=&quot;2434&quot; data-origin-height=&quot;1608&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;이제 자유롭게 필요한 데이터를 가공해 분석에 활용할 수 있는 상태다. 위와 같이 DoltHub로 기반 DB를 clone 해서 사용할 수도 있고, yfinance 등 다른 api를 통해 주기적으로 필요한 데이터만 가공, 적재할 수도 있다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;어떤 방식이든 결국 원하는 재무제표 정보를 전기간 내 손실 없이 자체 관리하는 것이 필요해진다. 금융 분석을 위한 데이터를 온전히 외부에 의존하기에는 어떤 api든 높은 비용이 발생하게 되므로 Local Server에 데이터를 적재하고 후처리 하는 일련의 데이터 파이프라인 구축 작업을 고려해야 한다. 이때, DoltHub를 사용해 보면 어떤 구조로 ERD를 구성하고 데이터를 관리해야 하는지 감을 잡을 수 있으니 첫 선택지로 좋은 옵션이다.&lt;/span&gt;&lt;/p&gt;</description>
      <category>1. 기술/서버, 데이터, 클라우드</category>
      <category>dolt</category>
      <category>dolthub</category>
      <category>github</category>
      <category>mysql</category>
      <category>Python</category>
      <category>금융데이터</category>
      <category>금융데이터분석</category>
      <category>데이터베이스</category>
      <category>데이터분석</category>
      <category>데이터엔지니어링</category>
      <author>PO Wade</author>
      <guid isPermaLink="true">https://songseungwon.tistory.com/156</guid>
      <comments>https://songseungwon.tistory.com/156#entry156comment</comments>
      <pubDate>Fri, 9 May 2025 07:55:05 +0900</pubDate>
    </item>
    <item>
      <title>[파이썬 퀀트 투자] 벨류에이션 멀티플 기반 피어 그룹 스크리닝</title>
      <link>https://songseungwon.tistory.com/155</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;이번 글에서는 계량적 방법을 활용해 타겟 기업의 유사 그룹을 추출하고, 추출한 그룹 내 벨류에이션 멀티플에 대한 상대평가를 진행해 본다. 그전에, 동일한 스타일로 분석 대상 타겟 기업을 선정하는 것은 본 블로그의 &lt;a href=&quot;https://songseungwon.tistory.com/154&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;[파이썬 퀀트 투자] 좋은 기업을 찾아보자 - 미국 기술주 멀티플 EDA&lt;/a&gt;에서 확인할 수 있다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. 데이터셋 준비&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;항상 데이터셋을 준비하는 것이 먼저다. 분석 대상 기업은 Block Inc(Ticker: XYZ, 이하 Block)로, Software &amp;amp; Services 산업에 속하니 해당 산업군 내 모든 티커를 가져온 다음 재무제표를 추출할 것이다. 재무제표는 이후 멀티플 계산에 사용된다.&lt;/p&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;1-1. 산업군 티커 추출&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Ticker는 야후 파이낸스 api로 쿼리 할 수 있으며, 직접 만든 모듈을 사용할 것이다. 작성한 코드는 &lt;a href=&quot;https://github.com/sw-song/quant_ans/blob/main/utils/tickers.py&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;github repository 내 utils 폴더&lt;/a&gt;에 공개해 두었다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1588&quot; data-origin-height=&quot;288&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wNah5/btsNPHFibXR/3e6uX0eCZdA2XJOa3FLNtk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wNah5/btsNPHFibXR/3e6uX0eCZdA2XJOa3FLNtk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wNah5/btsNPHFibXR/3e6uX0eCZdA2XJOa3FLNtk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwNah5%2FbtsNPHFibXR%2F3e6uX0eCZdA2XJOa3FLNtk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1588&quot; height=&quot;288&quot; data-origin-width=&quot;1588&quot; data-origin-height=&quot;288&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2142&quot; data-origin-height=&quot;950&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bKzJeN/btsNQpRCI2p/0sTtnQk3oqu5OoPzB1tP51/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bKzJeN/btsNQpRCI2p/0sTtnQk3oqu5OoPzB1tP51/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bKzJeN/btsNQpRCI2p/0sTtnQk3oqu5OoPzB1tP51/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbKzJeN%2FbtsNQpRCI2p%2F0sTtnQk3oqu5OoPzB1tP51%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2142&quot; height=&quot;950&quot; data-origin-width=&quot;2142&quot; data-origin-height=&quot;950&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;1-2. Historical 재무제표 추출&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음, 재무제표 데이터를 가져온다. 아래 코드는 개인 local database에 저장된 데이터를 직접 쿼리 하는 예시인데 이러한 방대한 데이터를 개인적으로 DB화 해두고 있는 경우는 흔치 않을 것이니 추후 공개된 데이터를 쉽게 개인 서버로 카피하는 방안에 대해서도 다뤄보겠다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2078&quot; data-origin-height=&quot;1306&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cEp3Ty/btsNPxC33IJ/HBceOwFakGByvaRGSn3VvK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cEp3Ty/btsNPxC33IJ/HBceOwFakGByvaRGSn3VvK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cEp3Ty/btsNPxC33IJ/HBceOwFakGByvaRGSn3VvK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcEp3Ty%2FbtsNPxC33IJ%2FHBceOwFakGByvaRGSn3VvK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2078&quot; height=&quot;1306&quot; data-origin-width=&quot;2078&quot; data-origin-height=&quot;1306&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2166&quot; data-origin-height=&quot;826&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pwj7X/btsNPGsMy3X/k4of3DaSokGzlgKNL6EtU1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pwj7X/btsNPGsMy3X/k4of3DaSokGzlgKNL6EtU1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pwj7X/btsNPGsMy3X/k4of3DaSokGzlgKNL6EtU1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fpwj7X%2FbtsNPGsMy3X%2Fk4of3DaSokGzlgKNL6EtU1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2166&quot; height=&quot;826&quot; data-origin-width=&quot;2166&quot; data-origin-height=&quot;826&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Local DB에 만들어둔 데이터가 없다면 위 작업은 불가능하다. 대신 야후 파이낸스를 이용하는 방법도 있다. 탐색 기간이 짧을 뿐, 시장에서 거래 중인 모든 기업의 최근 5년간 재무제표를 아래와 같이 확보할 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2182&quot; data-origin-height=&quot;1690&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c4zc1u/btsNQW2tDFW/jLVJlYxvxDeiUTqrKC6rL0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c4zc1u/btsNQW2tDFW/jLVJlYxvxDeiUTqrKC6rL0/img.png&quot; data-alt=&quot;e.g. 현금흐름표&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c4zc1u/btsNQW2tDFW/jLVJlYxvxDeiUTqrKC6rL0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc4zc1u%2FbtsNQW2tDFW%2FjLVJlYxvxDeiUTqrKC6rL0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2182&quot; height=&quot;1690&quot; data-origin-width=&quot;2182&quot; data-origin-height=&quot;1690&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;e.g. 현금흐름표&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2096&quot; data-origin-height=&quot;764&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/MnutK/btsNOmoomdp/AlIrq9ofGxbjrhd3NOgUPk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/MnutK/btsNOmoomdp/AlIrq9ofGxbjrhd3NOgUPk/img.png&quot; data-alt=&quot;e.g. 재무상태표&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/MnutK/btsNOmoomdp/AlIrq9ofGxbjrhd3NOgUPk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMnutK%2FbtsNOmoomdp%2FAlIrq9ofGxbjrhd3NOgUPk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2096&quot; height=&quot;764&quot; data-origin-width=&quot;2096&quot; data-origin-height=&quot;764&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;e.g. 재무상태표&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;1-3. 산업군 필터링&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;재무제표 데이터를 앞서 추출한 티커 목록으로 필터링한다. 산업군마다 멀티플의 양상이 상이하므로, 동일 산업군 데이터만 가지고 유사 그룹을 추출하기 위함이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;4252&quot; data-origin-height=&quot;894&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c9r5Zr/btsNQWnQc7a/vembutJpOWrsTTs5ch6MR0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c9r5Zr/btsNQWnQc7a/vembutJpOWrsTTs5ch6MR0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c9r5Zr/btsNQWnQc7a/vembutJpOWrsTTs5ch6MR0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc9r5Zr%2FbtsNQWnQc7a%2FvembutJpOWrsTTs5ch6MR0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;4252&quot; height=&quot;894&quot; data-origin-width=&quot;4252&quot; data-origin-height=&quot;894&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;4182&quot; data-origin-height=&quot;860&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bSYhTR/btsNOlJMJRW/fLqTApCNmQhKuUA17IN7H0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bSYhTR/btsNOlJMJRW/fLqTApCNmQhKuUA17IN7H0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bSYhTR/btsNOlJMJRW/fLqTApCNmQhKuUA17IN7H0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbSYhTR%2FbtsNOlJMJRW%2FfLqTApCNmQhKuUA17IN7H0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;4182&quot; height=&quot;860&quot; data-origin-width=&quot;4182&quot; data-origin-height=&quot;860&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;4484&quot; data-origin-height=&quot;1168&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4vtbk/btsNQQBoacm/WdZCb36bghSwsU0c0Jy7sk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4vtbk/btsNQQBoacm/WdZCb36bghSwsU0c0Jy7sk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4vtbk/btsNQQBoacm/WdZCb36bghSwsU0c0Jy7sk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4vtbk%2FbtsNQQBoacm%2FWdZCb36bghSwsU0c0Jy7sk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;4484&quot; height=&quot;1168&quot; data-origin-width=&quot;4484&quot; data-origin-height=&quot;1168&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. 산업군 통계&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;필요한 데이터는 모두 만들었고, 드디어 통계분석을 해볼 수 있다.&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;2-1. Total Asset&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;동일 산업군의 자산 추이는 어떨까? 히스토그램으로 뽑아보았을 때 자산 규모 기준 하위 10% 그룹이 절대다수(약 97%)를 차지한다. 타겟 기업 Block 역시 여기에 속하지만, 결코 낮은 수준은 아니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2508&quot; data-origin-height=&quot;1236&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/buAIe4/btsNOJYkltV/gpHr5DMxgkOeSg0bFNaSEk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/buAIe4/btsNOJYkltV/gpHr5DMxgkOeSg0bFNaSEk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/buAIe4/btsNOJYkltV/gpHr5DMxgkOeSg0bFNaSEk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbuAIe4%2FbtsNOJYkltV%2FgpHr5DMxgkOeSg0bFNaSEk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2508&quot; height=&quot;1236&quot; data-origin-width=&quot;2508&quot; data-origin-height=&quot;1236&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;2-2. Total Equity&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자기 자본의 경우 음수인 영역이 꽤나 비중 있게 보인다. Block의 위치는 앞서 봤던 자산 규모를 고려할 때 자본의 비중은 상대적으로 높다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2694&quot; data-origin-height=&quot;1238&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Ar9xF/btsNQ2VS7ht/J9A6SXXGd3GdIVKa7Jl5iK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Ar9xF/btsNQ2VS7ht/J9A6SXXGd3GdIVKa7Jl5iK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Ar9xF/btsNQ2VS7ht/J9A6SXXGd3GdIVKa7Jl5iK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAr9xF%2FbtsNQ2VS7ht%2FJ9A6SXXGd3GdIVKa7Jl5iK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2694&quot; height=&quot;1238&quot; data-origin-width=&quot;2694&quot; data-origin-height=&quot;1238&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;2-3. Income Statement&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현금 흐름은 매출, 총이익, 순이익 세 지표를 함께 나열했는데, Block은 모두 산업 평균을 웃도는 수준이다. 점선 좌측부터 우측으로 갈수록 &quot;최근 지표&quot;다. 현금 흐름이 지속적으로 개선되는 모양새다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2898&quot; data-origin-height=&quot;1392&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1j7ZZ/btsNQmHmDBt/SyQGiqK1yzJIz9TyvoGyck/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1j7ZZ/btsNQmHmDBt/SyQGiqK1yzJIz9TyvoGyck/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1j7ZZ/btsNQmHmDBt/SyQGiqK1yzJIz9TyvoGyck/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1j7ZZ%2FbtsNQmHmDBt%2FSyQGiqK1yzJIz9TyvoGyck%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2898&quot; height=&quot;1392&quot; data-origin-width=&quot;2898&quot; data-origin-height=&quot;1392&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3. 유사 그룹 비교&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;산업에서 더 깊이 들어가 재무제표 멀티플이 Block과 유사한 피어 그룹을 대상으로 분석해보려 한다. 이를 위해 멀티플을 정의하고, 멀티플 갭이 +/- 20% 이내에 들어오는 기업을 유사 그룹으로 분류하도록 하자.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;3-1. 유사 그룹 추출&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;멀티플은 매출 대비 총이익, 매출 대비 순이익 2가지로 놓고, 적정 오차(20%) 수준에 들어오는 기업들을 추출한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2530&quot; data-origin-height=&quot;1292&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/r03ux/btsNQD28wID/APgoVvzyKYng1AG3ggraY1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/r03ux/btsNQD28wID/APgoVvzyKYng1AG3ggraY1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/r03ux/btsNQD28wID/APgoVvzyKYng1AG3ggraY1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fr03ux%2FbtsNQD28wID%2FAPgoVvzyKYng1AG3ggraY1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2530&quot; height=&quot;1292&quot; data-origin-width=&quot;2530&quot; data-origin-height=&quot;1292&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;340개 기업 중 총 19개 기업이 유사 그룹으로 추출되었다. 스크리닝 대상을 좁히는 전략으로 충분해 보인다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2412&quot; data-origin-height=&quot;510&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rfNgi/btsNOTMZxis/emfPL7ccucmKaNA6knCKc1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rfNgi/btsNOTMZxis/emfPL7ccucmKaNA6knCKc1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rfNgi/btsNOTMZxis/emfPL7ccucmKaNA6knCKc1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrfNgi%2FbtsNOTMZxis%2FemfPL7ccucmKaNA6knCKc1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2412&quot; height=&quot;510&quot; data-origin-width=&quot;2412&quot; data-origin-height=&quot;510&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;3-2. 시가 총액 비교&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;유사 기업들의 현재 주가와 주식 유통량으로 시가총액을 계산한 후 연도별 시가총액 추이를 그려보았다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2674&quot; data-origin-height=&quot;1196&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bYyviM/btsNPZsxh7e/wqML46JdrI0DXMsWstw331/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bYyviM/btsNPZsxh7e/wqML46JdrI0DXMsWstw331/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bYyviM/btsNPZsxh7e/wqML46JdrI0DXMsWstw331/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbYyviM%2FbtsNPZsxh7e%2FwqML46JdrI0DXMsWstw331%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2674&quot; height=&quot;1196&quot; data-origin-width=&quot;2674&quot; data-origin-height=&quot;1196&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Block은 한 때, 시가총액이 유사 그룹 내 가장 높았으며 현재 평균 수준으로 돌아온 상태다. 다른 기업들과는 시총 추이가 상이하므로 이런 기업을 분석할 때에는 반드시 이상 구간의 이벤트를 정성적으로 확인할 필요가 있다. 다만 해당 내용은 본문의 의도에서는 많이 벗어나는 내용이므로 제외한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2904&quot; data-origin-height=&quot;1590&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bNOxUi/btsNQFGFPCu/mZKkKWAJwYPss2KPieipL1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bNOxUi/btsNQFGFPCu/mZKkKWAJwYPss2KPieipL1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bNOxUi/btsNQFGFPCu/mZKkKWAJwYPss2KPieipL1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbNOxUi%2FbtsNQFGFPCu%2FmZKkKWAJwYPss2KPieipL1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2904&quot; height=&quot;1590&quot; data-origin-width=&quot;2904&quot; data-origin-height=&quot;1590&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;3-3 시가 총액 상위 피어 EV/EBITDA 비교&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;EV(Enterprise Value)는 이 기업을 통째로 인수할 때 드는 비용으로, 시가총액에서 부채를 제하고 보유 현금을 더해서 계산할 수 있다. 멀티플은 항상 비율로 계산해야 적절한 상대 평가가 이루어질 수 있기 때문에 EV와 함께 보편적으로 사용되는 EBITDA를 기준 척도로 사용하도록 하자. 참고로 EBITDA는 이자비용, 감가상각비, 세금 등을 제한 영업이익이므로 해당 기업의 실질적인 이익 창출 능력을 투명하게 보여주는 지표로써 멀티플 계산에 흔히 사용된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 멀티플을 활용해 피어 그룹 내 시총 상위 기업들 간 벨류에이션 수준을 비교해 보도록 하자. 그룹을 쪼개고 붙여가며 비교 평가하는 것은 묶음을 달리 했을 때 그 군집에 대한 인사이트가 달라지기 때문에 이를 얻고자 함이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2566&quot; data-origin-height=&quot;1716&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/r8qEE/btsNOfQmqZC/jY28xRYKjmwTB0jBy5of20/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/r8qEE/btsNOfQmqZC/jY28xRYKjmwTB0jBy5of20/img.png&quot; data-alt=&quot;*상단 EV 계산 부분 생략 - github repository 참고&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/r8qEE/btsNOfQmqZC/jY28xRYKjmwTB0jBy5of20/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fr8qEE%2FbtsNOfQmqZC%2FjY28xRYKjmwTB0jBy5of20%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2566&quot; height=&quot;1716&quot; data-origin-width=&quot;2566&quot; data-origin-height=&quot;1716&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;*상단 EV 계산 부분 생략 - github repository 참고&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;바 사이즈(width)는 EV를 의미하고 annotation으로 계산한 멀티플(EV/EBITDA)을 표시했다(좋은 방법은 아니지만, y축을 2개 쓰는 등의 차트 복잡도를 높이는 것보다 오히려 직관적이고 유용할 때가 있다). 이 차트에서 기대했던 것은 EV 대비 EV/EBITDA가 극적으로 낮은 것인데(낮을수록 저평가된 것이다) 아쉽게도 그렇진 않았다. Ticker:ADP의 경우 Ticker:ACN 대비 상대적으로 고평가 된 모습을 볼 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2856&quot; data-origin-height=&quot;1188&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/78W1b/btsNPZF2SJg/HtkFHQ7th2WpJCWQ5PRC1k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/78W1b/btsNPZF2SJg/HtkFHQ7th2WpJCWQ5PRC1k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/78W1b/btsNPZF2SJg/HtkFHQ7th2WpJCWQ5PRC1k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F78W1b%2FbtsNPZF2SJg%2FHtkFHQ7th2WpJCWQ5PRC1k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2856&quot; height=&quot;1188&quot; data-origin-width=&quot;2856&quot; data-origin-height=&quot;1188&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;3-4. 그룹 내 EV/EBITDA 비교&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번에는 전체 피어 그룹 대상으로 EV/EBITDA 평균치와 각 기업들의 멀티플 수준을 확인해 보자.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2262&quot; data-origin-height=&quot;1458&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dmFbsR/btsNQ2uOtYV/K7zKABBhoks4SSqyz2a1hK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dmFbsR/btsNQ2uOtYV/K7zKABBhoks4SSqyz2a1hK/img.png&quot; data-alt=&quot;*상단 EV/EBITDA 계산 부분 생략 - github repository 참고&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dmFbsR/btsNQ2uOtYV/K7zKABBhoks4SSqyz2a1hK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdmFbsR%2FbtsNQ2uOtYV%2FK7zKABBhoks4SSqyz2a1hK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2262&quot; height=&quot;1458&quot; data-origin-width=&quot;2262&quot; data-origin-height=&quot;1458&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;*상단 EV/EBITDA 계산 부분 생략 - github repository 참고&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;멀티플 평균은 15.5배로, Block의 멀티플보다 4.8이 높다. 앞서 Market Cap을 확인했을 때 폭락하다시피 시총이 내려앉아서인지 현재의 멀티플은 매우 좋고, 저평가된 상태로 볼 수 있다. Ticker:TYL의 경우 시총 상위 그룹에 속하지도 않았는데 멀티플을 51.7배 받고 있다. EV가 매우 높거나 EBITDA가 매우 낮은 것이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2784&quot; data-origin-height=&quot;1594&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bwe7qq/btsNP9uTYAE/W5e0fzLdhkwiGYHCNKkcV0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bwe7qq/btsNP9uTYAE/W5e0fzLdhkwiGYHCNKkcV0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bwe7qq/btsNP9uTYAE/W5e0fzLdhkwiGYHCNKkcV0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbwe7qq%2FbtsNP9uTYAE%2FW5e0fzLdhkwiGYHCNKkcV0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2784&quot; height=&quot;1594&quot; data-origin-width=&quot;2784&quot; data-origin-height=&quot;1594&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;3-5. 상이한 기업 간 주요 재무 지표 비교&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;TYL이 XYZ보다 5배나 높은 멀티플이 잡히는 원인을 조금 더 살펴보도록 하자. 주가가 낮은데 EV/EBITDA가 높으면 일반적으로 현금 흐름이 좋지 않은 경우다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2530&quot; data-origin-height=&quot;1184&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bDF0YF/btsNQY0kpVt/ML9SrSU1Na3veuCLx8sIp1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bDF0YF/btsNQY0kpVt/ML9SrSU1Na3veuCLx8sIp1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bDF0YF/btsNQY0kpVt/ML9SrSU1Na3veuCLx8sIp1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDF0YF%2FbtsNQY0kpVt%2FML9SrSU1Na3veuCLx8sIp1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2530&quot; height=&quot;1184&quot; data-origin-width=&quot;2530&quot; data-origin-height=&quot;1184&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실제로 TYL과 XYZ의 여러 지표들을 직접 비교해 보면 역시 현금 흐름 측면에서 극명히 갈린다. 부채 수준이 TYL이 매우 낮아 보이나, 낮은 현금 흐름 고려할 때 그렇지도 않다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2828&quot; data-origin-height=&quot;1636&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/2c28I/btsNONTX33W/SugbJXFxsQgkgoKPp6l651/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/2c28I/btsNONTX33W/SugbJXFxsQgkgoKPp6l651/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/2c28I/btsNONTX33W/SugbJXFxsQgkgoKPp6l651/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2c28I%2FbtsNONTX33W%2FSugbJXFxsQgkgoKPp6l651%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2828&quot; height=&quot;1636&quot; data-origin-width=&quot;2828&quot; data-origin-height=&quot;1636&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;EBITDA와 달리 EV는 10% 내외 오차 수준이다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1850&quot; data-origin-height=&quot;768&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1bQ5J/btsNQPoXTOI/u1oDxBicIFKpdENowCEJ8k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1bQ5J/btsNQPoXTOI/u1oDxBicIFKpdENowCEJ8k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1bQ5J/btsNQPoXTOI/u1oDxBicIFKpdENowCEJ8k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1bQ5J%2FbtsNQPoXTOI%2Fu1oDxBicIFKpdENowCEJ8k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1850&quot; height=&quot;768&quot; data-origin-width=&quot;1850&quot; data-origin-height=&quot;768&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;XYZ의 산업 평균 대비 준수한 멀티플은 현금 흐름의 개선에 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이와 같이 분석 대상 기업에 대해 재무제표 기준 멀티플을 산업, 피어그룹 내 비교 평가할 수 있다. 개인이 동일한 내용을 산업 보고서, 공시 자료, 그리고 주가 차트를 돌아다니며 리서치하기에는 시간적인 제약이 크기 때문에 계량적 방법을 유연하게 활용할 수 있는 것은 큰 도움이 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;물론 이렇게 선별해 낸 기업을 즉시 투자하는 건 다른 얘기다. 상대 평가로는 해당 산업 자체에 대한 벨류에이션 리스크를 상쇄할 수 없으며, 어느 시점에 어느 비중으로 매매할 것인가 등의 투자로 이어지는 의사결정을 위해서는 수많은 절차적 고려 사항들이 존재한다. 그럼에도 불구하고 스크리닝과 가치평가에 계량적 도구를 활용하는 것은 지속적이고 반복적인 투자 의사결정에 필수적인 요소이므로 최소한 시장 지수가 아닌 개별 종목에 투자하고자 한다면 자신만의 스크리닝 전략과 도구를 개발하고 꾸준히 발전시켜 나가는 노력이 반드시 필요하겠다.&lt;/p&gt;</description>
      <category>4. 실전/계량 투자 분석</category>
      <category>xyz</category>
      <category>가치평가</category>
      <category>금융 파이썬</category>
      <category>데이터분석</category>
      <category>멀티플</category>
      <category>알고리즘매매</category>
      <category>재무제표</category>
      <category>주식투자</category>
      <category>퀀트투자</category>
      <category>파이썬</category>
      <author>PO Wade</author>
      <guid isPermaLink="true">https://songseungwon.tistory.com/155</guid>
      <comments>https://songseungwon.tistory.com/155#entry155comment</comments>
      <pubDate>Thu, 8 May 2025 23:56:38 +0900</pubDate>
    </item>
    <item>
      <title>[파이썬 퀀트 투자] 좋은 기업을 찾아보자 - 미국 기술주 멀티플 EDA</title>
      <link>https://songseungwon.tistory.com/154</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;투자 프로세스에서 가장 선행되어야 할 것은 좋은 기업을 찾는 일이다. 퀀트 투자에서 스크리닝 단계는 넓고 단순한 분석에서 출발해 좁고 복잡한 분석으로 이어진다. 동일 집단 내 상대적으로 재무 상태가 양호한 기업들을 스크리닝해 투자 후보군을 추려내면 이후 후보군에 대해 여러 가지 가치평가 및 안전마진 계산을 수행한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어떤 기준으로 후보군을 추려낼 것인지 명확하지 않을 때는 대표적인 재무 멀티플을 사용해 볼 수 있다. 야후 파이낸스 파이썬 패키지는 이미 계산된 멀티플을 제공하고 있으니 이를 활용해 미국 상장 소프트웨어 기술 기업 중 재무 상태가 양호한 후보군을 추려내는 작업을 진행해 보자.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. yfiance로 주요 기업 티커 및 재무 지표 추출&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;타깃 시장의 모든 티커를 추출하는 함수와 멀티플을 추출하는 함수를 작성한다.&lt;/p&gt;
&lt;pre id=&quot;code_1746285740420&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# import libraries to get financial statement data
# Import required libraries
import pandas as pd
import numpy as np
import yfinance as yf
import requests
import json
from datetime import datetime, timedelta
import matplotlib.pyplot as plt
import seaborn as sns

def get_symbols(region='us', sector='Technology', peer_group='Software &amp;amp; Services'):
    # Get software &amp;amp; services tickers from Yahoo Finance
    query = yf.EquityQuery('and',[
    yf.EquityQuery('EQ',['region', region]),
    yf.EquityQuery('EQ',['sector', sector]),
    yf.EquityQuery('EQ',['peer_group', peer_group])
    ])

    offset = 0
    size = 250
    res = yf.screen(query=query, offset=0, size=250, sortAsc=True)
    df_symbols = pd.DataFrame(res['quotes'])[['symbol','shortName']]

    if res['total'] &amp;gt; size:
        for i in range(res['total']//size):
            offset += size
            res = yf.screen(query=query, offset=offset, size=size, sortAsc=True)
            df_symbols = pd.concat([df_symbols, pd.DataFrame(res['quotes'])[['symbol','shortName']]])

    df_symbols.reset_index(drop=True, inplace=True) 
    return df_symbols

def get_valuation_multiples(symbol):
    def safe_get(info_dict, key):
        try:
            result = info_dict.get(key)
            if result is None:
                print(f&quot;Warning: {key} returned None&quot;)
            return result
        except:
            print(f&quot;Error getting {key}&quot;)
            return None
            
    def safe_ratio(info_dict, numerator_key, denominator_key):
        try:
            numerator = safe_get(info_dict, numerator_key)
            denominator = safe_get(info_dict, denominator_key)
            if numerator is None or denominator is None:
                print(f&quot;Warning: Could not calculate ratio {numerator_key}/{denominator_key} - numerator or denominator is None&quot;)
                return None
            if denominator == 0:
                print(f&quot;Warning: Could not calculate ratio {numerator_key}/{denominator_key} - denominator is 0&quot;)
                return None
            return numerator / denominator
        except:
            print(f&quot;Error calculating ratio {numerator_key}/{denominator_key}&quot;)
            return None

    # Get info and initialize multiples dict
    info = yf.Ticker(symbol).info
    multiples = {}

    # Direct values
    multiples['PER'] = safe_get(info, 'trailingPE')
    multiples['PBR'] = safe_get(info, 'priceToBook')
    multiples['EV/Revenue'] = safe_get(info, 'enterpriseToRevenue')
    multiples['EV/EBITDA'] = safe_get(info, 'enterpriseToEbitda')
    multiples['PEG'] = safe_get(info, 'trailingPegRatio')
    multiples['Profit Margin'] = safe_get(info, 'profitMargins')
    multiples['Operating Margin'] = safe_get(info, 'operatingMargins')
    multiples['ROA'] = safe_get(info, 'returnOnAssets')
    multiples['ROE'] = safe_get(info, 'returnOnEquity')
    multiples['Beta'] = safe_get(info, 'beta')
    multiples['Debt/Equity'] = safe_get(info, 'debtToEquity')

    # Calculated ratios
    multiples['Cash/Revenue'] = safe_ratio(info, 'totalCash', 'totalRevenue')
    multiples['Debt/Revenue'] = safe_ratio(info, 'totalDebt', 'totalRevenue')

    return multiples&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;get_symbols() 함수를 기본 인자로 실행하면 아래와 같이 339개의 티커명, 기업명을 가져올 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1534&quot; data-origin-height=&quot;598&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cB4G0E/btsNKoyLvVU/KOe7TteAHy3pGiNTNzV3M0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cB4G0E/btsNKoyLvVU/KOe7TteAHy3pGiNTNzV3M0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cB4G0E/btsNKoyLvVU/KOe7TteAHy3pGiNTNzV3M0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcB4G0E%2FbtsNKoyLvVU%2FKOe7TteAHy3pGiNTNzV3M0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1534&quot; height=&quot;598&quot; data-origin-width=&quot;1534&quot; data-origin-height=&quot;598&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이어서 각 티커마다 순회하며 필요로 하는 멀티플을 추출해 데이터프레임으로 생성해 준다.&lt;/p&gt;
&lt;pre id=&quot;code_1746287122300&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;df_symbols = get_symbols()

# Create empty list to store results
results = []

# Iterate through each symbol
for idx, row in df_symbols.iterrows():
    # Get valuation multiples for current symbol
    multiples = get_valuation_multiples(row['symbol'])
    
    # Combine symbol, shortname and multiples into dict
    result_dict = {
        'symbol': row['symbol'],
        'shortName': row['shortName']
    }
    result_dict.update(multiples)
    
    # Append to results list
    results.append(result_dict)
    
    # Print progress
    print(f&quot;Processed {idx+1}/{len(df_symbols)} symbols&quot;)

# Create dataframe from results
df_results = pd.DataFrame(results)
df_results&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2566&quot; data-origin-height=&quot;1278&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cWhSe5/btsNL29jRfF/CBFMFPkccXEUQGbhOdqJ9K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cWhSe5/btsNL29jRfF/CBFMFPkccXEUQGbhOdqJ9K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cWhSe5/btsNL29jRfF/CBFMFPkccXEUQGbhOdqJ9K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcWhSe5%2FbtsNL29jRfF%2FCBFMFPkccXEUQGbhOdqJ9K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2566&quot; height=&quot;1278&quot; data-origin-width=&quot;2566&quot; data-origin-height=&quot;1278&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 출력된 Warning에 작성된 것처럼 티커마다 특정 멀티플은 제공하지 않는 경우가 있는데, 간단한 수식이라 굳이 yfinance가 제공하는 데이터에 제한하지 않고 직접 계산할 수도 있다. 여기서 이 작업은 생략하고, 멀티플 중 하나라도 누락된 값이 있으면 해당 티커는 제외하겠다.&lt;/p&gt;
&lt;pre id=&quot;code_1746287459440&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;df_results_womissing = df_results.dropna().reset_index(drop=True)
df_results_womissing&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2580&quot; data-origin-height=&quot;752&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/chpdg7/btsNK0xEoPu/iA5p2yoh2i4nLGjfJZsG01/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/chpdg7/btsNK0xEoPu/iA5p2yoh2i4nLGjfJZsG01/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/chpdg7/btsNK0xEoPu/iA5p2yoh2i4nLGjfJZsG01/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fchpdg7%2FbtsNK0xEoPu%2FiA5p2yoh2i4nLGjfJZsG01%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2580&quot; height=&quot;752&quot; data-origin-width=&quot;2580&quot; data-origin-height=&quot;752&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. 상호 독립적인 멀티플 추출&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다각도의 재무 상태를 살피기 위해 많은 멀티플을 필요로 하진 않는다. 오히려 총 13개나 되는 멀티플을 모두 고려하면 자칫 비슷한 지표들, 혹은 연관 지표들의 가중치가 강하게 들어가 특정 재무 지표에 쏠린 후보군이 만들어질 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서 상관분석을 통해 서로 연관성이 0에 가까운 지표들을 추출하겠다. 우선 상관도 히트맵을 그려보면 함께 움직이는 지표들, 그리고 반대로 움직이는 지표들을 수치로 확인할 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1746287842445&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;python&quot;&gt;&lt;code&gt;#visualize correlation matrix
plt.figure(figsize=(8, 4))
sns.heatmap(df_results_womissing.iloc[:,2:].corr(), annot=True, cmap='coolwarm', annot_kws={'size': 6})
plt.show()&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1466&quot; data-origin-height=&quot;914&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/buY6AY/btsNJ4guPHo/P38E4KENhZHowvlITWyszK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/buY6AY/btsNJ4guPHo/P38E4KENhZHowvlITWyszK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/buY6AY/btsNJ4guPHo/P38E4KENhZHowvlITWyszK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbuY6AY%2FbtsNJ4guPHo%2FP38E4KENhZHowvlITWyszK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1466&quot; height=&quot;914&quot; data-origin-width=&quot;1466&quot; data-origin-height=&quot;914&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 모든 지표들 중 자기 자신을 제외한 다른 지표로부터의 영향도(상관계수) 절댓값이 0.1보다 낮은 지표들을 아래와 같이 추출한다.&lt;/p&gt;
&lt;pre id=&quot;code_1746287937051&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# Find multiples with correlation &amp;lt; 0.1 (low correlation)
low_corr = abs(df_results_womissing.iloc[:,2:].corr()) &amp;lt; 0.1

# Initialize list to store independent multiples
independent_multiples = []

# Start with first multiple
remaining_cols = list(low_corr.columns)
current_col = remaining_cols[0]
independent_multiples.append(current_col)
remaining_cols.remove(current_col)

# Find additional multiples that are uncorrelated with all selected ones
while remaining_cols:
    for col in remaining_cols[:]:
        # Check if column is uncorrelated with all selected multiples
        is_independent = True
        for selected in independent_multiples:
            if not low_corr.loc[selected, col]:
                is_independent = False
                break
                
        if is_independent:
            independent_multiples.append(col)
            remaining_cols.remove(col)
            
    # If no more independent multiples found, break
    if not any(col in remaining_cols for col in independent_multiples):
        break

print(&quot;Independent multiples with no correlation to each other:&quot;)
print(independent_multiples)

low_corr&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2548&quot; data-origin-height=&quot;740&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qHdjT/btsNKynTNKJ/zTA61reoDTvg9h4OxUksd0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qHdjT/btsNKynTNKJ/zTA61reoDTvg9h4OxUksd0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qHdjT/btsNKynTNKJ/zTA61reoDTvg9h4OxUksd0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqHdjT%2FbtsNKynTNKJ%2FzTA61reoDTvg9h4OxUksd0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2548&quot; height=&quot;740&quot; data-origin-width=&quot;2548&quot; data-origin-height=&quot;740&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 추출한 독립 요인들의 상관계수를 별도로 히트맵으로 그려보면 모든 상관계수가 0에 근접함을 확인할 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1746288007158&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;plt.figure(figsize=(6, 3))
sns.heatmap(df_results_womissing[independent_multiples].corr(), 
            annot=True, 
            cmap='coolwarm',
            center=0,
            fmt='.3f',
            annot_kws={'size': 6})
plt.title('Correlation Heatmap of Independent Multiples', size='small')
plt.xticks(size='small')
plt.yticks(size='small')
plt.tight_layout()
plt.show()&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1514&quot; data-origin-height=&quot;602&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b4kS0T/btsNKf9VYFx/K08CDv8dkMZUKlGjMZKJ9k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b4kS0T/btsNKf9VYFx/K08CDv8dkMZUKlGjMZKJ9k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b4kS0T/btsNKf9VYFx/K08CDv8dkMZUKlGjMZKJ9k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb4kS0T%2FbtsNKf9VYFx%2FK08CDv8dkMZUKlGjMZKJ9k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1514&quot; height=&quot;602&quot; data-origin-width=&quot;1514&quot; data-origin-height=&quot;602&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3. 타깃 멀티플 기준 최상위 기업 선별&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞서 기업 선별에 활용할 멀티플을 PER, PBR, PEG, Cash/Revenue로 타겟팅했다. Cash/Revenue는 높을수록 좋고, 그 외는 분자가 가격이므로 낮을수록 좋다. 이 기준으로 각 기업들을 정렬해 보자.&lt;/p&gt;
&lt;pre id=&quot;code_1746288333389&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# Create 2x2 subplots
n_metrics = len(independent_multiples)
fig, axes = plt.subplots(2, 2, figsize=(12, 6))
axes = axes.flatten()

# Plot bar chart for each metric
for i, metric in enumerate(independent_multiples):
    if i &amp;gt;= 4:  # Only show first 4 metrics
        break
        
    # Sort data by metric and get top 20 companies
    # Sort ascending for all metrics except Cash/Revenue
    ascending = True if metric != 'Cash/Revenue' else False
    data = df_results_womissing.sort_values(by=metric, ascending=ascending).head(20)
    
    # Create bar plot
    sns.barplot(data=data, x='symbol', y=metric, ax=axes[i])
    
    # Customize plot
    sort_direction = &quot;Lowest&quot; if ascending else &quot;Highest&quot;
    axes[i].set_title(f'{sort_direction} 20 Companies by {metric}', fontsize=10)
    axes[i].tick_params(axis='x', rotation=45, labelsize=8)
    axes[i].tick_params(axis='y', labelsize=8)
    axes[i].set_xlabel('Company Symbol', fontsize=8)
    axes[i].set_ylabel(metric, fontsize=8)

plt.tight_layout()
plt.show()&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2544&quot; data-origin-height=&quot;1200&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cPAgdz/btsNJB6HNHV/Gvrq17BzydVHYwT8GX04LK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cPAgdz/btsNJB6HNHV/Gvrq17BzydVHYwT8GX04LK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cPAgdz/btsNJB6HNHV/Gvrq17BzydVHYwT8GX04LK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcPAgdz%2FbtsNJB6HNHV%2FGvrq17BzydVHYwT8GX04LK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2544&quot; height=&quot;1200&quot; data-origin-width=&quot;2544&quot; data-origin-height=&quot;1200&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;PBR의 경우 지표가 0보다 낮으면 자본잠식 상태임을 고려하고, 나머지 정렬 상태를 확인한다. 종합 순위를 매기기 위해 각 지표별 순위를 매기고 4개 지표의 평균 순위로 후보군 Top 10을 선정한다.&lt;/p&gt;
&lt;pre id=&quot;code_1746289714141&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# Create a scoring system based on multiple rankings
# For each multiple, rank companies from 1-n (n being total companies)
# Lower values are better for all metrics EXCEPT Cash/Revenue where higher is better

scoring_metrics = independent_multiples.copy()
df_scores = df_results_womissing.copy()

for metric in scoring_metrics:
    # For all metrics except Cash/Revenue, lower is better so ascending=True
    # For Cash/Revenue, higher is better so ascending=False
    ascending = False if metric == 'Cash/Revenue' else True
    
    # Rank companies for this metric (1 is best)
    df_scores[f'{metric}_rank'] = df_scores[metric].rank(ascending=ascending)

# Calculate average rank across all metrics
rank_columns = [col for col in df_scores.columns if col.endswith('_rank')]
df_scores['avg_rank'] = df_scores[rank_columns].mean(axis=1)

# Sort by average rank and get top 10 companies
top_10_companies = df_scores.sort_values('avg_rank').head(10)

# Display results with key metrics
display_columns = ['symbol', 'shortName'] + independent_multiples + ['avg_rank']
print(&quot;\nTop 10 Companies Based on Multiple Analysis:&quot;)
print(top_10_companies[display_columns].to_string(index=False))

# Create visualization of the top 10 companies' metrics
plt.figure(figsize=(8, 4))

# Plot heatmap of metrics for top 10 companies
metrics_data = top_10_companies[independent_multiples]
metrics_data = (metrics_data - metrics_data.mean()) / metrics_data.std()  # Standardize for better visualization

# Convert metrics_data to numeric values and handle any non-numeric values
metrics_data = metrics_data.apply(pd.to_numeric, errors='coerce')

# Create heatmap only if data is numeric
if not metrics_data.isna().all().all():
    sns.heatmap(metrics_data, 
                annot=True, 
                cmap='RdYlGn_r',
                xticklabels=independent_multiples,
                yticklabels=top_10_companies['symbol'],
                fmt='.2f',
                annot_kws={'size': 6})  # Smaller annotation font size

    plt.title('Standardized Metrics Heatmap for Top 10 Companies', fontsize=8)
    plt.xticks(fontsize=8, rotation=45)  # Smaller x-axis labels
    plt.yticks(fontsize=8)  # Smaller y-axis labels
    plt.tight_layout()
    plt.show()
else:
    print(&quot;Error: No numeric data available for heatmap visualization&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2358&quot; data-origin-height=&quot;1304&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dAGzgK/btsNJwdCcFY/UhhSraYiHMbGlf01b5D7kk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dAGzgK/btsNJwdCcFY/UhhSraYiHMbGlf01b5D7kk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dAGzgK/btsNJwdCcFY/UhhSraYiHMbGlf01b5D7kk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdAGzgK%2FbtsNJwdCcFY%2FUhhSraYiHMbGlf01b5D7kk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2358&quot; height=&quot;1304&quot; data-origin-width=&quot;2358&quot; data-origin-height=&quot;1304&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;종합 순위로 정렬하고, 각 값을 지표별 0을 중심으로 표준화하여 히트맵으로 표현했다. 잭 도시가 창업한 미국 모바일 결제 기업 XYZ를 포함한 상위 두 개의 기업이 전자 결제 서비스, 다음은 고객관리 서비스 두 기업이 뒤를 잇는다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;동종 산업군의 각 지표 평균을 보면 언급한 기업들의 상대적 우위를 확인할 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1746290360751&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# Calculate average scores across all companies for comparison
avg_scores = df_scores[independent_multiples].mean()

# Create figure with multiple subplots for each metric
fig, axes = plt.subplots(2, 2, figsize=(15, 10))
axes = axes.ravel()

# Plot each independent multiple as a bar chart
for i, metric in enumerate(independent_multiples):
    ax = axes[i]
    x = np.arange(len(top_10_companies['symbol']))
    width = 0.35
    
    # Plot company values
    ax.bar(x, top_10_companies[metric], width, label='Company Value', alpha=0.7)
    
    # Plot market average as horizontal line
    ax.axhline(y=avg_scores[metric], color='r', linestyle='--', 
               label=f'Market Average ({avg_scores[metric]:.2f})')
    
    ax.set_title(f'{metric} Comparison')
    ax.set_xlabel('Companies')
    ax.set_ylabel('Value')
    ax.set_xticks(x)
    ax.set_xticklabels(top_10_companies['symbol'], rotation=45)
    ax.legend()

plt.suptitle('Top 10 Companies vs Market Average - Key Metrics', fontsize=14)
plt.tight_layout()
plt.show()

# Print numerical comparison
comparison = pd.DataFrame({
    'Market Average': avg_scores,
    'Top 10 Average': top_10_companies[independent_multiples].mean()
})
print(&quot;\nNumerical Comparison with Market Averages:&quot;)
print(comparison.round(3))&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2210&quot; data-origin-height=&quot;1436&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sOt98/btsNLBKTLlO/bZHGp7qMUEBKXomGV813S1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sOt98/btsNLBKTLlO/bZHGp7qMUEBKXomGV813S1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sOt98/btsNLBKTLlO/bZHGp7qMUEBKXomGV813S1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsOt98%2FbtsNLBKTLlO%2FbZHGp7qMUEBKXomGV813S1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2210&quot; height=&quot;1436&quot; data-origin-width=&quot;2210&quot; data-origin-height=&quot;1436&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저렴한 기업을 무작정 매수하는 것이 아닌 좋은 기업을 낮은 가격에 매수하는 것이 투자 전략의 핵심이다. 따라서 저렴한 자산을 스크리닝 하기에 앞서 위와 같이 펀더멘탈이 양호한 기업들을 먼저 선별하는 것이 매우 중요하다.&lt;/p&gt;</description>
      <category>4. 실전/계량 투자 분석</category>
      <category>yfinance</category>
      <category>계량분석</category>
      <category>데이터분석</category>
      <category>데이터사이언스</category>
      <category>데이터시각화</category>
      <category>알고리즘매매</category>
      <category>야후파이낸스</category>
      <category>퀀트투자</category>
      <category>파이썬</category>
      <category>파이썬퀀트</category>
      <author>PO Wade</author>
      <guid isPermaLink="true">https://songseungwon.tistory.com/154</guid>
      <comments>https://songseungwon.tistory.com/154#entry154comment</comments>
      <pubDate>Sun, 4 May 2025 07:53:46 +0900</pubDate>
    </item>
    <item>
      <title>[파이썬 퀀트 투자] 시장은 정말 효율적일까? - 통계적 차익거래(Statistical Arbitrage) 백테스팅 시뮬레이션</title>
      <link>https://songseungwon.tistory.com/153</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;통계적 차익거래는 움직임이 유사한 둘 이상의 자산에서 괴리가 발생하면 매수 및 매도를 통해 차익을 얻는 계량 투자 전략이다. 예를 들어 금광 채굴 회사의 주가는 금 가격과 상관성이 높을 테니, 금 가격만큼 충분히 주가가 오르지 않으면 매수하고 기다렸다가 적정 수준까지 주가가 따라잡았을 때 청산하는 식이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러나 금과 금 채굴회사처럼 이미 잘 알려진 유사 자산에서 알파를 기대하긴 어렵고, 시장에서 잘 알려지지 않은 자산 쌍을 통계적으로 발굴해내야 한다. 보편적인 방법으로 K-means clustering 같은 거리 기반 비지도학습 알고리즘을 사용할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 나스닥에 상장한 100개 자산에서 유사한 군집들을 묶고, 각 군집 내에서 상관계수가 가장 높은 쌍에 대해 차익거래 백테스팅을 수행해보자.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. 데이터 수집&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나스닥 종목 리스트로 구글링 하니 위키피디아가 검색된다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2220&quot; data-origin-height=&quot;1564&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dge05m/btsNCbHtszy/feJrEAyb3SALvS70XCjj91/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dge05m/btsNCbHtszy/feJrEAyb3SALvS70XCjj91/img.png&quot; data-alt=&quot;https://en.wikipedia.org/wiki/Nasdaq-100&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dge05m/btsNCbHtszy/feJrEAyb3SALvS70XCjj91/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdge05m%2FbtsNCbHtszy%2FfeJrEAyb3SALvS70XCjj91%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2220&quot; height=&quot;1564&quot; data-origin-width=&quot;2220&quot; data-origin-height=&quot;1564&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;https://en.wikipedia.org/wiki/Nasdaq-100&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;1-1. 웹 크롤링&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Ticker 목록을 크롤링하는 함수를 하나 작성해 준다.&lt;/p&gt;
&lt;pre id=&quot;code_1745849670776&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# Get NASDAQ-100 tickers using Wikipedia
import requests
from bs4 import BeautifulSoup

def get_nasdaq100_tickers():
    url = &quot;https://en.wikipedia.org/wiki/Nasdaq-100&quot;
    response = requests.get(url)
    soup = BeautifulSoup(response.text, 'html.parser')
    
    # Find the table with Nasdaq-100 components
    tables = soup.find_all('table', {'class': 'wikitable'})
    for table in tables:
        if 'Ticker' in str(table):
            df = pd.read_html(str(table))[0]
            # Get the ticker column (may need adjustment based on Wikipedia table structure)
            tickers = df['Ticker'].tolist()
            return tickers
    return []&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;1-2. yfinance&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;함수로 Ticker 목록을 가져온 다음, Ticker를 순회하며 야후 파이낸스 api로 실제 주가 데이터를 수집한다.&lt;/p&gt;
&lt;pre id=&quot;code_1745849750424&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# Get NASDAQ-100 tickers
nasdaq100_tickers = get_nasdaq100_tickers()

# Get NASDAQ composite index data
nasdaq = yf.Ticker(&quot;^IXIC&quot;)
nasdaq_data = nasdaq.history(period=&quot;5y&quot;)

# Download historical data for all NASDAQ-100 stocks
stock_data = {}
print(&quot;Downloading data for NASDAQ-100 stocks...&quot;)

for ticker in nasdaq100_tickers:
    try:
        stock = yf.Ticker(ticker)
        data = stock.history(period=&quot;5y&quot;)['Close']
        if not data.empty:
            stock_data[ticker] = data
            print(f&quot;Downloaded {ticker}&quot;)
    except Exception as e:
        print(f&quot;Error downloading {ticker}: {e}&quot;)
        
        
 prices = pd.DataFrame(stock_data)
 returns = prices.pct_change() # daily returns&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. Clustering(군집 분석)&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;2-1. 최적의 군집 수 찾기&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주가 데이터를 각 움직임 특성에 따라 N개 그룹으로 구분하고자 한다. N을 지정해야 하는데, 임의로 지정하기보다 최적의 N을 찾는 elbow method를 사용하겠다. elbow method는 각 군집 내 요소들에 대해 속한 군집의 중심으로부터 거리 합을 계산하여 그 값이 최소 혹은 충분히 낮은 수준으로 떨어지는 군집의 수를 찾는 방법론이다.&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1745850199135&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# Normalize prices to start at 100 for fair comparison
from sklearn.cluster import KMeans
normalized_prices = complete_prices / complete_prices.iloc[0] * 100

# Determine optimal number of clusters using elbow method
inertias = []
K = range(1, 11)

for k in K:
    kmeans = KMeans(n_clusters=k, random_state=42)
    kmeans.fit(normalized_prices.T)  # Transpose to cluster stocks, not timestamps
    inertias.append(kmeans.inertia_)

# Plot elbow curve
plt.figure(figsize=(12, 6))
plt.plot(K, inertias, 'bx-')
plt.xlabel('k')
plt.ylabel('Inertia')
plt.title('Elbow Method For Optimal k')
plt.grid(True)
plt.show()&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1922&quot; data-origin-height=&quot;1040&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kCzAd/btsNEeWz7QX/BgQt6KaMQ59AzbMyOvuYGK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kCzAd/btsNEeWz7QX/BgQt6KaMQ59AzbMyOvuYGK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kCzAd/btsNEeWz7QX/BgQt6KaMQ59AzbMyOvuYGK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkCzAd%2FbtsNEeWz7QX%2FBgQt6KaMQ59AzbMyOvuYGK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1922&quot; height=&quot;1040&quot; data-origin-width=&quot;1922&quot; data-origin-height=&quot;1040&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;군집의 수가 늘어날수록 중심으로부터의 거리 합이 작아지는데, 그렇다고 군집을 수치에 따라 무한정 늘리면 군집 내 요소가 하나, 둘 수준으로 과하게 적게 포함되어 그룹으로 묶겠다는 의도를 제대로 반영할 수 없다. 따라서 충분히 낮은 수치를 만드는 구간인 6이 군집의 수로 적당하다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;2-2. 유사 자산 그룹 묶기&lt;/h4&gt;
&lt;pre id=&quot;code_1745850459952&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# Choose optimal k (let's use 4 clusters) and perform final clustering
optimal_k = 6
kmeans = KMeans(n_clusters=optimal_k, random_state=42)
clusters = kmeans.fit_predict(normalized_prices.T)

# Plot clusters
plt.figure(figsize=(15, 8))
for i in range(optimal_k):
    # Get tickers in this cluster
    cluster_tickers = normalized_prices.columns[clusters == i]
    
    # Plot mean trajectory of cluster
    cluster_mean = normalized_prices[cluster_tickers].mean(axis=1)
    plt.plot(normalized_prices.index, cluster_mean, linewidth=2, label=f'Cluster {i+1}')
    
    # Print cluster members and count
    print(f&quot;\nCluster {i+1} members ({len(cluster_tickers)} stocks):&quot;)
    print(', '.join(cluster_tickers))

plt.title('Stock Price Clusters (Common Period Only)')
plt.xlabel('Date')
plt.ylabel('Normalized Price')
plt.legend()
plt.grid(True)
plt.show()

# Print summary statistics for each cluster
print(&quot;\nCluster Summary Statistics:&quot;)
for i in range(optimal_k):
    cluster_tickers = normalized_prices.columns[clusters == i]
    cluster_returns = returns.loc[valid_dates, cluster_tickers].mean(axis=1)
    print(f&quot;\nCluster {i+1}:&quot;)
    print(f&quot;Average Return: {cluster_returns.mean():.4f}&quot;)
    print(f&quot;Return Std Dev: {cluster_returns.std():.4f}&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2004&quot; data-origin-height=&quot;662&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/n04sc/btsNBEv6vjy/L0IWZsnlXK2OjPkzl7LvPk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/n04sc/btsNBEv6vjy/L0IWZsnlXK2OjPkzl7LvPk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/n04sc/btsNBEv6vjy/L0IWZsnlXK2OjPkzl7LvPk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fn04sc%2FbtsNBEv6vjy%2FL0IWZsnlXK2OjPkzl7LvPk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2004&quot; height=&quot;662&quot; data-origin-width=&quot;2004&quot; data-origin-height=&quot;662&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1916&quot; data-origin-height=&quot;1086&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/XXd5l/btsNCgByULI/xqUg75Qwku7pgyQi65X99k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/XXd5l/btsNCgByULI/xqUg75Qwku7pgyQi65X99k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/XXd5l/btsNCgByULI/xqUg75Qwku7pgyQi65X99k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXXd5l%2FbtsNCgByULI%2FxqUg75Qwku7pgyQi65X99k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1916&quot; height=&quot;1086&quot; data-origin-width=&quot;1916&quot; data-origin-height=&quot;1086&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1704&quot; data-origin-height=&quot;940&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lKQ4h/btsNEmG2nEZ/3yiEZLY0tqKK9M6hTuPpZ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lKQ4h/btsNEmG2nEZ/3yiEZLY0tqKK9M6hTuPpZ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lKQ4h/btsNEmG2nEZ/3yiEZLY0tqKK9M6hTuPpZ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlKQ4h%2FbtsNEmG2nEZ%2F3yiEZLY0tqKK9M6hTuPpZ1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1704&quot; height=&quot;940&quot; data-origin-width=&quot;1704&quot; data-origin-height=&quot;940&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;많지 않은 군집 수로 클러스터링을 수행했음에도 자산이 하나씩만 포함된 군집이 3개나 존재한다. 다른 자산들과 묶이기에는 움직임 특성에 뚜렷한 차이가 있는 것이다. 특히 5번 클러스터에 묶인 팔란티어 같은 경우 다른 군집과 다소 상이한 움직임을 보이고 있다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3. 차익거래 백테스팅&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우리는 각 군집 내에서 상관관계가 높은 쌍을 찾아야 하므로, 클러스터 내 요소 수가 하나인 경우 제외하고 1번, 4번, 6번 클러스터만 분석에 활용한다.&lt;/p&gt;
&lt;pre id=&quot;code_1745850775372&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;selected_clusters = [0, 3, 5]

# Dictionary to store results
pair_trading_results = {}

for cluster_idx in selected_clusters:
    print(f&quot;\nAnalyzing Cluster {cluster_idx + 1}&quot;)
    
    # Get tickers in this cluster
    cluster_tickers = normalized_prices.columns[clusters == cluster_idx]
    cluster_prices = normalized_prices[cluster_tickers]
    
    # Calculate all possible pairs in the cluster
    pairs = []
    correlations = []
    for i in range(len(cluster_tickers)):
        for j in range(i+1, len(cluster_tickers)):
            stock1, stock2 = cluster_tickers[i], cluster_tickers[j]
            correlation = cluster_prices[stock1].corr(cluster_prices[stock2])
            pairs.append((stock1, stock2))
            correlations.append(correlation)
    
    # Select the pair with highest correlation
    best_pair_idx = np.argmax(correlations)
    stock1, stock2 = pairs[best_pair_idx]
    correlation = correlations[best_pair_idx]
    
    print(f&quot;Best pair: {stock1} - {stock2} (correlation: {correlation:.4f})&quot;)
    
    # Calculate spread
    spread = cluster_prices[stock1] - cluster_prices[stock2]
    
    # Calculate z-score of spread
    z_score = (spread - spread.mean()) / spread.std()
    
    # Define trading signals
    entry_threshold = 2.0  # Enter position when |z-score| &amp;gt; 2
    exit_threshold = 0.0   # Exit position when z-score crosses 0
    
    # Initialize position and returns arrays
    position = np.zeros(len(z_score))
    returns = np.zeros(len(z_score))
    
    # Implement trading strategy
    for i in range(1, len(z_score)):
        # If no position is open
        if position[i-1] == 0:
            if z_score[i] &amp;gt; entry_threshold:
                position[i] = -1  # Short stock1, long stock2
            elif z_score[i] &amp;lt; -entry_threshold:
                position[i] = 1   # Long stock1, short stock2
        # If position is open
        else:
            if (position[i-1] == 1 and z_score[i] &amp;gt; exit_threshold) or \
               (position[i-1] == -1 and z_score[i] &amp;lt; exit_threshold):
                position[i] = 0   # Close position
            else:
                position[i] = position[i-1]  # Maintain position
        
        # Calculate returns
        if position[i] != 0:
            stock1_return = (cluster_prices[stock1].iloc[i] / cluster_prices[stock1].iloc[i-1] - 1)
            stock2_return = (cluster_prices[stock2].iloc[i] / cluster_prices[stock2].iloc[i-1] - 1)
            returns[i] = position[i] * (stock1_return - stock2_return)
    
    # Calculate strategy metrics
    cumulative_returns = np.cumprod(1 + returns) - 1
    sharpe_ratio = np.sqrt(252) * returns.mean() / returns.std()
    
    # Store results
    pair_trading_results[f&quot;Cluster_{cluster_idx + 1}&quot;] = {
        'pair': (stock1, stock2),
        'correlation': correlation,
        'cumulative_returns': cumulative_returns,
        'sharpe_ratio': sharpe_ratio
    }
    
    # Plot results
    plt.figure(figsize=(15, 10))
    
    plt.subplot(2, 1, 1)
    plt.plot(cluster_prices.index, z_score)
    plt.axhline(y=entry_threshold, color='r', linestyle='--')
    plt.axhline(y=-entry_threshold, color='r', linestyle='--')
    plt.axhline(y=0, color='k', linestyle='-')
    plt.title(f'Z-Score of Spread ({stock1} - {stock2})')
    plt.grid(True)
    
    plt.subplot(2, 1, 2)
    plt.plot(cluster_prices.index, cumulative_returns)
    plt.title('Cumulative Returns')
    plt.grid(True)
    
    plt.tight_layout()
    plt.show()
    
    print(f&quot;Sharpe Ratio: {sharpe_ratio:.2f}&quot;)
    print(f&quot;Total Return: {cumulative_returns[-1]:.2%}&quot;)

# Print overall summary
print(&quot;\nOverall Strategy Summary:&quot;)
for cluster, results in pair_trading_results.items():
    print(f&quot;\n{cluster}:&quot;)
    print(f&quot;Pair: {results['pair'][0]} - {results['pair'][1]}&quot;)
    print(f&quot;Correlation: {results['correlation']:.4f}&quot;)
    print(f&quot;Sharpe Ratio: {results['sharpe_ratio']:.2f}&quot;)
    print(f&quot;Total Return: {results['cumulative_returns'][-1]:.2%}&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 군집별 최적의 쌍을 찾고, 둘의 스프레드가 2 표준편차를 벗어나면 가격이 높은 자산은 매도하고 낮은 자산은 매수하도록 했다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;3-1. Baker Hughes &amp;amp; Cisco&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫 번째 군집에서는 BKR과 CSCO가 상관계수 89%로 움직임이 가장 유사했는데, long-short 전략을 수행했을 때 2년이 안 되는 기간 동안 약 48%의 수익률을 보였다. sharpe ratio 역시 1.8로 매우 우수한 수준이다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1916&quot; data-origin-height=&quot;1276&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bRTulP/btsNC9on91X/Q6HzKzHM0JvsgXtH1MgKfk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bRTulP/btsNC9on91X/Q6HzKzHM0JvsgXtH1MgKfk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bRTulP/btsNC9on91X/Q6HzKzHM0JvsgXtH1MgKfk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbRTulP%2FbtsNC9on91X%2FQ6HzKzHM0JvsgXtH1MgKfk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1916&quot; height=&quot;1276&quot; data-origin-width=&quot;1916&quot; data-origin-height=&quot;1276&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1812&quot; data-origin-height=&quot;132&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4tOtl/btsNDqpVBJx/k8zy6ndOcgdqXovYrgZzr1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4tOtl/btsNDqpVBJx/k8zy6ndOcgdqXovYrgZzr1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4tOtl/btsNDqpVBJx/k8zy6ndOcgdqXovYrgZzr1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4tOtl%2FbtsNDqpVBJx%2Fk8zy6ndOcgdqXovYrgZzr1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1812&quot; height=&quot;132&quot; data-origin-width=&quot;1812&quot; data-origin-height=&quot;132&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;3-2. Door Dash &amp;amp; Netflix&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이어서 도어대시와 넷플릭스는 상관계수 96%로 첫 번째 그룹보다 높은 상관성을 보인다. 그러나 상관성이 높다고 차익거래 성과가 더 좋은 것은 아니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오히려 스프레드 변동성이 낮고, 스프레드 발생 구간이 짧아 트레이딩 효용은 떨어진다. 또, 최근 발생한 스프레드에 대해 수익이 발생하려면 스프레드 내구간으로 재진입해야 하나 아직 그 시점이 오지 않아 손실이 발생하고 있는 것을 감안해야 한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1912&quot; data-origin-height=&quot;1268&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbVvr7/btsNDIDRM1j/B6qTcGJ17giIDiOSXPPKG1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbVvr7/btsNDIDRM1j/B6qTcGJ17giIDiOSXPPKG1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbVvr7/btsNDIDRM1j/B6qTcGJ17giIDiOSXPPKG1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbVvr7%2FbtsNDIDRM1j%2FB6qTcGJ17giIDiOSXPPKG1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1912&quot; height=&quot;1268&quot; data-origin-width=&quot;1912&quot; data-origin-height=&quot;1268&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1832&quot; data-origin-height=&quot;138&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/p4wsd/btsNEoLASwr/Rm2QHbSbJA2jTQVwrnIpm0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/p4wsd/btsNEoLASwr/Rm2QHbSbJA2jTQVwrnIpm0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/p4wsd/btsNEoLASwr/Rm2QHbSbJA2jTQVwrnIpm0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fp4wsd%2FbtsNEoLASwr%2FRm2QHbSbJA2jTQVwrnIpm0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1832&quot; height=&quot;138&quot; data-origin-width=&quot;1832&quot; data-origin-height=&quot;138&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;3-3. GOOG &amp;amp; GOOGL&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한국으로 치면 보통주, 우선주 개념의 의결권 차이만 있을 뿐 둘은 사실상 같은 구글 주식이다. 당연히 상관계수는 99%로 가장 높고, 여기서 알파는 찾을 수 없었다. sharpe ratio도 낮고 return은 시장 수익률에 미치지 못했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;알려진 시장은 효율적이고, 서두에서 언급했듯 누구나 동일 혹은 유사 자산으로 인지할 수 있는 자산 쌍에 대해서는 차익거래를 통한 수익을 취할 수 없다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1274&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/l4wGe/btsNByvTGMS/On2TLCbXtnpnhDpCRK1uJ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/l4wGe/btsNByvTGMS/On2TLCbXtnpnhDpCRK1uJ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/l4wGe/btsNByvTGMS/On2TLCbXtnpnhDpCRK1uJ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fl4wGe%2FbtsNByvTGMS%2FOn2TLCbXtnpnhDpCRK1uJ1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1274&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1274&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1900&quot; data-origin-height=&quot;108&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Al5WN/btsNDMzs59L/hgYiT6K0FkkrXKS8FzIUhk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Al5WN/btsNDMzs59L/hgYiT6K0FkkrXKS8FzIUhk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Al5WN/btsNDMzs59L/hgYiT6K0FkkrXKS8FzIUhk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAl5WN%2FbtsNDMzs59L%2FhgYiT6K0FkkrXKS8FzIUhk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1900&quot; height=&quot;108&quot; data-origin-width=&quot;1900&quot; data-origin-height=&quot;108&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 파이썬으로 간단히 통계적 차익거래를 시뮬레이션해 보았다. 자산 움직임에 따른 유사 군집으로 먼저 타겟 집단을 좁히고, 타겟 집단 내에서 상관계수가 가장 높은 쌍을 찾아 해당 자산 쌍에 대해 long-short 매매를 진행했을 때 스프레드 변동성이 크고 잦은 Baker Hughes &amp;amp; Cisco에서 가장 높은 수익률을 확인할 수 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자동매매가 판치는 자산 시장에서도 찰나 혹은 꽤나 긴 시간 동안 비효율은 발생할 수 있으며, 시장 국면에 따라 이러한 비효율을 발굴하여 상관계수가 높은 자산 쌍을 타겟으로 차익거래를 시도해 볼 수 있다.&lt;/p&gt;</description>
      <category>4. 실전/계량 투자 분석</category>
      <category>나스닥</category>
      <category>백테스팅</category>
      <category>변동성</category>
      <category>시장효율성</category>
      <category>알고리즘매매</category>
      <category>차익거래</category>
      <category>퀀트</category>
      <category>퀀트투자</category>
      <category>통계적차익거래</category>
      <category>파이썬퀀트</category>
      <author>PO Wade</author>
      <guid isPermaLink="true">https://songseungwon.tistory.com/153</guid>
      <comments>https://songseungwon.tistory.com/153#entry153comment</comments>
      <pubDate>Tue, 29 Apr 2025 00:09:16 +0900</pubDate>
    </item>
    <item>
      <title>2025년 장단기 국채금리 기반 마켓 베타 국면 분석 - 단기 금리 급락시 기저 원인을 포착할 것</title>
      <link>https://songseungwon.tistory.com/152</link>
      <description>&lt;h4 data-ke-size=&quot;size20&quot;&gt;1. 불 vs 베어&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 불(bull): 황소가 공격할 때 뿔을 들어 올리는 모습을 빗댄. 상승장을 의미&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 베어(bear): 곰이 공격할 때 앞발을 내리치는 모습을 빗댄, 하락장을 의미.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1888&quot; data-origin-height=&quot;1040&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bMtWR4/btsMfOSBm6q/WoLGNpAMdsboQCCKAvCOfk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bMtWR4/btsMfOSBm6q/WoLGNpAMdsboQCCKAvCOfk/img.png&quot; data-alt=&quot;shutterstock&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bMtWR4/btsMfOSBm6q/WoLGNpAMdsboQCCKAvCOfk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbMtWR4%2FbtsMfOSBm6q%2FWoLGNpAMdsboQCCKAvCOfk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1888&quot; height=&quot;1040&quot; data-origin-width=&quot;1888&quot; data-origin-height=&quot;1040&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;shutterstock&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;2. 스티프닝 vs 플래트닝&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 스티프닝(steepening): 장기채와 단기채 수익률 괴리가 커지는 현상. 장단기는 주로 동시에 오르내리는데, 오를 때 장기채가 단기채보다 더 많이 오르고, 내릴 때는 더 많이 떨어지는 모습.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 플래트닝(flattenin): 장기채와 단기채 수익률 괴리가 작아지는 현상. 오를 때 단기채가 장기채 수준으로, 혹은 그 이상 많이 오르고, 내릴 때는 적게 떨어지는 모습.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;3. 불 스티프닝 vs 베어 스티프닝&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 불 스티프닝(bull steepening): 채권 가격이 &quot;상승&quot;하면서 장단기 수익률 괴리가 커지는 현상. 단기채 가격이 급등하여 수익률은 급락하는 한편, 상대적으로 장기채 가격은 소폭 상승하여 수익률도 소폭 하락.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 베어 스티프닝(bear steepening): 채권 가격이 &quot;하락&quot;하면서 장단기 수익률 괴리가 커지는 현상. 장기채 가격이 급락하여 수익률도 급등하는 한편, 상대적으로 단기채 가격은 소폭 하락하여 수익률도 소폭 상승&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2116&quot; data-origin-height=&quot;950&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/q3jPO/btsMfkqJW5W/7JbxxizX4Ns31tKK4z5Fhk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/q3jPO/btsMfkqJW5W/7JbxxizX4Ns31tKK4z5Fhk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/q3jPO/btsMfkqJW5W/7JbxxizX4Ns31tKK4z5Fhk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fq3jPO%2FbtsMfkqJW5W%2F7JbxxizX4Ns31tKK4z5Fhk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2116&quot; height=&quot;950&quot; data-origin-width=&quot;2116&quot; data-origin-height=&quot;950&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;4. 불 플래트닝 vs 베어 플래트닝&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 불 플래트닝(bull flattening): 채권 가격이 &quot;상승&quot;하면서 장단기 수익률 괴리는 작아지는 현상. 장기채 수요 및 가격 급등으로 인해 수익률이 급락하고, 단기채 수익률은 소폭 하락.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 베어 플래트닝(bear flateening): 채권 가격이 &quot;하락&quot;하면서 장단기 수익률 괴리도 작아지는 현상. 단기채 수요 및 가격 급락으로 인해 수익률이 급등하고, 장기채 수익률은 소폭 상승&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1578&quot; data-origin-height=&quot;876&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bZGXeq/btsMei1KQJg/GTEp1M4e86yGWmRet2gIck/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bZGXeq/btsMei1KQJg/GTEp1M4e86yGWmRet2gIck/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bZGXeq/btsMei1KQJg/GTEp1M4e86yGWmRet2gIck/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbZGXeq%2FbtsMei1KQJg%2FGTEp1M4e86yGWmRet2gIck%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1578&quot; height=&quot;876&quot; data-origin-width=&quot;1578&quot; data-origin-height=&quot;876&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;5. 마켓 베타 국면 비교&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;span style=&quot;color: #ee2323;&quot;&gt;불 스티프닝&lt;/span&gt;: 채권 가격 상승(수익률 하락), 단기채 금리 하락률 &amp;gt; 장기채 금리 하락률, 장단기 스프레드 상승, &lt;span style=&quot;color: #ee2323;&quot;&gt;베타 1.85&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;span style=&quot;color: #1b711d;&quot;&gt;불 플래트닝&lt;/span&gt;: 채권 가격 상승(수익률 하락), 단기채 금리 하락률 &amp;lt; 장기채 금리 하락률, 장단기 스프레드 하락, &lt;span style=&quot;color: #1b711d;&quot;&gt;베타 10.87&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- 베어 스티프닝: 채권 가격 하락(수익률 상승), 단기채 금리 상승률 &amp;lt; 장기채 금리 상승률, 장단기 스프레드 상승, 베타 9.5&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- &lt;span style=&quot;color: #1b711d;&quot;&gt;베어 플래트닝&lt;/span&gt;: 채권 가격 하락(수익률 상승), 단기채 금리 상승률 &amp;gt; 장기채 금리 상승률, 장단기 스프레드 하락, &lt;span style=&quot;color: #1b711d;&quot;&gt;베타 10.31&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2384&quot; data-origin-height=&quot;1914&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bvk9rg/btsMeJLvf68/jhqCWNxqPez2qAnFCB9e0k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bvk9rg/btsMeJLvf68/jhqCWNxqPez2qAnFCB9e0k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bvk9rg/btsMeJLvf68/jhqCWNxqPez2qAnFCB9e0k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbvk9rg%2FbtsMeJLvf68%2FjhqCWNxqPez2qAnFCB9e0k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2384&quot; height=&quot;1914&quot; data-origin-width=&quot;2384&quot; data-origin-height=&quot;1914&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코로나 이후 채권 금리는 계속 오르고 있고, 장단기 역전 시기도 길었던 만큼 현재 국면은 '베어 플래트닝' 상태(위 차트 흰색 영역)이며,&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후에는 역사적으로, 잦은 빈도의 불 플래트닝 -&amp;gt; 불 스티프닝 진입 사이클을 확인할 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1672&quot; data-origin-height=&quot;1484&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/biAdpj/btsMf6rXrKl/KQNEydf2SwkUrtAdkqt3q0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/biAdpj/btsMf6rXrKl/KQNEydf2SwkUrtAdkqt3q0/img.png&quot; data-alt=&quot;intermarketandmore.finanza.com/&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/biAdpj/btsMf6rXrKl/KQNEydf2SwkUrtAdkqt3q0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbiAdpj%2FbtsMf6rXrKl%2FKQNEydf2SwkUrtAdkqt3q0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1672&quot; height=&quot;1484&quot; data-origin-width=&quot;1672&quot; data-origin-height=&quot;1484&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;intermarketandmore.finanza.com/&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;장기 금리가 상승/하락을 반복하여 정체되어 있는 만큼, 불 스티프닝으로 진입하는 국면에 선대응해야 하며, &quot;금리 취약 자산들에 대한&quot; 포트폴리오 조정이 필요해보인다. 이는 시장 참여자들이 단기 안전자산으로 자금을 급격히 이동시키는 현상일 수 있고, 유동성이 마르면 주식 시장에는 순간적인 급락이 이어질 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러나, 미국 연준이 리세션을 매우 심각하게 고려해 단기금리를 큰 폭으로 인하하거나, 또 동시에 정부 정책자금이 단기 국채 매입에 활용되어 국채 가격이 상승한다면 오히려 유동성을 풍부하게 만들 수 있다. 이 경우 할인율도 함께 감소해 기술주들의 미래 기대 수익률이 현재 추정 가치에 잘 반영될 수 있기 때문에 단기 금리의 움직임 기저면을 기민하게 확인할 필요가 있겠다.&lt;/p&gt;</description>
      <category>2. 도메인/금융</category>
      <category>yieldcurve</category>
      <category>국채금리</category>
      <category>금리스프레드</category>
      <category>금융데이터</category>
      <category>마켓사이클</category>
      <category>매크로분석</category>
      <category>미국채10년물</category>
      <category>베어마켓</category>
      <category>불마켓</category>
      <category>채권수익률</category>
      <author>PO Wade</author>
      <guid isPermaLink="true">https://songseungwon.tistory.com/152</guid>
      <comments>https://songseungwon.tistory.com/152#entry152comment</comments>
      <pubDate>Wed, 12 Feb 2025 09:48:54 +0900</pubDate>
    </item>
    <item>
      <title>달러 통화량과 유동성 비율을 활용한 금, 비트코인 가치평가</title>
      <link>https://songseungwon.tistory.com/151</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif; color: #333333;&quot;&gt;비트코인은 2009년 첫 등장 이후 디지털 자산으로서 독자적인 위치를 구축해왔다. 초기에는 주로 기술 커뮤니티와 소규모 투자자들 사이에서 주목받았지만, 최근에는 글로벌 금융 시스템과 경제 변화에 따라 &quot;디지털 금&quot;이라는 별칭으로 주목받고 있다. 동시에, 중앙은행의 양적 완화 정책, 지속적인 통화 팽창, 그리고 인플레이션에 대한 우려가 커지면서 비트코인 적정 가치에 대한 의문이 제기되고 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif; color: #333333;&quot;&gt;전통적인 자산과 달리, 비트코인은 현금 흐름, 배당, 혹은 사용 가치를 기준으로 평가하기 어렵다. 다만, &lt;span style=&quot;text-align: start;&quot;&gt;금과 비트코인은 모두 희소성을 기반으로 하는 자산이며, 공급이 제한적이라는 공통점을 가지고 있어 금의 적정가를 산출할 수 있다면 비트코인도 현재 가치를 간접 추정해볼 수 있겠다. &lt;/span&gt;이번 분석에서는 통화량(M0, M1, M2)과 금의 유동성을 기반으로 비트코인의 가치를 추정해보고, 글로벌 유동성과 인플레이션 상황에서의 안전 자산의 가격 움직임을 이해해 볼 것이다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif; color: #333333;&quot;&gt;이를 위해 통화량 데이터와 금, 비트코인 관련 데이터를 수집하고 이를 바탕으로 비트코인의 가치를 경제적 맥락에서 분석한다. 금과 비트코인의 가격 및 유동성 추이를 비교하며, 비트코인의 시가총액을 금과 동일한 수준으로 가정했을 때의 적정 가격을 추정함으로써 현시점의 비트코인 가격 움직임을 해석해본다.&lt;/span&gt;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #333333; font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&lt;b&gt;Step 1. 데이터 수집 및 전처리&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc; color: #000000; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333; font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&lt;b&gt;1-1. FRED API를 통한 통화량 데이터 추출&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333; font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;통화량 데이터를 수집하기 위해 Federal Reserve Economic Data(FRED) API를 사용하여 M0, M1, M2 데이터를 확보했다. M0는 물리적 통화(현금), M1은 현금+수표 계좌, M2는 예금 및 기타 금융 상품을 포함한 통화 지표로, 각각의 통화량은 경제의 유동성을 이해하는 데 핵심적인 역할을 한다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2022&quot; data-origin-height=&quot;646&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zGfVo/btsL2aB1ZBA/V0VRIkQhl3ihKUzgH8VyP0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zGfVo/btsL2aB1ZBA/V0VRIkQhl3ihKUzgH8VyP0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zGfVo/btsL2aB1ZBA/V0VRIkQhl3ihKUzgH8VyP0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzGfVo%2FbtsL2aB1ZBA%2FV0VRIkQhl3ihKUzgH8VyP0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2022&quot; height=&quot;646&quot; data-origin-width=&quot;2022&quot; data-origin-height=&quot;646&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; color: #000000; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333; font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&lt;b&gt;1-2. CoinMarketCap 웹사이트에서 비트코인 데이터 수집&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333; font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;비트코인의 가격과 공급량은 CoinMarketCap 웹사이트에서 스크래핑하였다. 비트코인의 유통량은 블록체인 네트워크의 총 발행량과 직접적으로 연결되며, 이는 비트코인의 희소성과 가치 평가의 주요 변수로 작용한다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2024&quot; data-origin-height=&quot;942&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bjKxhi/btsL0YCZJux/5WUPTYeBRWbC0zNwo5RyC0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bjKxhi/btsL0YCZJux/5WUPTYeBRWbC0zNwo5RyC0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bjKxhi/btsL0YCZJux/5WUPTYeBRWbC0zNwo5RyC0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbjKxhi%2FbtsL0YCZJux%2F5WUPTYeBRWbC0zNwo5RyC0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2024&quot; height=&quot;942&quot; data-origin-width=&quot;2024&quot; data-origin-height=&quot;942&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; color: #000000; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333; font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&lt;b&gt;1-3. 금 가격 및 채굴량 데이터 수집 및 통합&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333; font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;World Gold Council과 Our World in Data 웹사이트에서 금의 가격 및 채굴량 데이터를 수집하여, 비트코인과 금의 유통량과 가격을 비교할 수 있는 데이터셋으로 구성한다. 금의 채굴량은 공급의 유한성을 반영하며, 이는 비트코인과 유사한 가치 평가 구조를 가진다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2028&quot; data-origin-height=&quot;890&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bAjhFK/btsL1E4HLBB/FXNDhnDq5K3kFQsSXifzak/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bAjhFK/btsL1E4HLBB/FXNDhnDq5K3kFQsSXifzak/img.png&quot; data-alt=&quot;World Gold Council - 2010년 이후 채굴량, 가격 데이터&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bAjhFK/btsL1E4HLBB/FXNDhnDq5K3kFQsSXifzak/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbAjhFK%2FbtsL1E4HLBB%2FFXNDhnDq5K3kFQsSXifzak%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2028&quot; height=&quot;890&quot; data-origin-width=&quot;2028&quot; data-origin-height=&quot;890&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;World Gold Council - 2010년 이후 채굴량, 가격 데이터&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2018&quot; data-origin-height=&quot;826&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6T3mk/btsL1YVVN0q/dZaEcoSayd8XLMXi0pl9BK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6T3mk/btsL1YVVN0q/dZaEcoSayd8XLMXi0pl9BK/img.png&quot; data-alt=&quot;Our World in Data - 1681년부터의 금 생산량 데이터&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6T3mk/btsL1YVVN0q/dZaEcoSayd8XLMXi0pl9BK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6T3mk%2FbtsL1YVVN0q%2FdZaEcoSayd8XLMXi0pl9BK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2018&quot; height=&quot;826&quot; data-origin-width=&quot;2018&quot; data-origin-height=&quot;826&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Our World in Data - 1681년부터의 금 생산량 데이터&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2032&quot; data-origin-height=&quot;1164&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/MgRRi/btsL1C6Tlzg/haK7xvwq83LeSmEcbTzBO1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/MgRRi/btsL1C6Tlzg/haK7xvwq83LeSmEcbTzBO1/img.png&quot; data-alt=&quot;데이터 통합 - 전기간 market cap 계산&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/MgRRi/btsL1C6Tlzg/haK7xvwq83LeSmEcbTzBO1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMgRRi%2FbtsL1C6Tlzg%2FhaK7xvwq83LeSmEcbTzBO1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2032&quot; height=&quot;1164&quot; data-origin-width=&quot;2032&quot; data-origin-height=&quot;1164&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;데이터 통합 - 전기간 market cap 계산&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif; color: #333333;&quot;&gt;위 작업을 통해 2024년 3분기까지의 금 가격 및 시총 데이터를 모두 추출했다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;참고로, 25.1 기준 1t은 35274oz이므로 연간 채굴량 약 3600t(분기별 900t)을 oz로 환산하면 연간 1,269,842,400oz, 분기별 31,736,600oz가 된다. 작성 시점(25.1.3) 기준 금은 온스(oz) 당 2,634달러, 총 금 채굴량은 201,296t이며 온스로 환산하면 7,100,515,104oz다. 이는 시총으로 18,702,756,783,936달러(18 trillion)다.&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #333333; font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&lt;b&gt;Step 2. 연도별 달러 통화, 금, 비트코인 유동성 증가 추이&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc; color: #000000; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333; font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&lt;b&gt;2-1. 통화량(M0, M1, M2) 및 통화승수의 추이&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333; font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;M0, M1, M2 통화량의 추이를 시계열로 분석한 결과, 2020년 코로나 팬데믹 이후 급격한 증가가 관찰되었다. 특히 M2는 정부의 양적 완화 정책과 재정 확대의 영향을 크게 받았다. 통화승수(Money Multiplier)는 시중은행의 대출 증가가 유동성 확대에 어떻게 기여했는지를 보여준다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2010&quot; data-origin-height=&quot;1898&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bBD3iK/btsL25fI3nk/ClLYzJa8ccEBpyXL5AiLX0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bBD3iK/btsL25fI3nk/ClLYzJa8ccEBpyXL5AiLX0/img.png&quot; data-alt=&quot;참고) 우리나라의 경우 1979년까지 주로 M1을 기준으로 통화량을 관리했다. 이후 경제 규모가 커지고 다양한 금융기관이 출현하면서 M1이 실물경제의 동향을 제대로 반영하지 못한다고 판단돼 M2를 기준 통화지표로 사용하고 있다. M1은 측정이 정확하고 편리한 장점이 있지만, 실물경제의 규모를 정확히 반영하지 못하는 문제가 발생해 우리나라를 비롯한 많은 나라에서 M2를 기준 통화지표로 사용하고 있다. 최근에는 금융의 발전으로 가상화폐를 비롯해 금융상품이 더 다양해지고 있다. 그뿐 아니라 금융시장의 구조도 급격히 변해가는 상황에서 M2도 실물경제와 괴리가 많이 발생하고 있어 한층 더 포괄적인 통화지표를 사용해야 한다는 주장이 제기되고 있다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bBD3iK/btsL25fI3nk/ClLYzJa8ccEBpyXL5AiLX0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbBD3iK%2FbtsL25fI3nk%2FClLYzJa8ccEBpyXL5AiLX0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2010&quot; height=&quot;1898&quot; data-origin-width=&quot;2010&quot; data-origin-height=&quot;1898&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;참고) 우리나라의 경우 1979년까지 주로 M1을 기준으로 통화량을 관리했다. 이후 경제 규모가 커지고 다양한 금융기관이 출현하면서 M1이 실물경제의 동향을 제대로 반영하지 못한다고 판단돼 M2를 기준 통화지표로 사용하고 있다. M1은 측정이 정확하고 편리한 장점이 있지만, 실물경제의 규모를 정확히 반영하지 못하는 문제가 발생해 우리나라를 비롯한 많은 나라에서 M2를 기준 통화지표로 사용하고 있다. 최근에는 금융의 발전으로 가상화폐를 비롯해 금융상품이 더 다양해지고 있다. 그뿐 아니라 금융시장의 구조도 급격히 변해가는 상황에서 M2도 실물경제와 괴리가 많이 발생하고 있어 한층 더 포괄적인 통화지표를 사용해야 한다는 주장이 제기되고 있다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;2020년 대규모 양적 완화 이후 m0대비 m1 통화승수는 증가했으나 m0 대비 m2 통화승수는 그렇지 않다. 돈을 풀어서 은행에 단기예금으로 많이 유입되었으나, 장기 예금이나 적금 등 은행 예치 상품으로 묶기보다 비은행 금융 자산으로 이동한 것이다. M1 승수의 급격한 증가는 사람들이 현금을 덜 보유하고 요구불예금과 같은 단기 거래 수단을 선호하고 있음을 나타내며, 이는 거래와 소비가 활발해지고 있음을 반영한다. 한편 M2 승수의 감소 또는 정체는 자금이 은행 중심의 장기 예금에서 벗어나 비은행 금융 자산으로 이동하고 있다는 신호로, 이는 금융 시장의 성장과 동시에 전통적인 은행 시스템이 축소되고 있음을 의미한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;이러한 양상을 고려할 때 금, 비트코인 가치평가를 위해 m2를 사용하는 것이 적절하다. 유동성이 다소 떨어지는, 저축성 예금을 포함하는 광의통화(m2)가 실질 통화량을 반영하기 때문이다. 아래 차트에서 2020년 이후 m2에서 m1을 제외한, 유동성이 낮은 저축성 예금 잔고가 급격히 떨어지는 모습을 볼 수 있다. 저축성 예금을 시중 통화량에서 제외하는 것은 분석상의 비약이 클 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2024&quot; data-origin-height=&quot;770&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bazgr5/btsL2KiEsRm/hNjtk1XWF3GUAYpb2CtC51/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bazgr5/btsL2KiEsRm/hNjtk1XWF3GUAYpb2CtC51/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bazgr5/btsL2KiEsRm/hNjtk1XWF3GUAYpb2CtC51/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbazgr5%2FbtsL2KiEsRm%2FhNjtk1XWF3GUAYpb2CtC51%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2024&quot; height=&quot;770&quot; data-origin-width=&quot;2024&quot; data-origin-height=&quot;770&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; color: #000000; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333; font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&lt;b&gt;2-2. 금과 비트코인의 유통량 변화&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333; font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;2010년 이후 금과 비트코인의 유통량은 정량적으로 비교될 수 있는 수준으로 가고 있는데, 금은 이미 채굴 수익이 비용 임계점에 도달하여 연간 생산량이 매우 일정한 상태이고 비트코인 역시 21백만 개라는 공급 한계에 접근하고 있다.&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2044&quot; data-origin-height=&quot;1166&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ohHMp/btsL22pMl8P/l3KDSxkPQeddMipBcWt2tk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ohHMp/btsL22pMl8P/l3KDSxkPQeddMipBcWt2tk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ohHMp/btsL22pMl8P/l3KDSxkPQeddMipBcWt2tk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FohHMp%2FbtsL22pMl8P%2Fl3KDSxkPQeddMipBcWt2tk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2044&quot; height=&quot;1166&quot; data-origin-width=&quot;2044&quot; data-origin-height=&quot;1166&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #333333; font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&lt;b&gt;Step 3. 유동성 비율을 통한 금, 비트코인 가격 추정&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc; color: #000000; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333; font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&lt;b&gt;3-1. 유동성 비율 기반 추정 가능성&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333; font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;금의 가격은 통화량(M2) 대비 금의 유동성(Gold Liquidity)으로 대변될 수 있다는 가정 하에, 두 변수의 비율을 분석했다. 금의 유동성 대비 M2의 증가율은 금의 가치 평가에 유의미한 설명력을 제공하며, 금 가격의 상승이 전반적인 통화 팽창의 결과임을 보여준다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2008&quot; data-origin-height=&quot;982&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b1HWV3/btsL2bnrF0r/5JkpEd5GY4bQMghZDW4h4K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b1HWV3/btsL2bnrF0r/5JkpEd5GY4bQMghZDW4h4K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b1HWV3/btsL2bnrF0r/5JkpEd5GY4bQMghZDW4h4K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb1HWV3%2FbtsL2bnrF0r%2F5JkpEd5GY4bQMghZDW4h4K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2008&quot; height=&quot;982&quot; data-origin-width=&quot;2008&quot; data-origin-height=&quot;982&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; color: #000000; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333; font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&lt;b&gt;3-2. 상관 분석 및 회귀 모형 검증&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333; font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;금 가격을 M2 증가율과 금 유동성 증가율의 비율로 회귀 분석한 결과, 결정계수(R&amp;sup2;)가 0.49로 나타났다. 이는 단일 변수로서 금 가격을 설명하기에 비교적 높은 설명력을 가진다. 이러한 결과는 금의 가격이 글로벌 유동성 확대와 밀접히 연결되어 있음을 시사한다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2032&quot; data-origin-height=&quot;1498&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cY4oS3/btsL1qFFuJ8/fWhLnaDLywkgKCxEesvKq0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cY4oS3/btsL1qFFuJ8/fWhLnaDLywkgKCxEesvKq0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cY4oS3/btsL1qFFuJ8/fWhLnaDLywkgKCxEesvKq0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcY4oS3%2FbtsL1qFFuJ8%2FfWhLnaDLywkgKCxEesvKq0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2032&quot; height=&quot;1498&quot; data-origin-width=&quot;2032&quot; data-origin-height=&quot;1498&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2004&quot; data-origin-height=&quot;1860&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b7iVLu/btsL1GnVMNn/Y0njfYWQKuSyFTrcjSYml0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b7iVLu/btsL1GnVMNn/Y0njfYWQKuSyFTrcjSYml0/img.png&quot; data-alt=&quot;위 차트에서&amp;amp;nbsp; 잔차들이 x축에 대해 무작위로 분포해야 이상적인 회귀 모델이지만&amp;amp;nbsp; 여기서는 잔차가 특정 패턴(곡선 형태)을 따르는 것처럼 보이며,&amp;amp;nbsp; 이는 회귀 모델이 데이터의 비선형성을 잘 설명하지 못하고 있다는 신호일 수 있다.&amp;amp;nbsp; 하지만 본 회귀 분석의 목적이 예측이 아니므로 정상성을 엄밀히 확보하기보다 단일 변수에 대한 설명력을 파악하는 데에 제한적으로 활용할 필요가 있다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b7iVLu/btsL1GnVMNn/Y0njfYWQKuSyFTrcjSYml0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb7iVLu%2FbtsL1GnVMNn%2FY0njfYWQKuSyFTrcjSYml0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2004&quot; height=&quot;1860&quot; data-origin-width=&quot;2004&quot; data-origin-height=&quot;1860&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;위 차트에서&amp;nbsp; 잔차들이 x축에 대해 무작위로 분포해야 이상적인 회귀 모델이지만&amp;nbsp; 여기서는 잔차가 특정 패턴(곡선 형태)을 따르는 것처럼 보이며,&amp;nbsp; 이는 회귀 모델이 데이터의 비선형성을 잘 설명하지 못하고 있다는 신호일 수 있다.&amp;nbsp; 하지만 본 회귀 분석의 목적이 예측이 아니므로 정상성을 엄밀히 확보하기보다 단일 변수에 대한 설명력을 파악하는 데에 제한적으로 활용할 필요가 있다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;참고로, 위 회귀모형을 활용해서 추정값을 구한다면 오차를 이와 같은 수준(2번 행 &amp;gt; 1번 행)으로 줄일 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1998&quot; data-origin-height=&quot;1430&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Pova9/btsL1UGeZo3/epjTX4g6xYITJkO391VThk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Pova9/btsL1UGeZo3/epjTX4g6xYITJkO391VThk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Pova9/btsL1UGeZo3/epjTX4g6xYITJkO391VThk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPova9%2FbtsL1UGeZo3%2FepjTX4g6xYITJkO391VThk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1998&quot; height=&quot;1430&quot; data-origin-width=&quot;1998&quot; data-origin-height=&quot;1430&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #333333; font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&lt;b&gt;Step 4. 금과 비트코인 비교 분석을 통한 비트코인 가치 추정&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc; color: #000000; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333; font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&lt;b&gt;4-1. 비트코인의 유동성 비율 분석&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333; font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;비트코인의 가격 역시 M2 증가량 대비 비트코인 공급량 증가율의 비율로 추정했지만, 결과는 금과 달리 큰 괴리를 보였다. 특히 2020년 이후 비트코인의 가격 급등은 단순한 유동성 비율로 설명되지 않을 정도로 이례적이었다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2010&quot; data-origin-height=&quot;1300&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bJpf45/btsL2Id07kT/lOy1A4f9Fb8diBJhTbRUKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bJpf45/btsL2Id07kT/lOy1A4f9Fb8diBJhTbRUKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bJpf45/btsL2Id07kT/lOy1A4f9Fb8diBJhTbRUKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbJpf45%2FbtsL2Id07kT%2FlOy1A4f9Fb8diBJhTbRUKK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2010&quot; height=&quot;1300&quot; data-origin-width=&quot;2010&quot; data-origin-height=&quot;1300&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; color: #000000; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333; font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&lt;b&gt;4-2. 금과 비트코인의 가격 상승률 비교&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333; font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;2020년을 기준으로 금은 약 1.4배로 증가한 반면, 비트코인은 약 10배로 증가했다. 이는 비트코인의 가격 상승이 금보다 약 8.13배 더 빠른 속도로 진행되었음을 보여준다. 이러한 차이는 비트코인이 희소성과 투기적 매수세로 인해 가격이 과도하게 상승했을 가능성을 암시한다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2006&quot; data-origin-height=&quot;1304&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/t6wrp/btsL1GnVS1p/skz08hirKxKVk51PuN0si0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/t6wrp/btsL1GnVS1p/skz08hirKxKVk51PuN0si0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/t6wrp/btsL1GnVS1p/skz08hirKxKVk51PuN0si0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Ft6wrp%2FbtsL1GnVS1p%2Fskz08hirKxKVk51PuN0si0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2006&quot; height=&quot;1304&quot; data-origin-width=&quot;2006&quot; data-origin-height=&quot;1304&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2010&quot; data-origin-height=&quot;754&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b5trOE/btsL19b4ias/dkxLo65k0FuUMVQMyXoepk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b5trOE/btsL19b4ias/dkxLo65k0FuUMVQMyXoepk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b5trOE/btsL19b4ias/dkxLo65k0FuUMVQMyXoepk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb5trOE%2FbtsL19b4ias%2FdkxLo65k0FuUMVQMyXoepk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2010&quot; height=&quot;754&quot; data-origin-width=&quot;2010&quot; data-origin-height=&quot;754&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;한편 두 가격 상승률의 움직임은 유사한 수준(correlation 0.7)으로 달러 유동성에 반응하는 자산임을 확인할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; color: #000000; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333; font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&lt;b&gt;4-3. 금과 비트코인의 시가총액 비교&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333; font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;금의 시가총액은 비트코인 대비 여전히 압도적으로 크지만, 비트코인은 2020년 이후 금의 약 10% 수준에 도달했다. 그러나 이러한 비율은 꾸준히 증가하는 추세라기보다는 변동성이 크며, 투자자들의 비트코인에 대한 신뢰와 시장의 유동성 상태에 크게 의존하고 있다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2028&quot; data-origin-height=&quot;1266&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/41z79/btsL00mDYJJ/dQ9Vxb6B15pFMdWZPc3lY1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/41z79/btsL00mDYJJ/dQ9Vxb6B15pFMdWZPc3lY1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/41z79/btsL00mDYJJ/dQ9Vxb6B15pFMdWZPc3lY1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F41z79%2FbtsL00mDYJJ%2FdQ9Vxb6B15pFMdWZPc3lY1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2028&quot; height=&quot;1266&quot; data-origin-width=&quot;2028&quot; data-origin-height=&quot;1266&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2016&quot; data-origin-height=&quot;1844&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bzSSQu/btsL0XjIwDE/xkH5dFVyxJFMsiyk9bGCiK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bzSSQu/btsL0XjIwDE/xkH5dFVyxJFMsiyk9bGCiK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bzSSQu/btsL0XjIwDE/xkH5dFVyxJFMsiyk9bGCiK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbzSSQu%2FbtsL0XjIwDE%2FxkH5dFVyxJFMsiyk9bGCiK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2016&quot; height=&quot;1844&quot; data-origin-width=&quot;2016&quot; data-origin-height=&quot;1844&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; color: #000000; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: #333333; font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&lt;b&gt;4-4. 금 시가총액 기반 비트코인 가치 재추정&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333; font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;비트코인이 금과 동일한 시가총액을 가진다고 가정하면, 현재 비트코인의 가격은 금 시가총액 대비 약 8.13배의 조정을 통해 추정될 수 있다. 이 추정을 통해 계산한 비트코인의 가치는 현재 시장 가격과 유사한 수준으로 나타났다. 이는 시장이 비트코인을 금과 유사한 달러 헷지 자산으로 평가하고 있음을 시사한다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2008&quot; data-origin-height=&quot;1416&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kyhHM/btsL1VZuROS/UiIipEk4B2331pJzDUGPGk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kyhHM/btsL1VZuROS/UiIipEk4B2331pJzDUGPGk/img.png&quot; data-alt=&quot;단순 유동성 비(대체자산 유동성 / 달러 유동성)로 보면 금은 2010년 이후 1.8배, 비트코인은 2020년 이후 1.2배까지 올라왔다. 1.2배는 2020년 이후 비트코인 가격 상승률에 비하면 매우 낮은 수준으로, 유동성 비로는 가격 상승에 대한 설명력이 충분하지 않다. 이 때, 비트코인과 금이 결국 동일한 대체자산으로, 동일한 시가총액을 형성할 것이다 라는 가정을 가지면 시가총액 비(금 시총 대비 비트코인 시총)는 곧 시장의 &amp;quot;비트코인 저평가 심리&amp;quot;를 정량화한 수치가 된다. 따라서 이 수치의 역수 8.13은 비트코인 가격을 형성하는 가중치가 될 수 있으며 위 계산에 활용하였다.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kyhHM/btsL1VZuROS/UiIipEk4B2331pJzDUGPGk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkyhHM%2FbtsL1VZuROS%2FUiIipEk4B2331pJzDUGPGk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2008&quot; height=&quot;1416&quot; data-origin-width=&quot;2008&quot; data-origin-height=&quot;1416&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;단순 유동성 비(대체자산 유동성 / 달러 유동성)로 보면 금은 2010년 이후 1.8배, 비트코인은 2020년 이후 1.2배까지 올라왔다. 1.2배는 2020년 이후 비트코인 가격 상승률에 비하면 매우 낮은 수준으로, 유동성 비로는 가격 상승에 대한 설명력이 충분하지 않다. 이 때, 비트코인과 금이 결국 동일한 대체자산으로, 동일한 시가총액을 형성할 것이다 라는 가정을 가지면 시가총액 비(금 시총 대비 비트코인 시총)는 곧 시장의 &quot;비트코인 저평가 심리&quot;를 정량화한 수치가 된다. 따라서 이 수치의 역수 8.13은 비트코인 가격을 형성하는 가중치가 될 수 있으며 위 계산에 활용하였다.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #333333; font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&lt;b&gt;Step 5. 결론&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&lt;span style=&quot;text-align: start;&quot;&gt;비트코인의 가치는 전통적인 자산인 금과 같이 &lt;span style=&quot;text-align: start;&quot;&gt;제한된 공급량과 희소성이라는 측면에서 달러 &lt;/span&gt;대체자산으로 인식되고 있으며, 그에 따른 평가 차이로 인한 높은 변동성으로 가치 평가가 매우 복잡하다.&lt;/span&gt;&lt;span style=&quot;text-align: start;&quot;&gt; 이에&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;text-align: start;&quot;&gt;본 분석은 통화량과 유동성 비율을 기반으로 비트코인의 가치 추정을 시도해보았고, 금과 비트코인의 시가총액 비로 시장 평가 심리를 가중치로 활용해 추정 가치를 보정해보았다. 결과적으로 현재 가격은 &quot;금과 비트코인 시가총액 비는 결국 1:1로 수렴할 것이다&quot;라는 가정 하에 단기적으로는 적정가(심리만 반영한 가격상승률), 장기적으로는 저평가 상태(0.1:1) 임을 알 수 있다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; font-family: AppleSDGothicNeo-Regular, 'Malgun Gothic', '맑은 고딕', dotum, 돋움, sans-serif;&quot;&gt;&lt;span style=&quot;text-align: start;&quot;&gt;그러나 비트코인의 높은 변동성과 투기적 특성은 여전히 주의가 필요한 요소로 남아 있고,&lt;/span&gt;&lt;span style=&quot;text-align: start;&quot;&gt; 정교한 평가를 위해 통화 정책 및 다른 주요 투자 자산(채권, 주식, 비트코인 파생상품) 등 다양한 요인을 통합한 다각적 분석이 필요하겠다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;</description>
      <category>4. 실전/글로벌 매크로 분석</category>
      <category>fred api</category>
      <category>가치평가</category>
      <category>금 비트코인</category>
      <category>금 시가총액</category>
      <category>달러 유동성</category>
      <category>비트코인</category>
      <category>비트코인 가치</category>
      <category>비트코인 시가총액</category>
      <category>비트코인 적정가</category>
      <category>파이썬 비트코인</category>
      <author>PO Wade</author>
      <guid isPermaLink="true">https://songseungwon.tistory.com/151</guid>
      <comments>https://songseungwon.tistory.com/151#entry151comment</comments>
      <pubDate>Sun, 26 Jan 2025 16:38:25 +0900</pubDate>
    </item>
    <item>
      <title>[파이썬 금융 데이터 분석] 미국 부채사이클 기반 2025년 리세션 리스크 평가</title>
      <link>https://songseungwon.tistory.com/150</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;2025년 세계 경제는 중요한 기로에 서 있다. 국가 경제의 핵심 지표 중 하나는 바로 부채 사이클이다. 미국의 부채 수준, 이자 지급액, 그리고 통화량(M0, M1, M2)을 분석함으로써 경기 침체 리스크를 이해하고, 이에 따라 적절한 경제 전략을 수립할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;본 글에서는 미국 부채 사이클을 기반으로 현 시점 경제 상황을 분석하고, 통화량을 고려해 2025년 경기 침체 리스크를 평가한다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Step 1. 데이터 수집&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;부채 사이클과 경기 침체 리스크 간의 관계를 이해하기 위해 Federal Reserve Economic Data(FRED) API에서 데이터를 수집한다. 다음과 같은 변수를 포함하도록 한다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; color: #000000; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;이자 지급액(Interest Payments)&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;국내총생산(GDP)&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;연방 부채(Federal Debt)&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;통화기반(M0)&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;통화 공급(M1, M2)&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;추가로, 다음과 같은 파생 변수를 생성하여 경제 생산량과 부채 수준의 관계를 분석한다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; color: #000000; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;GDP 대비 이자 지급액 비율(Interest Payments to GDP):&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;경제 대비 이자 부담 수준 측정.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;GDP 대비 부채 비율(Debt to GDP):&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;경제 생산량에 대한 연방 부채의 비율.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1490&quot; data-origin-height=&quot;884&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bkWLAq/btsLL8cGBJw/qs8M4ZrsB8zRnqPiiJsySK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bkWLAq/btsLL8cGBJw/qs8M4ZrsB8zRnqPiiJsySK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bkWLAq/btsLL8cGBJw/qs8M4ZrsB8zRnqPiiJsySK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbkWLAq%2FbtsLL8cGBJw%2Fqs8M4ZrsB8zRnqPiiJsySK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1490&quot; height=&quot;884&quot; data-origin-width=&quot;1490&quot; data-origin-height=&quot;884&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Step 2. 데이터 전처리 및 성장률 시각화&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 모든 변수의 데이터 기간을 일치시키고 각 변수의 성장률을 계산하여 시간에 따른 변화율을 분석한다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1832&quot; data-origin-height=&quot;1388&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kZqfY/btsLKtCh7NI/FKQNIJMZN20uZ4kiCt64BK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kZqfY/btsLKtCh7NI/FKQNIJMZN20uZ4kiCt64BK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kZqfY/btsLKtCh7NI/FKQNIJMZN20uZ4kiCt64BK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkZqfY%2FbtsLKtCh7NI%2FFKQNIJMZN20uZ4kiCt64BK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1832&quot; height=&quot;1388&quot; data-origin-width=&quot;1832&quot; data-origin-height=&quot;1388&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;color: #000000;&quot;&gt;&lt;b&gt;좌측 열&lt;/b&gt;: 각 지표(GDP, 부채, 이자 지급 등)의 시계열 데이터를 보여준다. 이 차트로&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;부채와 GDP 간의 관계나 이자 지급 수준의 변화 등&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;경제 전반의 트렌드를 확인할 수 있다.&lt;/li&gt;
&lt;li style=&quot;color: #000000;&quot;&gt;&lt;b&gt;우측 열&lt;/b&gt;: 각 지표의 성장률 기반으로 저점, 고점을 확인하며 경제 확장기, 불황기를 정성적으로 평가해본다. 예를 들어, 부채 성장률의 급격한 상승은 대표적인 경제 발작 징후다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2092&quot; data-origin-height=&quot;1226&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bKPuUP/btsLJMbqi8y/Md2VszUvdkU6UP6kVo9zy0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bKPuUP/btsLJMbqi8y/Md2VszUvdkU6UP6kVo9zy0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bKPuUP/btsLJMbqi8y/Md2VszUvdkU6UP6kVo9zy0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbKPuUP%2FbtsLJMbqi8y%2FMd2VszUvdkU6UP6kVo9zy0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2092&quot; height=&quot;1226&quot; data-origin-width=&quot;2092&quot; data-origin-height=&quot;1226&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;부채가 급증할 때 경제 성장률은 점차 둔화되는 경향을 보인다. 부채가 과중해지면 기업과 가계의 상환 부담이 커져 소비와 투자가 위축되고 경제 성장이 어려워진다는 경제 이론을 뒷받침하고 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또, 불황이 시작되기 전에 부채는 빠르게 증가하는 경향이 있다. 부채가 과도하게 증가하면 이자 지급 부담이 커지는데, 금리 상승 시기에 경제 전반에 부담을 주어 불황을 초래할 가능성이 커지는 것이다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Step 3. 부채 사이클 변화&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;ChatGPT를 활용하여 각 경제 주기 정보를 획득한다. 생성형 AI를 사용할 때에는 명확한 출처와 근거를 수령하여 정보의 사실 여부를 항상 확인해야 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2054&quot; data-origin-height=&quot;1270&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/OHDxW/btsLKLQcEig/4rUnR8DejGMvkMFGIcvwr0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/OHDxW/btsLKLQcEig/4rUnR8DejGMvkMFGIcvwr0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/OHDxW/btsLKLQcEig/4rUnR8DejGMvkMFGIcvwr0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOHDxW%2FbtsLKLQcEig%2F4rUnR8DejGMvkMFGIcvwr0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2054&quot; height=&quot;1270&quot; data-origin-width=&quot;2054&quot; data-origin-height=&quot;1270&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;부채 주기를 분석하기 위해 각 경제 주기를 확장기(1), 중립기(0), 불황기(-1) label로 구분하고, 이렇게 구분한 label을 활용해 성장률 데이터를 시각화한다. 차트를 보면 &lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;부채가 급격히 증가하는 시점이 불황기와 대게 겹치는 모습을 확인할 수 있다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1522&quot; data-origin-height=&quot;1006&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bkt00N/btsLJyEmHY7/i57oWGGsEeVJdVjYw6Ekzk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bkt00N/btsLJyEmHY7/i57oWGGsEeVJdVjYw6Ekzk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bkt00N/btsLJyEmHY7/i57oWGGsEeVJdVjYw6Ekzk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbkt00N%2FbtsLJyEmHY7%2Fi57oWGGsEeVJdVjYw6Ekzk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1522&quot; height=&quot;1006&quot; data-origin-width=&quot;1522&quot; data-origin-height=&quot;1006&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2138&quot; data-origin-height=&quot;760&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oDBoE/btsLKnCbhoL/Lmwk6fhsyCaMQItgKhl95K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oDBoE/btsLKnCbhoL/Lmwk6fhsyCaMQItgKhl95K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oDBoE/btsLKnCbhoL/Lmwk6fhsyCaMQItgKhl95K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoDBoE%2FbtsLKnCbhoL%2FLmwk6fhsyCaMQItgKhl95K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2138&quot; height=&quot;760&quot; data-origin-width=&quot;2138&quot; data-origin-height=&quot;760&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2426&quot; data-origin-height=&quot;1462&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/KReV2/btsLJBHMNRp/vGkrfOUnmqqfepkfHXSnV1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/KReV2/btsLJBHMNRp/vGkrfOUnmqqfepkfHXSnV1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/KReV2/btsLJBHMNRp/vGkrfOUnmqqfepkfHXSnV1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKReV2%2FbtsLJBHMNRp%2FvGkrfOUnmqqfepkfHXSnV1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2426&quot; height=&quot;1462&quot; data-origin-width=&quot;2426&quot; data-origin-height=&quot;1462&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 차트를 통해 각 사이클별로 아래와 같이 해석해볼 수 있겠다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;color: #000000;&quot;&gt;&lt;b&gt;확장기&lt;/b&gt;: 부채는 상대적으로 안정적인 수준에서 증가하고, 경제 성장률도 긍정적인 모습을 보인다. 이 시점에서는 부채가 경제 성장을 촉진하는 역할을 할 수 있다.&lt;/li&gt;
&lt;li style=&quot;color: #000000;&quot;&gt;&lt;b&gt;불황기&lt;/b&gt;: 불황이 시작되면 부채 수준이 급격히 증가하는 경향이 있으며, 경제 성장률은 둔화된다. 부채가 경제 성장을 저해하는 요소로 작용하며, 불황의 심화로 이어진다.&lt;/li&gt;
&lt;li style=&quot;color: #000000;&quot;&gt;&lt;b&gt;중립기&lt;/b&gt;: 중립기에는 부채와 경제 성장률이 일정한 수준에서 균형을 이루는 경향이 있으며, 경제는 안정적인 상태를 유지한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Step 4. 부채 사이클별 성장률 분포 통계 분석&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞에서 부채 사이클을 펼쳐놓고 봤다면, 이번에는 각 부채사이클마다의 성장률 분포를 확인해보고, 각 지표가 사이클 단계(확장기, 불황기, 중립기)마다 어떤 분포적 특징을 가지는지 파악한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2168&quot; data-origin-height=&quot;872&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b3vNCN/btsLLU6KocF/f8ZPAJqlakEfEAwcrORQP1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b3vNCN/btsLLU6KocF/f8ZPAJqlakEfEAwcrORQP1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b3vNCN/btsLLU6KocF/f8ZPAJqlakEfEAwcrORQP1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb3vNCN%2FbtsLLU6KocF%2Ff8ZPAJqlakEfEAwcrORQP1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2168&quot; height=&quot;872&quot; data-origin-width=&quot;2168&quot; data-origin-height=&quot;872&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;color: #000000;&quot;&gt;&lt;b&gt;cycle&lt;/b&gt;: 부채 사이클 단계 (-1, 0, 1 등)&lt;/li&gt;
&lt;li style=&quot;color: #000000;&quot;&gt;&lt;b&gt;gdp_growthrate&lt;/b&gt;: GDP 성장률&lt;/li&gt;
&lt;li style=&quot;color: #000000;&quot;&gt;&lt;b&gt;dept_growthrate&lt;/b&gt;: 부채 증가율&lt;/li&gt;
&lt;li style=&quot;color: #000000;&quot;&gt;&lt;b&gt;dept_to_gdp_growthrate&lt;/b&gt;: GDP 대비 부채 성장률&lt;/li&gt;
&lt;li style=&quot;color: #000000;&quot;&gt;&lt;b&gt;interest_payments_growthrate&lt;/b&gt;: 이자비용 증가율&lt;/li&gt;
&lt;li style=&quot;color: #000000;&quot;&gt;&lt;b&gt;interest_payments_to_gdp_growthrate&lt;/b&gt;: GDP 대비 이자비용 성장률&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2188&quot; data-origin-height=&quot;1466&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bh4Goc/btsLKMBCKSj/JGhuUaA6m1Rq2EEHfveJ7K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bh4Goc/btsLKMBCKSj/JGhuUaA6m1Rq2EEHfveJ7K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bh4Goc/btsLKMBCKSj/JGhuUaA6m1Rq2EEHfveJ7K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbh4Goc%2FbtsLKMBCKSj%2FJGhuUaA6m1Rq2EEHfveJ7K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2188&quot; height=&quot;1466&quot; data-origin-width=&quot;2188&quot; data-origin-height=&quot;1466&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;color: #000000;&quot;&gt;&lt;b&gt;박스플롯 시각화&lt;/b&gt;:
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;부채 사이클에 따른 주요 변수들의 분포를 시각적으로 확인하기 위해 박스플롯을 생성했다.&lt;/li&gt;
&lt;li&gt;sns.boxplot을 사용하여 각 변수의 중앙값, 사분위 범위, 그리고 이상치(outliers)를 비교할 수 있다.&lt;/li&gt;
&lt;li&gt;이를 통해 각 변수의 변동성과 분포 형태가 부채 사이클 단계에 따라 어떻게 달라지는지 파악한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;color: #000000;&quot;&gt;&lt;b&gt;통계 값 요약 및 히트맵 시각화&lt;/b&gt;:
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;데이터프레임의&lt;span&gt;&amp;nbsp;&lt;/span&gt;.describe()&lt;span&gt;&amp;nbsp;&lt;/span&gt;메서드를 활용하여, 각 변수에 대해&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;평균(mean)&lt;/b&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;표준편차(std)&lt;/b&gt;,&lt;span&gt;&amp;nbsp;&lt;b&gt;최소값(min)&lt;/b&gt;,&amp;nbsp;&lt;b&gt;최대값(max)&lt;/b&gt;,&amp;nbsp;&lt;/span&gt;&lt;b&gt;중앙값(50%)&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;등 주요 통계 값을 계산하였다.&lt;/li&gt;
&lt;li&gt;계산된 통계 값은 사이클 단계별로 그룹화하여 요약하였으며, 이를 히트맵 형태로 시각화하였다.&lt;/li&gt;
&lt;li&gt;히트맵은 변수 간 통계 값의 상대적인 크기와 패턴을 한눈에 파악할 수 있도록 도와준다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;불황기(-1)에 분산이 크고, 특히 gdp 성장률이 매우 저조한 것을 볼 수 있다. gdp 대비 부채성장률은 다른 시기에 비해 급격히 높아 이자성장률을 웃도는 현상을 보인다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2150&quot; data-origin-height=&quot;1380&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d4K5mf/btsLK6fvgXt/w4LUYB3RWyMlkJHseCf7Ck/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d4K5mf/btsLK6fvgXt/w4LUYB3RWyMlkJHseCf7Ck/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d4K5mf/btsLK6fvgXt/w4LUYB3RWyMlkJHseCf7Ck/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd4K5mf%2FbtsLK6fvgXt%2Fw4LUYB3RWyMlkJHseCf7Ck%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2150&quot; height=&quot;1380&quot; data-origin-width=&quot;2150&quot; data-origin-height=&quot;1380&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2062&quot; data-origin-height=&quot;616&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/E5xyW/btsLLRIWzCL/hoWZx20oNz2N6NgJJCbFlk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/E5xyW/btsLLRIWzCL/hoWZx20oNz2N6NgJJCbFlk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/E5xyW/btsLLRIWzCL/hoWZx20oNz2N6NgJJCbFlk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FE5xyW%2FbtsLLRIWzCL%2FhoWZx20oNz2N6NgJJCbFlk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2062&quot; height=&quot;616&quot; data-origin-width=&quot;2062&quot; data-origin-height=&quot;616&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;/b&gt;부채 사이클 단계에 따라 GDP 성장률과 부채 증가율의 분포가 뚜렷하게 달라짐을 확인할 수 있었다. 예를 들어, 호황기(1)에서는 GDP 성장률이 비교적 안정적인 분포를 가지며 중앙값이 높은 반면, 불황기(-1)에서는 GDP 성장률이 더 큰 변동성을 보였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한편, 표준편차(std) 히트맵에서는 불황기에서 모든 변수의 변동성이 증가하는 패턴이 관찰되었으며, 동일한 결과를 아래와 같이 확인해 볼 수도 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2458&quot; data-origin-height=&quot;1046&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DAkzH/btsLJAB8aFn/tdkReFPQHSyH80dBKgTt9K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DAkzH/btsLJAB8aFn/tdkReFPQHSyH80dBKgTt9K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DAkzH/btsLJAB8aFn/tdkReFPQHSyH80dBKgTt9K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDAkzH%2FbtsLJAB8aFn%2FtdkReFPQHSyH80dBKgTt9K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2458&quot; height=&quot;1046&quot; data-origin-width=&quot;2458&quot; data-origin-height=&quot;1046&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Step 5. 과거 데이터 기반 2025년 리세션 리스크 평가&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여러 경제 건전성 지표가 있지만, gdp 성장률, dept 성장률이 특히 부채사이클 특성을 뚜렷하게 대변하고 있음을 확인했다. 그렇다면 두 지표에 대한 최근(2023~2024) 움직임을 확인하고, 이러한 움직임이 리세션 초입의 동일 분포 움직임과 유사한가 평가해보도록 하자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;평가를 위해 각 불황기 직전 3개월에 해당하는 일자 정보를 추출한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1802&quot; data-origin-height=&quot;600&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/73f4R/btsLJFDyI2Z/7XbWerXkbVQJRiBUPC6KNk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/73f4R/btsLJFDyI2Z/7XbWerXkbVQJRiBUPC6KNk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/73f4R/btsLJFDyI2Z/7XbWerXkbVQJRiBUPC6KNk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F73f4R%2FbtsLJFDyI2Z%2F7XbWerXkbVQJRiBUPC6KNk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1802&quot; height=&quot;600&quot; data-origin-width=&quot;1802&quot; data-origin-height=&quot;600&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 시기의 gdp 성장률, dept 성장률 평균 및 표준편차 데이터를 구하고, 평가 시기(2023~2024)의 동일 지표와 비교한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1898&quot; data-origin-height=&quot;1330&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bZQKDI/btsLMahdFm9/CY3yS03dzOd9Xoh1eGgYy1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bZQKDI/btsLMahdFm9/CY3yS03dzOd9Xoh1eGgYy1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bZQKDI/btsLMahdFm9/CY3yS03dzOd9Xoh1eGgYy1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbZQKDI%2FbtsLMahdFm9%2FCY3yS03dzOd9Xoh1eGgYy1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1898&quot; height=&quot;1330&quot; data-origin-width=&quot;1898&quot; data-origin-height=&quot;1330&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;부채사이클 불황기 직전 시기와 분포 통계가 굉장히 유사하다. 비교를 위해 확장기 직전 시기도 동일하게 평가해보도록 한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1622&quot; data-origin-height=&quot;426&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bTCaw3/btsLK8R1aUQ/quP3xS38ZCloVHHuQLmrlk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bTCaw3/btsLK8R1aUQ/quP3xS38ZCloVHHuQLmrlk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bTCaw3/btsLK8R1aUQ/quP3xS38ZCloVHHuQLmrlk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbTCaw3%2FbtsLK8R1aUQ%2FquP3xS38ZCloVHHuQLmrlk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1622&quot; height=&quot;426&quot; data-origin-width=&quot;1622&quot; data-origin-height=&quot;426&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1896&quot; data-origin-height=&quot;1378&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wySoq/btsLJvnp2bK/H02fvtto4astgu7RpTPBKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wySoq/btsLJvnp2bK/H02fvtto4astgu7RpTPBKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wySoq/btsLJvnp2bK/H02fvtto4astgu7RpTPBKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwySoq%2FbtsLJvnp2bK%2FH02fvtto4astgu7RpTPBKK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1896&quot; height=&quot;1378&quot; data-origin-width=&quot;1896&quot; data-origin-height=&quot;1378&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현시점은 확장기 초입보다 불황기 초입과 분포 통계가 확연히 유사함을 알 수 있다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Step 6. 통화량 고려 부채 평가 및 결론&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1608&quot; data-origin-height=&quot;748&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cs7ZEr/btsLJAB8bw5/QuV9l1hmKgc3PaoEnZrOfK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cs7ZEr/btsLJAB8bw5/QuV9l1hmKgc3PaoEnZrOfK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cs7ZEr/btsLJAB8bw5/QuV9l1hmKgc3PaoEnZrOfK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcs7ZEr%2FbtsLJAB8bw5%2FQuV9l1hmKgc3PaoEnZrOfK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1608&quot; height=&quot;748&quot; data-origin-width=&quot;1608&quot; data-origin-height=&quot;748&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;좌측 차트에서 부채는 지속적으로 증가해왔고, 2008년, 2020년에 급증했던 것을 볼 수 있다. 이에 앞서 확인한 gdp 성장률을 고려할 때 현시점은 부채사이클 중 불황기 초입에 도래했음을 짐작할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;물론, 위 해석에는 과거 통계치를 기준으로 현재를 평가하는 것에는 외생 변수가 동일하다는 가정이 내포되어 있다. 기축통화국인 미국에서 특히 고려해 볼 법한 주요 외생 변수는 통화공급량인데, 이 공급량이 늘어나면 화폐가치가 하락하고 기발행된 부채를 희석시키는 효과가 발생하기 때문이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우측 차트를 보면 각 통화지표(m0: 본원통화, m1:협의통화, m2:광의통화) 대비 부채 수준을 보여주는데, 통화 발생량 대비 부채 수준은 되려 감소했다. 이렇게 2008년을 기점으로 시중의 통화 공급 상황이 완전히 달라졌으므로 현재의 부채 수준이 정말 상대적으로 과대한가? 불황기 초입으로 볼 수 있는가?라는 질문에 100% 확신을 가지는 것은 위험하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러나 화폐가치는 상대적이다. 타 국가 대비(특히 유럽) 미국의 양적완화 수준은 여전히 낮은 수준이며, 위 차트에서 가시적으로 보이는 것처럼 부채에 내재된 화폐가치가 급격히 떨어졌다고 판단하긴 어렵다. 따라서 &lt;b&gt;불황기로 진입할 가능성이 결코 낮지 않으며 이에 진중하게 대비할 필요가 있겠다.&lt;/b&gt;&lt;/p&gt;</description>
      <category>4. 실전/글로벌 매크로 분석</category>
      <category>Python</category>
      <category>경기불황</category>
      <category>금융데이터분석</category>
      <category>데이터분석</category>
      <category>미국부채</category>
      <category>미국채</category>
      <category>불황가능성</category>
      <category>시계열분석</category>
      <category>연준</category>
      <category>파이썬</category>
      <author>PO Wade</author>
      <guid isPermaLink="true">https://songseungwon.tistory.com/150</guid>
      <comments>https://songseungwon.tistory.com/150#entry150comment</comments>
      <pubDate>Sun, 12 Jan 2025 17:31:18 +0900</pubDate>
    </item>
    <item>
      <title>미 장단기 국채 금리차 기반 경기 침체 예측 분석(ARIMA + Probit)</title>
      <link>https://songseungwon.tistory.com/149</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;본 글에서는 ARIMA 모형을 활용해 미래 미국채 Spread 추이를 continuous하게 예측하고, 이어서 Probit 모형을 통해 ARIMA 예측값을 경기침체 여부로 변환한다. 경제 예측 모델링을 수행할 때에는 가급적 단순한(파라미터가 적은) 모델, 해석가능한 모델을 사용하는 것이 좋다. 일반적인 인식과 달리 경제 데이터는 딥러닝과 같은 모델 아키텍처로 적합시킬 만큼 대용량이 아닐 뿐더러 제대로 적합되지 않았을 때 Fat Tail Risk가 미치는 영향이 치명적일 수 있기 때문이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서 시계열 모델 파라미터를 분리 해석할 수 있는 ARIMA 모형, 종속변수가 binary(이진) 변수일 때 yes or no 에 대한 발생 확률을 가장 단순하게 설명가능한 Probit 모형을 사용하고, 이를 통해 현재의 미국채 Spread로 미래 경기침체 향방을 추정 시도해보려 한다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Step 1. 데이터 수집 및 전처리&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 FRED API에서 미국 장단기 금리(10년물, 2년물) 데이터, 그리고 Recession(경기침체) Indicator 데이터를 불러온다. Recession Indicator Ticker는 USREC이며, 아래 이미지와 같이 지난 연도별 경기침체 여부를 1 or 0으로 기록하고 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1580&quot; data-origin-height=&quot;1488&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HrvPR/btsLA7Tccb6/mcYvfmIu1KYDUpk0G5dlpK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HrvPR/btsLA7Tccb6/mcYvfmIu1KYDUpk0G5dlpK/img.png&quot; data-alt=&quot;https://fred.stlouisfed.org/series/USREC&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HrvPR/btsLA7Tccb6/mcYvfmIu1KYDUpk0G5dlpK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHrvPR%2FbtsLA7Tccb6%2FmcYvfmIu1KYDUpk0G5dlpK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;581&quot; height=&quot;1488&quot; data-origin-width=&quot;1580&quot; data-origin-height=&quot;1488&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;https://fred.stlouisfed.org/series/USREC&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2298&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/0GW4u/btsLzwTYBYy/WjOhawInVrBP8rCGPd7djK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/0GW4u/btsLzwTYBYy/WjOhawInVrBP8rCGPd7djK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/0GW4u/btsLzwTYBYy/WjOhawInVrBP8rCGPd7djK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F0GW4u%2FbtsLzwTYBYy%2FWjOhawInVrBP8rCGPd7djK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2298&quot; height=&quot;720&quot; data-origin-width=&quot;2298&quot; data-origin-height=&quot;720&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ARIMA 모형으로 금리차를 예측할 것이므로 모델 입력값으로 넣을 spread를 계산한다. 계산한 장단기 금리 spread와 역사적 recession 시계열은 아래 차트에서 확인할 수 있다. (연도별 recession 여부는 red-flag로 표시해 두었다.)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2298&quot; data-origin-height=&quot;1406&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sfA11/btsLBhuGnkh/0KF1jvCWq66wWZTs4bMkq1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sfA11/btsLBhuGnkh/0KF1jvCWq66wWZTs4bMkq1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sfA11/btsLBhuGnkh/0KF1jvCWq66wWZTs4bMkq1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsfA11%2FbtsLBhuGnkh%2F0KF1jvCWq66wWZTs4bMkq1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2298&quot; height=&quot;1406&quot; data-origin-width=&quot;2298&quot; data-origin-height=&quot;1406&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스프레드 역전 시기 직후에는 항상 불황이 이어졌고, 다가올 2025년에도 동일한 상황이 반복될 수 있다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Step 2. 금리 스프레드 시계열 패턴 분석&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ARIMA 모델링을 수행하기 위해서 시계열 인자(입력 변수)는 정상성(Stationarity)을 만족해야 한다. 정상성은 시점에 따라 분포 통계(평균, 분산)가 변하지 않는 상태를 의미하며, 이것이 변한다면 분포의 영속성을 전제로 하는 통계 분석은 불가하다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2422&quot; data-origin-height=&quot;1894&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/k2ri2/btsLAA2obS0/5K4ifcuLixzLsrA2bxwIc1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/k2ri2/btsLAA2obS0/5K4ifcuLixzLsrA2bxwIc1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/k2ri2/btsLAA2obS0/5K4ifcuLixzLsrA2bxwIc1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fk2ri2%2FbtsLAA2obS0%2F5K4ifcuLixzLsrA2bxwIc1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2422&quot; height=&quot;1894&quot; data-origin-width=&quot;2422&quot; data-origin-height=&quot;1894&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정상성 검정(ADF Test) 결과 p-value가 보편적인 significance level(유의 수준) 보다 낮다. 이에 &quot;단위근이 존재한다&quot;라는 ADF Test 귀무가설을 기각할 수 있다. 단위근이 존재하지 않으면 정상시계열일 가능성이 높지만 항상 그런 것은 아니다. ADF Test는 전체 시계열의 통계적 특성을 검사하므로 단위근으로 인한 단기적인, 약한 자기상관성은 발견해 내기 어려울 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서 위와 같이 자기상관성, 부분자기상관성을 차트로 확인해 볼 필요가 있다. 그 결과 Spread의 시차별 Correlation을 보여주는 첫 번째 행에서 직전연도의 스프레드가 당해연도 스프레드와 매우 높은 상관성이 존재함을 알 수 있었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 자기상관성이 존재하는 시계열은 시차에 따라 통계적 분포를 달리하므로 예측 모형의 추론을 어렵게 만든다. 이 경우 2가지 선택지가 존재한다. 차분을 수행한 다음 정상시계열로 만들고 예측하거나, 자기상관성을 고려한 모델링을 수행하는 것이다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Step 3. ARIMA 기반 금리 스프레드 예측&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1630&quot; data-origin-height=&quot;810&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cxFhbX/btsLz7lXoOx/0ONyV05rk5trVjs4UlFmAk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cxFhbX/btsLz7lXoOx/0ONyV05rk5trVjs4UlFmAk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cxFhbX/btsLz7lXoOx/0ONyV05rk5trVjs4UlFmAk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcxFhbX%2FbtsLz7lXoOx%2F0ONyV05rk5trVjs4UlFmAk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1630&quot; height=&quot;810&quot; data-origin-width=&quot;1630&quot; data-origin-height=&quot;810&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ARIMA 모형은 AR(p)+I(d)+MA(q)로 구성되고, p, d, q는 각각 자기상관성이 존재하는 차수, 모델 적합을 위해 필요한 차분 수, 오차연관성이 존재하는 차수를 의미한다. 각 인자를 유효 범위 내 다르게 설정하여 적합한 ARIMA 모델의 aic, bic 지표를 보면 앞서 언급한 선택지 2가지, 그러니까 차분을 수행한 다음 예측(p=0, d=1, q=0) 하거나 자기상관성을 고려한 모델링을 수행(p=1, d=0, q=0) 한 결과 trade-off가 존재함을 확인할 수 있다. aic(akaike information criterion)와 bic(bayesian information criterion)는 모델이 잘 적합했는가를 보여주며, 수치가 낮을수록 좋다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다만, 모델 파라미터(p+q+intercept)를 과하게 쓰면 aic는 낮아질지라도 bic는 그렇지 않은데, bic는 과최적화 가능성을 마이너스 요소로 취급해 주기 때문이다. 따라서 두 지표(aic, bic) 사이 밸런스를 같이 보면서 '최소한의 파라미터로 최대한의 적합을 이루었는가?'를 평가해야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;model_010의 경우 파라미터를 사용하지 않았고(&lt;i&gt;*차분은 모델 파라미터로 취급하지 않는다&lt;/i&gt;), model_100은 1개의 파라미터(q=1)를 사용했다. 1차 자기상관성을 고려한 모델 적합을 수행하였고, 파라미터를 사용하지 않은 model_010 대비 bic는 높지만 전체 모델 중 aic가 가장 낮다. 잘 적합된 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서, model_010을 선택하지 않는 이유는 model_100보다 높은 aic 수치도 있지만 차분을 수행함으로 인해 정보손실이 발생하는 것을 피하려는 의도도 있다. 우리는 경제 예측 모형을 만들고 있고, 금리 스프레드의 경우 과거(전월, 전년도)가 현재(당월, 당해연도) 스프레드에 영향을 주는 추세적 움직임이 반드시 존재하기 때문에 이러한 움직임을 모델에 녹여내는 것이 합리적이다. 또한, 앞서 정상성 검정을 수행했을 때 자기상관성이 존재하긴 하나 전체 기간에 대해 비정상 시계열로 보기도 어렵기 때문에 일정 범위 내 통계분포가 유지되는 특성 역시 고려해 굳이 차분을 수행하지 않겠다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2484&quot; data-origin-height=&quot;1904&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdsooo/btsLA6z6mxr/1f7QkEXbp7LKjZkrCQ6Jzk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdsooo/btsLA6z6mxr/1f7QkEXbp7LKjZkrCQ6Jzk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdsooo/btsLA6z6mxr/1f7QkEXbp7LKjZkrCQ6Jzk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbdsooo%2FbtsLA6z6mxr%2F1f7QkEXbp7LKjZkrCQ6Jzk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2484&quot; height=&quot;1904&quot; data-origin-width=&quot;2484&quot; data-origin-height=&quot;1904&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 결론을 토대로 ARIMA(1,0,0) 모형에 과거 데이터를 적합시키고, 미래 12개월 금리 스프레드를 예측하였다. 신뢰구간이 넓긴 하나 전통 계량통계 모형의 한계로 인식하고, 이 범위 내 개별 시나리오를 구상해야 한다. 모형은 현실을 굉장히 축소한 형태이므로 경제 이론이나 현실 사건에 근거하지 않은, 단순히 모델의 추정치에만 의지하는 것으로는 효용을 얻기 어렵다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Step 4. Probit 기반 경기침체 확률 예측&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2046&quot; data-origin-height=&quot;1162&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/clltFf/btsLBjTuX5n/4cx40uhMcPIR4QRetm5d31/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/clltFf/btsLBjTuX5n/4cx40uhMcPIR4QRetm5d31/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/clltFf/btsLBjTuX5n/4cx40uhMcPIR4QRetm5d31/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FclltFf%2FbtsLBjTuX5n%2F4cx40uhMcPIR4QRetm5d31%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2046&quot; height=&quot;1162&quot; data-origin-width=&quot;2046&quot; data-origin-height=&quot;1162&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 ARIMA로 예측한 미래 12개월 금리 데이터를 다시 Probit 모형에 적합시키고, recession 여부를 예측해보려 한다. 그전에 Probit 모형이 spread 단일 변수만으로 recession에 대한 유효한 예측 효용을 가질 수 있는가?를 확인했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 Probit Regression Results에서 coefficient table을 보면 Spread 변수의 coefficient가 -0.08로, Spread가 증가하면 recession 확률이 낮아질 것으로 예상할 수 있다. 그러나 해당 변수의 P-value가 0.371로, -0.08이라는 계수는 통계적으로 유의하지 않다. 따라서 spread 단일 변수로 recession을 예측하기에 Probit 모형이 충분히 적절하진 않은 것으로 보인다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2618&quot; data-origin-height=&quot;1530&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/QvNq7/btsLBKKaBiq/22cE18kSlaXd4cXFCunKCk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/QvNq7/btsLBKKaBiq/22cE18kSlaXd4cXFCunKCk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/QvNq7/btsLBKKaBiq/22cE18kSlaXd4cXFCunKCk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQvNq7%2FbtsLBKKaBiq%2F22cE18kSlaXd4cXFCunKCk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2618&quot; height=&quot;1530&quot; data-origin-width=&quot;2618&quot; data-origin-height=&quot;1530&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모형에서 Spread 변수의 계수는 음수이므로, 입력-출력 간에 반비례 경향성을 보인다. ARIMA(1,0,0)는 2025년 1월부터 해당 연도 연말까지 스프레드는 점차 증가할 것으로 예측했고, 이에 따라 Probit 회귀 모형은 Recession 리스크가 감소할 것으로 예측했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또, 모형 추정 결과로 볼 때 Recession 리스크 자체가 아주 높은 수준은 아닌데, 과거 시계열에서 recession 직전 장단기 스프레드 역전이 항상 발생했던 것을 고려하면 모델의 추정치를 온전히 신뢰하기는 어렵다. (&lt;i&gt;*Probit 모형은 내부적으로 z-score로 1차 추론 결과를 얻고 이를 CDF 함수를 사용해 확률값으로 변환해 준다. 2025년 1월부터 11월까지 11% 수준의 불황 리스크가 존재한다고 해석할 수 있다.)&lt;/i&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Step 5. 결론 / 인사이트&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;장단기 금리차는 역사적으로 유효한 경기 선행 지표로 활용될 수 있다. 이에 ARIMA 모형으로 미래 금리차를 1차 예측하고 예측된 금리차를 Probit 모델을 통해 경기침체 확률로 2차 예측했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Probit 모형으로 과거 금리 스프레드와 경기 불황 지표를 적합시켰을 때 두 지표는 서로 약한 반비례 관계를 갖고 있으며 2025년 금리 스프레드가 높아질 것이라고 예측한 ARIMA 모형 추정 결과에 따라 Probit 모형은 경기 불황 가능성이 점차 낮아질 것으로 예측하고 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러나 모델 추정 결과에 대한 통계적 유의성이 낮은 수준이므로 이러한 모델링 방법론을 투자에 직접 활용하기보다 경제적 근거와 추가 정량적 지표를 활용하여 의사결정 보조 수단으로 참고하는 정도가 적절하겠다.&lt;/p&gt;</description>
      <category>4. 실전/글로벌 매크로 분석</category>
      <category>계량경제</category>
      <category>계량분석</category>
      <category>국채금리</category>
      <category>금리스프레드</category>
      <category>데이터분석</category>
      <category>데이터사이언스</category>
      <category>연준</category>
      <category>장단기금리</category>
      <category>통계</category>
      <category>파이썬</category>
      <author>PO Wade</author>
      <guid isPermaLink="true">https://songseungwon.tistory.com/149</guid>
      <comments>https://songseungwon.tistory.com/149#entry149comment</comments>
      <pubDate>Sun, 29 Dec 2024 14:43:27 +0900</pubDate>
    </item>
    <item>
      <title>파이썬 금융 데이터 분석 - 디플레이션 국면의 나스닥 환헤지 전략 평가</title>
      <link>https://songseungwon.tistory.com/148</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;현시점에서 Nasdaq 100, 환헤지 Nasdaq 100 중 어느 쪽에 베팅하는 것이 유리할까?&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Step 1. 데이터 수집&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선, 전략 평가를 위한 데이터를 수집한다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Nasdaq 100 H, UH 지수: 각각 환율 헷지를 적용한 경우, 그렇지 않은 경우 자산 가격 변화를 비교하기 위함이다.&lt;/li&gt;
&lt;li&gt;원/달러 환율: 헷지, 언헷지 간 성과 차이를 분석하기 위해 환율 데이터를 불러온다.&lt;/li&gt;
&lt;li&gt;금 가격: 경제 불확실성과 안전자산으로서의 달러 수요를 함께 이해하기 위해 사용할 것이다. 금과 달러 관계를 살펴보면서 현재 환율 상승이 경기 불황에 기인한 것인지 파악할 수 있다&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3192&quot; data-origin-height=&quot;322&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/N2j2f/btsLAWXMWNn/WTfHPafgMBRTALrZ6Yzrn0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/N2j2f/btsLAWXMWNn/WTfHPafgMBRTALrZ6Yzrn0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/N2j2f/btsLAWXMWNn/WTfHPafgMBRTALrZ6Yzrn0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FN2j2f%2FbtsLAWXMWNn%2FWTfHPafgMBRTALrZ6Yzrn0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3192&quot; height=&quot;322&quot; data-origin-width=&quot;3192&quot; data-origin-height=&quot;322&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2660&quot; data-origin-height=&quot;1346&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nrxwe/btsLAZNKM1g/tQVfVCG8KrHHaUNkbzAmr0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nrxwe/btsLAZNKM1g/tQVfVCG8KrHHaUNkbzAmr0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nrxwe/btsLAZNKM1g/tQVfVCG8KrHHaUNkbzAmr0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fnrxwe%2FbtsLAZNKM1g%2FtQVfVCG8KrHHaUNkbzAmr0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2660&quot; height=&quot;1346&quot; data-origin-width=&quot;2660&quot; data-origin-height=&quot;1346&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Step 2. 데이터 전처리 및 로그 변환&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자산 가격의 시계열 데이터는 지수적 증감이 있기 때문에 이를 직접 비교할 경우 시각적 착시가 발생할 수 있다. 따라서 로그 변환을 통해 증가율(%) 해석이 가능하도록 전처리한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2924&quot; data-origin-height=&quot;1420&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bcOxq4/btsLAXvDYuH/PmeMy79mVFGbOxslvGyhaK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bcOxq4/btsLAXvDYuH/PmeMy79mVFGbOxslvGyhaK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bcOxq4/btsLAXvDYuH/PmeMy79mVFGbOxslvGyhaK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbcOxq4%2FbtsLAXvDYuH%2FPmeMy79mVFGbOxslvGyhaK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2924&quot; height=&quot;1420&quot; data-origin-width=&quot;2924&quot; data-origin-height=&quot;1420&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 subplots에서 두 번째 행 2개 차트가 각각 로그 변환된 nasdaq100 H, UH 그리고 원달러 환율을 보여주고 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 예상할 수 있듯이, 달러 헤지 하지 않은 nasdaq100과 헤지 된 nasdaq100의 가격 갭은 환율 상승분과 거의 동일하다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2512&quot; data-origin-height=&quot;1426&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cHF2uy/btsLx6ug5gB/KNVy8C0VpbjO63LqRgvvs0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cHF2uy/btsLx6ug5gB/KNVy8C0VpbjO63LqRgvvs0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cHF2uy/btsLx6ug5gB/KNVy8C0VpbjO63LqRgvvs0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcHF2uy%2FbtsLx6ug5gB%2FKNVy8C0VpbjO63LqRgvvs0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2512&quot; height=&quot;1426&quot; data-origin-width=&quot;2512&quot; data-origin-height=&quot;1426&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;환언헤지 자산의 수익률은 자산의 기초 수익율 + 환율 상승률과 같기 때문에 원/달러 환율 상승이 달러 언헤지 자산의 성과를 직접적으로 견인하게 된다. 따라서 환율 상승효과를 보려면 헤지 자산이 아닌 언헤지 자산을 매수해야 한다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Step 3. 현재 환율 위치 평가&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2024년 12월 기점 원달러 환율은 지난 20년 대비 평균 + 2 표준편차를 초과한 높은 수준에 위치해 있다. 이는 2008년 이후로 가장 높은 상태인데, 현재 환율 변동은 당시와 같은 글로벌 금융위기가 아닌 국내 정치적 이슈에 상당 부분 기인함을 고려할 때 중단기적 하방 압력이 강할 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2864&quot; data-origin-height=&quot;1268&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/beAjgu/btsLx7NsOSw/3M39jmoyWI7YMeaziBkuX1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/beAjgu/btsLx7NsOSw/3M39jmoyWI7YMeaziBkuX1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/beAjgu/btsLx7NsOSw/3M39jmoyWI7YMeaziBkuX1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbeAjgu%2FbtsLx7NsOSw%2F3M39jmoyWI7YMeaziBkuX1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2864&quot; height=&quot;1268&quot; data-origin-width=&quot;2864&quot; data-origin-height=&quot;1268&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Step 4. 금 가격을 통한 달러 강세 요인 분석&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한편, 국내 정치 이슈를 논외로 하고 현재의 달러 강세가 경기 사이클의 일시적 효과인지, 혹은 구조적 변화에 따른 것인지를 금 가격과의 상관관계를 통해 확인할 수 있다. 이를 위해 20년치 금 가격 지수를 불러와 원/달러 환율과의 연도별 상관계수를 추출한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2396&quot; data-origin-height=&quot;834&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bAuhc6/btsLACy5ToN/hdkC5cltNsKeWfZqZSwGN1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bAuhc6/btsLACy5ToN/hdkC5cltNsKeWfZqZSwGN1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bAuhc6/btsLACy5ToN/hdkC5cltNsKeWfZqZSwGN1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbAuhc6%2FbtsLACy5ToN%2FhdkC5cltNsKeWfZqZSwGN1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2396&quot; height=&quot;834&quot; data-origin-width=&quot;2396&quot; data-origin-height=&quot;834&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2242&quot; data-origin-height=&quot;1310&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7gES8/btsLyT2UydI/95YHzVIi0bb2xjDUmllx71/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7gES8/btsLyT2UydI/95YHzVIi0bb2xjDUmllx71/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7gES8/btsLyT2UydI/95YHzVIi0bb2xjDUmllx71/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7gES8%2FbtsLyT2UydI%2F95YHzVIi0bb2xjDUmllx71%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2242&quot; height=&quot;1310&quot; data-origin-width=&quot;2242&quot; data-origin-height=&quot;1310&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2816&quot; data-origin-height=&quot;1430&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GpRXJ/btsLBitlZMT/b5ZKokfWnUMd5KoF94NVYk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GpRXJ/btsLBitlZMT/b5ZKokfWnUMd5KoF94NVYk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GpRXJ/btsLBitlZMT/b5ZKokfWnUMd5KoF94NVYk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGpRXJ%2FbtsLBitlZMT%2Fb5ZKokfWnUMd5KoF94NVYk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2816&quot; height=&quot;1430&quot; data-origin-width=&quot;2816&quot; data-origin-height=&quot;1430&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;금이 달러 가치 하락을 헤지하는 수단으로 활용될 수 있기 때문에 원/달러 환율과 금 가격은 디커플링 되는 경향이 있는데, 역사적으로 드물게 코로나19와 같은 경기불황 심리가 강하게 발생하는 사건에서 커플링 되기도 한다. 위 차트에서 금 가격과 원/달러 환율이 양의 상관관계를 보이는 경우 파란색, 반대의 경우 빨간색으로 표시하고, 상관계수 절댓값이 1에 가까울수록 투명도가 낮게 설정했다. 2005년 이후 둘 사이 상관계수는 2019년이 0.7로 가장 높았고, 그다음이 2024년 0.54 수준이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;금이 절대적 안전자산이라 하면, 달러는 타 국가 화폐 대비 상대적 안전자산이다. 따라서 코로나19 시기에 경제 불황 우려로 안전자산 수요가 급증하여 두 자산은 동시에 가격이 상승하는데 2024년 역시 유사한 현상으로 풀이된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한편, 2008년 금융위기 당시에는 오히려 디커플링이 유지되었는데,&lt;span style=&quot;letter-spacing: 0px;&quot;&gt; 금융 위기의 경우 자산 가격 하락으로 인한 대규모 마진콜로 금 매도 압력이 발생했고, 동시에 안전자산 수요에 의한 달러 강세와 금 약세가 공존했기 때문이다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;실질적인 자산 가격 하락이 발생하지 않는다면 단순 경기 불황에 대한 우려 심리가 두 자산의 커플링을 유발하고 이러한 커플링은 역사적으로 길게 지속되지 않았다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;종합하면, 현재 원/달러 환율은 역사적으로 매우 고점에 있고 경기 불황 우려에 따른 금 가격과의 커플링 시기임을 고려할 때 환헤지 자산에 투자하여 원/달러 환율 하락으로 인한 자산 수익률 감소를 방어하는 편이 유리하겠다.&lt;/p&gt;</description>
      <category>4. 실전/글로벌 매크로 분석</category>
      <category>yfinance</category>
      <category>금융분석</category>
      <category>달러환율</category>
      <category>데이터분석</category>
      <category>데이터사이언스</category>
      <category>시계열분석</category>
      <category>원달러환율</category>
      <category>파이썬</category>
      <category>파이썬데이터분석</category>
      <category>환헤지</category>
      <author>PO Wade</author>
      <guid isPermaLink="true">https://songseungwon.tistory.com/148</guid>
      <comments>https://songseungwon.tistory.com/148#entry148comment</comments>
      <pubDate>Sat, 28 Dec 2024 01:18:00 +0900</pubDate>
    </item>
  </channel>
</rss>