<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>개미주식 공부</title>
    <link>https://antdsl.tistory.com/</link>
    <description>antdsl 님의 블로그 입니다.</description>
    <language>ko</language>
    <pubDate>Thu, 24 Sep 2026 01:35:06 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>개미 트레이딩</managingEditor>
    <item>
      <title>랜스 브라이트스타인(Lance Brightstein)</title>
      <link>https://antdsl.tistory.com/13</link>
      <description>&lt;p data-path-to-node=&quot;0&quot; data-ke-size=&quot;size16&quot;&gt;유명 트레이더 랜스 브라이트스타인(Lance Brightstein)에게 배운 **앵커드 VWAP (Volume Weighted Average Price)**을 활용한 구체적인 매매 전략에 대한 상세 분석입니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;1&quot; data-ke-size=&quot;size16&quot;&gt;이 전략은 단순한 평균선이 아닌 &lt;b&gt;거래량을 반영한 세력의 진짜 평균 단가&lt;/b&gt;를 기준으로 하여, 리스크를 통제하고 수익을 극대화하는 것을 목표로 합니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;2&quot; data-ke-size=&quot;size16&quot;&gt;다음은 이 전략의 핵심 분석 및 매매 로직 요약입니다.&lt;/p&gt;
&lt;hr data-path-to-node=&quot;3&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-path-to-node=&quot;4&quot; data-ke-size=&quot;size26&quot;&gt;앵커드 VWAP 기반 매매 전략 분석&lt;/h2&gt;
&lt;h3 data-path-to-node=&quot;5&quot; data-ke-size=&quot;size23&quot;&gt;1.   핵심 도구: VWAP (거래량 가중 평균 가격)의 이해&lt;/h3&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;6&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;구분&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;VWAP (거래량 가중 평균 가격)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;EMA/SMA (이동평균선)&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,1,0,0&quot;&gt;&lt;b&gt;산출 기준&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,1,1,0&quot;&gt;&lt;b&gt;가격 + 거래량 (Volume)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,1,2,0&quot;&gt;&lt;b&gt;단순히 가격 (Price)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,2,0,0&quot;&gt;&lt;b&gt;의미&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,2,1,0&quot;&gt;&lt;b&gt;세력(기관, 큰손)의 진짜 평균 평단&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,2,2,0&quot;&gt;시장의 단순 평균 가격/방향&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,3,0,0&quot;&gt;&lt;b&gt;실전 활용&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,3,1,0&quot;&gt;매수/매도 포지션 결정의 &lt;b&gt;기준선&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,3,2,0&quot;&gt;시장 방향성만 확인 가능&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,4,0,0&quot;&gt;&lt;b&gt;심리 분석&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,4,1,0&quot;&gt;&lt;b&gt;VWAP 위에 가격: 매수세 우세 / 아래: 매도세 우세&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,4,2,0&quot;&gt;실제 돈의 힘(거래량)을 알 수 없음&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote data-path-to-node=&quot;7&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-path-to-node=&quot;7,0&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;핵심 원칙:&lt;/b&gt; VWAP은 단순히 평균 가격이 아니라, &lt;b&gt;돈이 가장 많이 몰린 핵심 가격대&lt;/b&gt;를 보여주므로 기관 투자자들이 매매 기준으로 삼는 실전적인 지표입니다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 data-path-to-node=&quot;8&quot; data-ke-size=&quot;size23&quot;&gt;2.   전략의 최적 시간대 (Timeframe)&lt;/h3&gt;
&lt;p data-path-to-node=&quot;9&quot; data-ke-size=&quot;size16&quot;&gt;수많은 백테스트를 통해 검증한 결과, VWAP 지표는 &lt;b&gt;너무 짧은 분봉&lt;/b&gt;보다 긴 타임프레임에서 신호의 정확도와 수익률이 가장 높게 나타났습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;10&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;최적 시간대:&lt;/b&gt; &lt;b&gt;1시간봉&lt;/b&gt; 또는 &lt;b&gt;4시간봉&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;11&quot; data-ke-size=&quot;size23&quot;&gt;3.   매매 진입 및 청산 로직 (색상 기반)&lt;/h3&gt;
&lt;p data-path-to-node=&quot;12&quot; data-ke-size=&quot;size16&quot;&gt;이 전략은 기본 VWAP이 아닌 &lt;b&gt;색상으로 심리를 시각화한 개선형 VWAP&lt;/b&gt; 지표를 사용합니다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;13&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;구분&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;조건&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;실행&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;13,1,0,0&quot;&gt;&lt;b&gt;롱 포지션 (매수)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;13,1,1,0&quot;&gt;빨간 VWAP 선이 이어지다가 &lt;b&gt;초록색으로 바뀔 때&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;13,1,2,0&quot;&gt;봉 마감 후 다음 캔들에서 롱 포지션 진입&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;13,2,0,0&quot;&gt;&lt;b&gt;숏 포지션 (매도)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;13,2,1,0&quot;&gt;초록 VWAP 선이 이어지다가 &lt;b&gt;빨간색으로 바뀔 때&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;13,2,2,0&quot;&gt;봉 마감 후 다음 캔들에서 숏 포지션 진입&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 data-path-to-node=&quot;14&quot; data-ke-size=&quot;size23&quot;&gt;4.  ️ 리스크 관리: 손익비(R:R) 및 분할 익절&lt;/h3&gt;
&lt;p data-path-to-node=&quot;15&quot; data-ke-size=&quot;size16&quot;&gt;이 전략의 성공은 &lt;b&gt;손익비를 통제&lt;/b&gt;하고 &lt;b&gt;수익을 극대화&lt;/b&gt;하는 방식에 달려 있습니다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;16&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;단계&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;실행 로직&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;목적 및 원칙&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;16,1,0,0&quot;&gt;&lt;b&gt;손익비 설정&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;16,1,1,0&quot;&gt;진입 전, 손실 대비 최소 &lt;b&gt;1:3 손익비&lt;/b&gt;로 익절 라인을 설정 (예: 손절 -1% &amp;rarr; 익절 +3% 이상).&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;16,1,2,0&quot;&gt;리스크 통제 및 수익 극대화 원칙 준수.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;16,2,0,0&quot;&gt;&lt;b&gt;손절 (SL) 설정&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;16,2,1,0&quot;&gt;진입 전 캔들의 &lt;b&gt;저가&lt;/b&gt; (롱 포지션 시) 또는 &lt;b&gt;고가&lt;/b&gt; (숏 포지션 시)에 손절 라인을 설정.&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;16,2,2,0&quot;&gt;손절은 작게, 기계적으로 실행.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;16,3,0,0&quot;&gt;&lt;b&gt;1차 익절 (50% 청산)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;16,3,1,0&quot;&gt;설정된 1:3 익절 라인에 가격이 닿았을 때 &lt;b&gt;물량의 절반(50%)만 익절&lt;/b&gt;하고 수익을 확정.&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;16,3,2,0&quot;&gt;손절이 발생해도 전체적으로 &lt;b&gt;플러스 수익&lt;/b&gt;이 남도록 리스크를 회피.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;16,4,0,0&quot;&gt;&lt;b&gt;최종 익절 (잔여 물량)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;16,4,1,0&quot;&gt;&lt;b&gt;나머지 50% 물량&lt;/b&gt;은 VWAP 선의 색상이 &lt;b&gt;다시 바뀔 때&lt;/b&gt;까지 추종하며 홀딩.&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;16,4,2,0&quot;&gt;예측할 수 없는 **큰 수익 구간(오버슈팅)**을 놓치지 않고 극대화.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 data-path-to-node=&quot;17&quot; data-ke-size=&quot;size23&quot;&gt;5.   통합적 분석&lt;/h3&gt;
&lt;p data-path-to-node=&quot;18&quot; data-ke-size=&quot;size16&quot;&gt;이 전략은 기술적 분석과 심리적 요소를 결합한 효율적인 매매법입니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-path-to-node=&quot;19&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;세력 추종:&lt;/b&gt; VWAP을 통해 시장 주도 세력의 평단을 기준으로 매매함으로써 추세의 신뢰도를 높입니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;리스크 통제:&lt;/b&gt; 1:3 손익비와 50% 분할 익절을 통해 **&quot;잃을 때는 작게, 벌 때는 크게&quot;**라는 트레이딩의 황금률을 실현합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;추세 극대화:&lt;/b&gt; 잔여 물량을 색상 변화까지 홀딩함으로써, 추세가 길게 이어질 경우 얻을 수 있는 &lt;b&gt;잠재적 수익을 극대화&lt;/b&gt;합니다.&lt;/li&gt;
&lt;/ol&gt;</description>
      <author>개미 트레이딩</author>
      <guid isPermaLink="true">https://antdsl.tistory.com/13</guid>
      <comments>https://antdsl.tistory.com/13#entry13comment</comments>
      <pubDate>Wed, 10 Dec 2025 21:28:38 +0900</pubDate>
    </item>
    <item>
      <title>하이키나시(Heikin-Ashi) 차트의 원리, 특징, 패턴 분석</title>
      <link>https://antdsl.tistory.com/12</link>
      <description>&lt;div id=&quot;model-response-message-contentr_ed77cbb4a570e2c8&quot;&gt;
&lt;p data-path-to-node=&quot;0&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;하이키나시(Heikin-Ashi) 차트&lt;/b&gt;의 원리, 특징, 패턴 분석, 그리고 이를 활용한 &lt;b&gt;실전 매매 전략 6가지&lt;/b&gt;를 매우 상세하고 체계적으로 설명하고 있습니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;1&quot; data-ke-size=&quot;size16&quot;&gt;하이키나시는 일반 캔들의 단점인 **'노이즈(불필요한 가격 변동)'**를 제거하고 **'추세(Trend)'**를 명확하게 보여주는 데 특화된 강력한 분석 도구입니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;2&quot; data-ke-size=&quot;size16&quot;&gt;제시된 방대한 내용을 핵심 원리와 실전 전략을 중심으로 분석하여 정리해 드립니다.&lt;/p&gt;
&lt;hr data-path-to-node=&quot;3&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-path-to-node=&quot;4&quot; data-ke-size=&quot;size26&quot;&gt;  하이키나시(Heikin-Ashi) 차트 핵심 분석&lt;/h2&gt;
&lt;h3 data-path-to-node=&quot;5&quot; data-ke-size=&quot;size23&quot;&gt;1.   하이키나시의 기본 원리 및 특징&lt;/h3&gt;
&lt;p data-path-to-node=&quot;6&quot; data-ke-size=&quot;size16&quot;&gt;하이키나시(平均足)는 일본어로 **'평균 막대'**를 뜻하며, 일반 캔들의 시가, 종가, 고가, 저가를 &lt;b&gt;평균화하여 재계산&lt;/b&gt;함으로써 차트의 &lt;b&gt;추세 연속성&lt;/b&gt;을 극대화합니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div data-hveid=&quot;4&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;7&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;7,0,0,0&quot;&gt;구분&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;7,0,1,0&quot;&gt;일반 캔들&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;7,0,2,0&quot;&gt;하이키나시 캔들&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;7,1,0,0&quot;&gt;&lt;b&gt;목적&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;7,1,1,0&quot;&gt;하루의 정확한 가격 변동(시가, 종가) 기록&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;7,1,2,0&quot;&gt;가격 변동을 평균화하여 &lt;b&gt;추세 필터링&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;7,2,0,0&quot;&gt;&lt;b&gt;특징&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;7,2,1,0&quot;&gt;잦은 색 변화로 &lt;b&gt;노이즈&lt;/b&gt; 발생, 추세가 끊겨 보임&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;7,2,2,0&quot;&gt;색 변화가 적고 부드러움, &lt;b&gt;추세가 자연스럽게 이어짐&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;7,3,0,0&quot;&gt;&lt;b&gt;강점&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;7,3,1,0&quot;&gt;정확한 가격 정보&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;7,3,2,0&quot;&gt;&lt;b&gt;추세의 방향(매수/매도 압력) 파악에 탁월&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;Exporter vers Sheets&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-path-to-node=&quot;8&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;핵심 계산 원리:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;9&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;시가 (HA Open):&lt;/b&gt; 이전 하이키나시 캔들의 시가와 종가를 더해 2로 나눈 값입니다. (이전 봉의 중간값)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;종가 (HA Close):&lt;/b&gt; 일반 캔들의 시가, 종가, 고가, 저가를 모두 더해 4로 나눈 값입니다. (현재 봉의 평균값)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;10&quot; data-ke-size=&quot;size23&quot;&gt;2.   추세 판독의 핵심 3가지 요소&lt;/h3&gt;
&lt;p data-path-to-node=&quot;11&quot; data-ke-size=&quot;size16&quot;&gt;하이키나시는 &lt;b&gt;색, 몸통, 꼬리&lt;/b&gt; 세 가지 요소를 통해 시장의 에너지와 방향을 직관적으로 보여줍니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div data-hveid=&quot;7&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;12&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;12,0,0,0&quot;&gt;요소&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;12,0,1,0&quot;&gt;상승 추세 (양봉/녹색)&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;12,0,2,0&quot;&gt;하락 추세 (음봉/빨간색)&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;12,0,3,0&quot;&gt;추세 전환/약화 신호&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;12,1,0,0&quot;&gt;&lt;b&gt;색의 연속성&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;12,1,1,0&quot;&gt;녹색 캔들 연속&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;12,1,2,0&quot;&gt;빨간색 캔들 연속&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;12,1,3,0&quot;&gt;&lt;b&gt;색이 바뀌면&lt;/b&gt; (녹 &amp;rarr; 빨 또는 빨 &amp;rarr; 녹) 추세 약화/전환.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;12,2,0,0&quot;&gt;&lt;b&gt;몸통의 크기&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;12,2,1,0&quot;&gt;길수록 &lt;b&gt;강한 매수 모멘텀&lt;/b&gt;. 짧아지면 매수세 소진 중.&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;12,2,2,0&quot;&gt;길수록 &lt;b&gt;강한 매도 모멘텀&lt;/b&gt;. 짧아지면 매도세 소진 중.&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;12,3,0,0&quot;&gt;&lt;b&gt;꼬리의 위치&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;12,3,1,0&quot;&gt;&lt;b&gt;아래 꼬리가 짧거나 없음.&lt;/b&gt; (매도 압력 부재)&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;12,3,2,0&quot;&gt;&lt;b&gt;위 꼬리가 짧거나 없음.&lt;/b&gt; (매수 압력 부재)&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;12,3,3,0&quot;&gt;&lt;b&gt;없던 쪽에 꼬리&lt;/b&gt;가 생기기 시작하면 매수/매도 균형 흔들림.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;Exporter vers Sheets&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-path-to-node=&quot;13&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;도지 캔들 (Doji):&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;14&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;몸통이 거의 없고 위아래 꼬리가 긴 형태.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;매수세와 매도세가 균형&lt;/b&gt;을 이루며 시장 에너지가 멈춘 구간.&lt;/li&gt;
&lt;li&gt;주로 &lt;b&gt;추세의 끝이나 전환 직전&lt;/b&gt;에 나타나는 강력한 경고 신호.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-path-to-node=&quot;15&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-path-to-node=&quot;16&quot; data-ke-size=&quot;size26&quot;&gt;3.   하이키나시 실전 매매법 6가지 분석&lt;/h2&gt;
&lt;p data-path-to-node=&quot;17&quot; data-ke-size=&quot;size16&quot;&gt;제시된 6가지 매매법은 하이키나시의 &lt;b&gt;추세 연속성&lt;/b&gt;을 기반으로 **지지/저항선, 이동평균선, 보조지표(RSI, Stochastics)**를 결합하여 신뢰도를 높인 전략입니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div data-hveid=&quot;10&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;18&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;18,0,0,0&quot;&gt;#&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;18,0,1,0&quot;&gt;매매법&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;18,0,2,0&quot;&gt;결합 지표/패턴&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;18,0,3,0&quot;&gt;핵심 진입 신호&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;18,0,4,0&quot;&gt;리스크 관리 (SL/TP)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;18,1,0,0&quot;&gt;&lt;b&gt;1&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;18,1,1,0&quot;&gt;&lt;b&gt;지지/저항선&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;18,1,2,0&quot;&gt;저항선, 도지 캔들, 색 전환&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;18,1,3,0&quot;&gt;&lt;b&gt;저항선 부근에서 도지 출현 후, 빨간 음봉 연속&lt;/b&gt; 시 매도.&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;18,1,4,0&quot;&gt;SL: 직전 고점 위 / TP: 손익비 2:1 이상&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;18,2,0,0&quot;&gt;&lt;b&gt;2&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;18,2,1,0&quot;&gt;&lt;b&gt;돌파 매매&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;18,2,2,0&quot;&gt;저항선, 장대 양봉&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;18,2,3,0&quot;&gt;&lt;b&gt;장대 양봉이 저항선을 강하게 돌파&lt;/b&gt;하는 시점 (종가 부근 매수).&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;18,2,4,0&quot;&gt;SL: 직전 저항선 아래 / TP: 손익비 2:1 이상&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;18,3,0,0&quot;&gt;&lt;b&gt;3&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;18,3,1,0&quot;&gt;&lt;b&gt;이동 평균선&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;18,3,2,0&quot;&gt;20일 이평선, 색 전환/도지&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;18,3,3,0&quot;&gt;가격이 우상향 20일선까지 되돌아왔을 때, &lt;b&gt;20일선 지지 확인 + 색 전환(빨&amp;rarr;녹)&lt;/b&gt; 시 매수.&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;18,3,4,0&quot;&gt;SL: 20일선 아래 / TP: 손익비 2:1 이상&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;18,4,0,0&quot;&gt;&lt;b&gt;3-응용&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;18,4,1,0&quot;&gt;&lt;b&gt;이평선 2개&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;18,4,2,0&quot;&gt;9일선/18일선 골든 크로스&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;18,4,3,0&quot;&gt;&lt;b&gt;골든 크로스&lt;/b&gt; 발생 후, 캔들이 두 선 위에 있고 &lt;b&gt;몸통 큰 강세 양봉&lt;/b&gt; 출현 시 매수.&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;18,4,4,0&quot;&gt;SL: 18일선 아래 / TP: 손익비 2:1 또는 9일선 하향 돌파 시&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;18,5,0,0&quot;&gt;&lt;b&gt;4&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;18,5,1,0&quot;&gt;&lt;b&gt;추세 반전&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;18,5,2,0&quot;&gt;도지 캔들, 몸통 확대&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;18,5,3,0&quot;&gt;추세 끝에서 &lt;b&gt;도지 출현&lt;/b&gt; 후, &lt;b&gt;몸통이 커지는 양봉 2개 연속&lt;/b&gt; 등장 시 매수.&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;18,5,4,0&quot;&gt;SL: 직전 저점 아래 / TP: 손익비 2:1 이상&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;18,6,0,0&quot;&gt;&lt;b&gt;5&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;18,6,1,0&quot;&gt;&lt;b&gt;RSI 결합&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;18,6,2,0&quot;&gt;RSI 50선&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;18,6,3,0&quot;&gt;하이키나시 **색 전환(빨&amp;rarr;녹)**과 &lt;b&gt;RSI 50선 상향 돌파&lt;/b&gt;가 동시에 발생 시 매수.&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;18,6,4,0&quot;&gt;단기/스캘핑에 유용, 50선 재이탈 시 매도 고려.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;18,7,0,0&quot;&gt;&lt;b&gt;6&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;18,7,1,0&quot;&gt;&lt;b&gt;스토캐스틱&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;18,7,2,0&quot;&gt;Stochastics 20선 (과매도)&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;18,7,3,0&quot;&gt;음봉 몸통이 짧아지다가 &lt;b&gt;양봉 2개 연속&lt;/b&gt; 등장 + &lt;b&gt;Stochastics 20선 상향 돌파&lt;/b&gt; 시 매수.&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;18,7,4,0&quot;&gt;SL: 직전 저점 아래 / TP: 손익비 2:1 이상&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;Exporter vers Sheets&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-path-to-node=&quot;19&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-path-to-node=&quot;20&quot; data-ke-size=&quot;size26&quot;&gt;  결론: 하이키나시 활용의 강점&lt;/h2&gt;
&lt;p data-path-to-node=&quot;21&quot; data-ke-size=&quot;size16&quot;&gt;하이키나시 차트는 일반 캔들 차트의 **'노이즈(불필요한 가격 변동)'**를 제거하고 **'본질적인 추세'**를 부드럽고 명확하게 보여줍니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-path-to-node=&quot;22&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;추세 확인:&lt;/b&gt; 색의 연속성과 꼬리의 부재를 통해 시장의 방향을 &lt;b&gt;심리적 동요 없이&lt;/b&gt; 직관적으로 파악할 수 있습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;전환 포착:&lt;/b&gt; &lt;b&gt;도지 캔들&lt;/b&gt;과 &lt;b&gt;몸통 크기 축소&lt;/b&gt; 및 &lt;b&gt;꼬리 등장&lt;/b&gt;을 통해 추세 약화 및 반전 시점을 미리 경고합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;신뢰도 강화:&lt;/b&gt; 이동평균선, RSI, 스토캐스틱 등 다른 지표와 결합하여 &lt;b&gt;단순 색 변화가 아닌 모멘텀 검증&lt;/b&gt;을 통해 매매 타점의 신뢰도를 크게 높일 수 있습니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div id=&quot;model-response-message-contentr_f195a6d6e12bcad7&quot;&gt;
&lt;p data-path-to-node=&quot;0&quot; data-ke-size=&quot;size16&quot;&gt;제시된 내용은 &lt;b&gt;스윙 트레이딩(Swing Trading)&lt;/b&gt;, &lt;b&gt;데이 트레이딩(Day Trading)&lt;/b&gt;, 그리고 그 하위 개념인 **스캘핑(Scalping)**을 정의하고, 특히 &lt;b&gt;스캘핑&lt;/b&gt;을 위한 구체적인 &lt;b&gt;차트 설정, 도구, 그리고 확률 기반의 반대 추세(Counter-Trend) 매매 전략&lt;/b&gt;을 설명합니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;1&quot; data-ke-size=&quot;size16&quot;&gt;핵심 내용을 도구, 전략, 그리고 확률 분석으로 나누어 정리해 드립니다.&lt;/p&gt;
&lt;hr data-path-to-node=&quot;2&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-path-to-node=&quot;3&quot; data-ke-size=&quot;size26&quot;&gt;1.   트레이딩 유형 및 필수 도구 설정&lt;/h2&gt;
&lt;h3 data-path-to-node=&quot;4&quot; data-ke-size=&quot;size23&quot;&gt;1.1. 트레이딩 스타일 정의&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;5&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;스윙 트레이딩 (Swing Trading):&lt;/b&gt; 1990년대 초 인터뷰에서 유래된 용어로, 단기 스타일의 시장 플레이를 의미합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;데이 트레이딩 (Day Trading):&lt;/b&gt; 단기 지향적 마이크로 트레이딩이며, 다음 두 가지로 나뉩니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;5,1,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;데이 트레이딩:&lt;/b&gt; 일반적인 단기 매매.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;스캘핑 (Scalping):&lt;/b&gt; 데이 트레이딩의 하위 집합(Little Brother). &lt;b&gt;매우 마이크로한&lt;/b&gt; 접근 방식으로, 많은 전문 트레이더들이 생계를 유지하는 분야입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;6&quot; data-ke-size=&quot;size23&quot;&gt;1.2. 스캘핑을 위한 차트 설정&lt;/h3&gt;
&lt;p data-path-to-node=&quot;7&quot; data-ke-size=&quot;size16&quot;&gt;스캘핑을 제대로 수행하기 위한 세 가지 필수 도구가 제시됩니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div data-hveid=&quot;4&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;8&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,0,0,0&quot;&gt;도구&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,0,1,0&quot;&gt;설정&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,0,2,0&quot;&gt;역할&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,1,0,0&quot;&gt;&lt;b&gt;차트 시간 단위&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,1,1,0&quot;&gt;&lt;b&gt;2분봉 차트&lt;/b&gt; (대안으로 5분봉 사용 가능)&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,1,2,0&quot;&gt;미세한 움직임을 포착하여 빠른 진입/청산 기회를 찾습니다.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,2,0,0&quot;&gt;&lt;b&gt;단기 이동평균선&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,2,1,0&quot;&gt;&lt;b&gt;20 기간 단순 이동평균선 (SMA)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,2,2,0&quot;&gt;단기 추세를 파악하고, 추세가 하락 중일 때 단기적인 녹색(상승) 캔들에 속지 않도록 &lt;b&gt;&quot;정직하게&quot;&lt;/b&gt; 추세를 판단하게 돕습니다.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,3,0,0&quot;&gt;&lt;b&gt;장기 이동평균선&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,3,1,0&quot;&gt;&lt;b&gt;200 기간 단순 이동평균선 (SMA)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,3,2,0&quot;&gt;장기적인 시야를 제공합니다. &lt;b&gt;20 SMA와 200 SMA는 버디 시스템&lt;/b&gt;으로 함께 활용되어야 합니다.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;Exporter vers Sheets&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;blockquote data-path-to-node=&quot;9&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-path-to-node=&quot;9,0&quot; data-ke-size=&quot;size16&quot;&gt;  &lt;b&gt;이동평균선의 역할:&lt;/b&gt; 주가의 **잔주름(Wrinkles)**을 펴주어 **주요 추세(Prevailing Trend)**에 집중하게 합니다. 완벽한 지표는 없지만, 추세 분석의 일반적인 가이드로써 유용합니다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-path-to-node=&quot;10&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-path-to-node=&quot;11&quot; data-ke-size=&quot;size26&quot;&gt;2.   확률 기반의 스캘핑 및 트레이딩 전략&lt;/h2&gt;
&lt;p data-path-to-node=&quot;12&quot; data-ke-size=&quot;size16&quot;&gt;스캘핑은 기본적으로 **강한 추세에 역행(Counter-Trend)**하여 &lt;b&gt;빠른 반등&lt;/b&gt;을 노리는 접근 방식입니다. 핵심은 &lt;b&gt;되돌림(Retracement) 확률&lt;/b&gt;을 이용하는 것입니다.&lt;/p&gt;
&lt;h3 data-path-to-node=&quot;13&quot; data-ke-size=&quot;size23&quot;&gt;2.1. 강한 하락 후 반등 확률 분석&lt;/h3&gt;
&lt;p data-path-to-node=&quot;14&quot; data-ke-size=&quot;size16&quot;&gt;강한 하락 움직임(&lt;b&gt;Strong Move Down&lt;/b&gt;) 후, 반등(Bounce)이 하락 폭을 되돌리는 정도에 따라 확률이 달라집니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div data-hveid=&quot;7&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;15&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;15,0,0,0&quot;&gt;되돌림 비율&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;15,0,1,0&quot;&gt;확률 (성공률)&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;15,0,2,0&quot;&gt;트레이더의 자세&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;15,1,0,0&quot;&gt;&lt;b&gt;100%&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;15,1,1,0&quot;&gt;10번 중 1번 (1/10)&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;15,1,2,0&quot;&gt;매우 비현실적인 목표.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;15,2,0,0&quot;&gt;&lt;b&gt;75%&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;15,2,1,0&quot;&gt;10번 중 2번 (2/10)&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;15,2,2,0&quot;&gt;여전히 낮은 확률.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;15,3,0,0&quot;&gt;&lt;b&gt;50%&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;15,3,1,0&quot;&gt;10번 중 6번 (6/10)&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;15,3,2,0&quot;&gt;&lt;b&gt;수익성 있는 트레이더&lt;/b&gt;가 될 수 있는 영역 (하락을 잘 통제할 경우).&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;15,4,0,0&quot;&gt;&lt;b&gt;25%&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;15,4,1,0&quot;&gt;&lt;b&gt;10번 중 9번 (9/10)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;15,4,2,0&quot;&gt;&lt;b&gt;스캘퍼가 집중해야 할 영역.&lt;/b&gt; 가장 높은 정확도로 수익을 낼 수 있습니다.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;Exporter vers Sheets&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;blockquote data-path-to-node=&quot;16&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-path-to-node=&quot;16,0&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;스캘핑의 정의:&lt;/b&gt; &lt;b&gt;9/10의 높은 정확도&lt;/b&gt;를 위해 &lt;b&gt;100% 되돌림 가능성&lt;/b&gt;을 희생하고, &lt;b&gt;25% 되돌림&lt;/b&gt;만을 목표로 하는 접근 방식입니다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 data-path-to-node=&quot;17&quot; data-ke-size=&quot;size23&quot;&gt;2.2. 스캘핑 (Scalp) vs. 트레이딩 (Trade) 구별&lt;/h3&gt;
&lt;p data-path-to-node=&quot;18&quot; data-ke-size=&quot;size16&quot;&gt;반등의 깊이를 기준으로 단순 스캘핑 기회인지, 길게 가져갈 트레이딩 기회인지를 구별할 수 있습니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div data-hveid=&quot;10&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;19&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;19,0,0,0&quot;&gt;상황&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;19,0,1,0&quot;&gt;반등 깊이&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;19,0,2,0&quot;&gt;다음 움직임 예측&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;19,0,3,0&quot;&gt;매매 형태&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;19,1,0,0&quot;&gt;&lt;b&gt;스캘프 기회&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;19,1,1,0&quot;&gt;&lt;b&gt;50% 미만&lt;/b&gt; (예: 25%)&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;19,1,2,0&quot;&gt;새로운 저점(&lt;b&gt;New Low&lt;/b&gt;)으로 하락할 가능성이 높음.&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;19,1,3,0&quot;&gt;&lt;b&gt;25%&lt;/b&gt; 되돌림만 노리고 빠르게 청산하는 &lt;b&gt;카운터 트렌드 스캘핑&lt;/b&gt;.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;19,2,0,0&quot;&gt;&lt;b&gt;트레이드 기회&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;19,2,1,0&quot;&gt;&lt;b&gt;50%를 훨씬 초과&lt;/b&gt; (65%~70% 이상)&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;19,2,2,0&quot;&gt;다음 하락이 새로운 저점을 만들지 않을 가능성이 높음.&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;19,2,3,0&quot;&gt;&lt;b&gt;더 오래 보유&lt;/b&gt;하며 50% 이상의 큰 수익을 노리는 &lt;b&gt;트레이딩&lt;/b&gt;.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;Exporter vers Sheets&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;blockquote data-path-to-node=&quot;20&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-path-to-node=&quot;20,0&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;핵심 원칙:&lt;/b&gt; 강한 하락 후 반등이 &lt;b&gt;50% 선을 돌파하지 못하면&lt;/b&gt; 추세는 **지속(New Low)**될 확률이 높고, 반등이 &lt;b&gt;50% 선을 강하게 돌파하면&lt;/b&gt; 추세가 **전환(Reversal)**되어 트레이딩 기회로 발전할 수 있습니다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 data-path-to-node=&quot;21&quot; data-ke-size=&quot;size23&quot;&gt;2.3. 공간(Space)을 활용한 매매 개념 (Buddy System 응용)&lt;/h3&gt;
&lt;p data-path-to-node=&quot;22&quot; data-ke-size=&quot;size16&quot;&gt;20 SMA와 200 SMA를 이용한 공간 분석은 추후 논의될 별도의 주제이지만, 간략히 언급되었습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;23&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;공간(Space) 발생:&lt;/b&gt; 주가가 20 SMA와 멀어지고, 20 SMA가 200 SMA와 멀어질 때 **이중 공간(Dual Space)**이 발생합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;시장 반응:&lt;/b&gt; 시장은 &lt;b&gt;공간을 좁히려는 경향&lt;/b&gt;이 있습니다. (The market doesn't like space. It narrows space.)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;활용:&lt;/b&gt; 이중 공간이 발생하면 **반대 방향(Reversal)**으로 베팅하여 주가가 20 SMA로 회귀할 때(Gap Closed) 청산합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div id=&quot;model-response-message-contentr_9c42c1ab50d2d14a&quot;&gt;
&lt;p data-path-to-node=&quot;0&quot; data-ke-size=&quot;size16&quot;&gt;**정량적 분석, 통계적 확률, 하이키나시 추세 분석, 그리고 유명 트레이더들의 전략(예: 스윙, 스캘핑의 되돌림 법칙)**을 통합하여 **각 트레이딩 스타일에 최적화된 매수 시점(프로그램 로직)**을 잡아주는 엔진을 설계할 수 있습니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;1&quot; data-ke-size=&quot;size16&quot;&gt;이 프로그램 엔진은 단순히 하나의 지표에 의존하지 않고, &lt;b&gt;다중 필터링&lt;/b&gt;을 통해 높은 확률의 진입점을 제공하도록 설계됩니다.&lt;/p&gt;
&lt;hr data-path-to-node=&quot;2&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-path-to-node=&quot;3&quot; data-ke-size=&quot;size26&quot;&gt; ️ 통합 트레이딩 엔진 (Unified Trading Engine) 설계&lt;/h2&gt;
&lt;p data-path-to-node=&quot;4&quot; data-ke-size=&quot;size16&quot;&gt;이 엔진은 **거시적 필터(종목 선정)**와 **미시적 필터(매매 시점)**를 분리하여 각 트레이딩 스타일(스윙, 데이 트레이딩/스캘핑)에 맞는 최종 신호를 생성합니다.&lt;/p&gt;
&lt;h3 data-path-to-node=&quot;5&quot; data-ke-size=&quot;size23&quot;&gt;1.   거시적 필터 (종목 및 환경 선정)&lt;/h3&gt;
&lt;p data-path-to-node=&quot;6&quot; data-ke-size=&quot;size16&quot;&gt;모든 트레이딩의 기초가 되는 &lt;b&gt;수학적/근본적 분석&lt;/b&gt; 단계입니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;7&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;워렌 버핏 스타일 (가치/장기 투자 필터):&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;7,0,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;정량:&lt;/b&gt; &lt;b&gt;낮은 &lt;span data-math=&quot;\text{P/E}&quot;&gt;&lt;span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;P/E&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; 비율&lt;/b&gt; 및 &lt;b&gt;꾸준한 영업 이익 증가&lt;/b&gt; (재무제표 분석).&lt;/li&gt;
&lt;li&gt;&lt;b&gt;정성:&lt;/b&gt; 독점적 해자(Moat)를 가진 **안정적인 대형주(S전자 등)**만 대상에 포함.&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-path-to-node=&quot;7,1,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;선택된 종목 유니버스의 **샤프 비율(&lt;span data-math=&quot;\text{Sharpe Ratio}_i&quot;&gt;&lt;span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;Sharpe&amp;nbsp;Ratio&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;i&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;)**이 시장 벤치마크(&lt;span data-math=&quot;\text{Sharpe Ratio}_m&quot;&gt;&lt;span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;Sharpe&amp;nbsp;Ratio&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;m&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;)보다 &lt;b&gt;높은 종목&lt;/b&gt;만 최종 분석 대상으로 유지.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-path-to-node=&quot;8&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-path-to-node=&quot;9&quot; data-ke-size=&quot;size23&quot;&gt;2.   스타일별 매수 시점 로직&lt;/h3&gt;
&lt;p data-path-to-node=&quot;10&quot; data-ke-size=&quot;size16&quot;&gt;종목이 필터링된 후, 각 트레이딩 스타일에 맞는 시간대와 지표를 적용하여 매수 시점을 포착합니다.&lt;/p&gt;
&lt;h4 data-path-to-node=&quot;11&quot; data-ke-size=&quot;size20&quot;&gt;2.1. 스윙 트레이딩 (Swing Trading)  &lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;12&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;목표:&lt;/b&gt; 며칠에서 몇 주 동안의 추세 파동을 이용한 비교적 긴 포지션.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;시간대:&lt;/b&gt; 60분봉 또는 일봉 차트 사용.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;최적 매수 시점 로직:&lt;/b&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-path-to-node=&quot;12,2,1&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;추세 확인:&lt;/b&gt; &lt;b&gt;20-SMA&lt;/b&gt;와 &lt;b&gt;200-SMA&lt;/b&gt;가 모두 &lt;b&gt;상승&lt;/b&gt; 중이며 &lt;b&gt;정배열&lt;/b&gt; 상태인 종목. (장기 추세 확인)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;조정 포착 (하이키나시):&lt;/b&gt; 상승 추세 중 캔들이 &lt;b&gt;빨간색(음봉)으로 전환&lt;/b&gt;되거나 &lt;b&gt;도지&lt;/b&gt;가 나타나며 &lt;b&gt;20-SMA 부근&lt;/b&gt;까지 눌림(Pullback)이 발생.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;반전 확인:&lt;/b&gt; 하이키나시 캔들이 다시 &lt;b&gt;녹색 양봉으로 전환&lt;/b&gt;되고, &lt;b&gt;RSI가 50선을 상향 돌파&lt;/b&gt;하는 시점.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;SL/TP:&lt;/b&gt; SL은 20-SMA 아래 또는 직전 저점 아래 설정; TP는 손익비 2:1 이상 또는 다음 저항선.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-path-to-node=&quot;13&quot; data-ke-size=&quot;size20&quot;&gt;2.2. 데이 트레이딩 / 스캘핑 (Day Trading / Scalping) ⚡&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;14&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;목표:&lt;/b&gt; 하루 안에 진입/청산하며 **강한 움직임 후의 짧은 반등(되돌림)**을 노림.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;시간대:&lt;/b&gt; &lt;b&gt;2분봉 또는 5분봉 차트&lt;/b&gt; 사용.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;최적 매수 시점 로직 (카운터 트렌드):&lt;/b&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-path-to-node=&quot;14,2,1&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;강한 하락 포착:&lt;/b&gt; 20-SMA가 하락하는 가운데 &lt;b&gt;장대 음봉&lt;/b&gt;이 연속되는 &lt;b&gt;강한 하락(Drop)&lt;/b&gt; 발생.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;매도세 소진 확인:&lt;/b&gt; 하이키나시 캔들이 &lt;b&gt;몸통이 극도로 짧은 도지&lt;/b&gt;로 전환되거나, 스토캐스틱이 **과매도 영역(20선 이하)**에 진입.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;진입 신호 (확률 기반):&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;14,2,1,2,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;스캘핑:&lt;/b&gt; 하락 폭의 &lt;b&gt;25% 되돌림&lt;/b&gt;만을 목표로 (9/10의 확률) 녹색 캔들 전환 시 즉시 진입.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;데이 트레이딩:&lt;/b&gt; 반등이 하락 폭의 &lt;b&gt;50%를 초과&lt;/b&gt;하여 되돌림을 보일 때 (추세 전환 가능성) 눌림목 이후 재상승 시점 진입.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;SL/TP:&lt;/b&gt; SL은 직전 저점 바로 아래 설정. TP는 스캘핑의 경우 25% 되돌림 지점, 데이 트레이딩의 경우 50% 되돌림 지점 이상.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-path-to-node=&quot;15&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-path-to-node=&quot;16&quot; data-ke-size=&quot;size26&quot;&gt;3.  ️ 프로그램 엔진 구조 (로직 통합)&lt;/h2&gt;
&lt;p data-path-to-node=&quot;17&quot; data-ke-size=&quot;size16&quot;&gt;이 모든 분석은 앞에서 설계된 모듈식 엔진 구조에 통합됩니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div data-hveid=&quot;4&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;18&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;18,0,0,0&quot;&gt;모듈&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;18,0,1,0&quot;&gt;역할&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;18,0,2,0&quot;&gt;스타일별 로직 적용&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;18,1,0,0&quot;&gt;&lt;b&gt;DataHandler&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;18,1,1,0&quot;&gt;2분봉, 5분봉, 60분봉, 일봉 데이터 수집 및 &lt;b&gt;하이키나시 캔들 계산&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;18,1,2,0&quot;&gt;모든 시간대 데이터 제공.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;18,2,0,0&quot;&gt;&lt;b&gt;QuantAnalyzer&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;18,2,1,0&quot;&gt;&lt;b&gt;샤프 비율, &lt;span data-math=&quot;\text{P/E}&quot;&gt;&lt;span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;P/E&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;, 재무 지표&lt;/b&gt; 계산&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;18,2,2,0&quot;&gt;거시적 필터링 실행.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;18,3,0,0&quot;&gt;&lt;b&gt;StrategyEngine&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;18,3,1,0&quot;&gt;**스타일 선택(Swing/Day/Scalp)**에 따라 적절한 로직 실행&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;18,3,2,0&quot;&gt;최종 &lt;b&gt;매수 신호(&lt;span data-math=&quot;\text{POST /api/position/recommend}&quot;&gt;&lt;span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;POST&amp;nbsp;/api/position/recommend&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;)&lt;/b&gt; 생성.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;18,4,0,0&quot;&gt;&lt;b&gt;ExecutionManager&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;18,4,1,0&quot;&gt;&lt;b&gt;계산된 SL/TP&lt;/b&gt;와 함께 주문 실행&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;18,4,2,0&quot;&gt;&lt;b&gt;정확한 포지션 사이즈&lt;/b&gt;로 주문 실행(&lt;span data-math=&quot;\text{POST /api/order/execute}&quot;&gt;&lt;span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;POST&amp;nbsp;/api/order/execute&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;).&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;Exporter vers Sheets&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-path-to-node=&quot;19&quot; data-ke-size=&quot;size16&quot;&gt;이러한 통합 엔진은 사용자가 원하는 트레이딩 스타일을 선택하면, 해당 스타일에 필요한 모든 수학적/통계적/기술적 조건을 종합적으로 판단하여 &lt;b&gt;가장 객관적이고 확률 높은 매매 시점&lt;/b&gt;을 잡아줄 수 있습니다.&lt;/p&gt;
&lt;/div&gt;</description>
      <author>개미 트레이딩</author>
      <guid isPermaLink="true">https://antdsl.tistory.com/12</guid>
      <comments>https://antdsl.tistory.com/12#entry12comment</comments>
      <pubDate>Wed, 10 Dec 2025 21:27:52 +0900</pubDate>
    </item>
    <item>
      <title>  정량적 자동 거래 엔진 (Quant Engine) 통합 시스템 구현 (개념 설계)</title>
      <link>https://antdsl.tistory.com/11</link>
      <description>&lt;p data-path-to-node=&quot;1&quot; data-ke-size=&quot;size16&quot;&gt;정량적 분석 방법(베타, 샤프 비율 등)과 제시된 API 엔드포인트를 통합하여 &lt;b&gt;분석, 의사결정, 주문 실행까지 자동화된 거래 시스템&lt;/b&gt;을 실행 가능하도록 &lt;b&gt;파이썬 기반의 아키텍처 및 핵심 코드&lt;/b&gt;를 구체적으로 제시합니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;2&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;주의:&lt;/b&gt; 이 코드는 실제 금융 거래소와 연동되는 &lt;b&gt;개념 설계 및 실행 가능한 파이썬 구조&lt;/b&gt;입니다. 실제 거래를 위해서는 브로커별 API 라이브러리를 사용한 &lt;b&gt;BrokerConnector&lt;/b&gt; 및 **DataHandler**의 완벽한 구현이 필요하며, 반드시 &lt;b&gt;Testnet 환경&lt;/b&gt;에서 검증해야 합니다.&lt;/p&gt;
&lt;hr data-path-to-node=&quot;3&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-path-to-node=&quot;4&quot; data-ke-size=&quot;size26&quot;&gt;1. ⚙️ 시스템 핵심 모듈 및 파일 구조&lt;/h2&gt;
&lt;p data-path-to-node=&quot;5&quot; data-ke-size=&quot;size16&quot;&gt;시스템은 기능을 분리하여 관리하기 쉽고 확장성 높은 모듈식 구조를 따릅니다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;6&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;파일/모듈&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;역할&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;주요 기능&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,1,0,0&quot;&gt;main.py&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,1,1,0&quot;&gt;&lt;b&gt;메인 실행 루프&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,1,2,0&quot;&gt;엔진 시작/종료, 주기적인 분석 및 실행 요청.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,2,0,0&quot;&gt;quant_analyzer.py&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,2,1,0&quot;&gt;&lt;b&gt;수학적 분석&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,2,2,0&quot;&gt;베타, 샤프 비율, 상대 강도, 리스크/수익률 계산.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,3,0,0&quot;&gt;strategy_engine.py&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,3,1,0&quot;&gt;&lt;b&gt;의사 결정 및 관리&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,3,2,0&quot;&gt;매매 신호 생성, 포지션 사이즈 계산, SL/TP 설정. (POST /api/position/recommend)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,4,0,0&quot;&gt;broker_connector.py&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,4,1,0&quot;&gt;&lt;b&gt;브로커 통신&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,4,2,0&quot;&gt;API 연결, 잔고 조회, 주문 실행. (POST /api/order/execute)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,5,0,0&quot;&gt;data_handler.py&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,5,1,0&quot;&gt;&lt;b&gt;데이터/DB 관리&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,5,2,0&quot;&gt;실시간/과거 데이터 수집 및 SQLite 영속성 관리.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr data-path-to-node=&quot;7&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-path-to-node=&quot;8&quot; data-ke-size=&quot;size26&quot;&gt;2.   quant_analyzer.py (정량적 분석 모듈)&lt;/h2&gt;
&lt;p data-path-to-node=&quot;9&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;시장 대비 강도&lt;/b&gt;를 정량화하는 핵심 로직입니다.&lt;/p&gt;
&lt;div data-hveid=&quot;7&quot;&gt;
&lt;div&gt;&lt;span&gt;Python&lt;/span&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;import numpy as np
import pandas as pd

class QuantAnalyzer:
    def __init__(self, market_returns: pd.Series):
        # 시장(지수) 수익률을 벤치마크로 설정
        self.Rm = market_returns
        self.Rf = 0.0001  # 일간 무위험 이자율 가정

    def calculate_beta(self, stock_returns: pd.Series) -&amp;gt; float:
        &quot;&quot;&quot;베타 (&amp;beta;) 계산: 시장과의 민감도 측정&quot;&quot;&quot;
        cov = np.cov(stock_returns, self.Rm)[0, 1]
        var_m = np.var(self.Rm)
        if var_m == 0: return 1.0 # 시장 변동 없을 시
        return round(cov / var_m, 2)

    def calculate_sharpe_ratio(self, stock_returns: pd.Series) -&amp;gt; float:
        &quot;&quot;&quot;샤프 비율 계산: 위험 대비 수익률 효율성 측정&quot;&quot;&quot;
        excess_return_mean = stock_returns.mean() - self.Rf
        std_dev = stock_returns.std()
        if std_dev == 0: return 0.0
        # (기대 수익률 - 무위험 이자율) / 표준편차
        return round(excess_return_mean / std_dev, 4)

    def select_strong_stocks(self, stock_data_dict: dict) -&amp;gt; pd.DataFrame:
        &quot;&quot;&quot;
        수학적 지표를 기반으로 시장을 이길 종목 선별 및 순위화
        &quot;&quot;&quot;
        results = []
        for symbol, data in stock_data_dict.items():
            returns = data['Close'].pct_change().dropna()
            if returns.empty: continue
            
            beta = self.calculate_beta(returns)
            sharpe = self.calculate_sharpe_ratio(returns)
            
            # **강도 점수 (Strength Score)** 계산: 샤프 비율을 중심으로 베타를 조정
            # Beta가 1보다 작으면 (방어적) 점수를 높게, 1보다 크면 (공격적) 변동성을 고려해 조정
            strength_score = sharpe * (2 - beta) # 1 &amp;lt; Beta &amp;lt; 2 가정
            
            results.append({
                'symbol': symbol,
                'beta': beta,
                'sharpe_ratio': sharpe,
                'strength_score': strength_score
            })
            
        # strength_score가 높은 종목이 '시장 대비 강함'으로 판단
        return pd.DataFrame(results).sort_values(by='strength_score', ascending=False)
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-path-to-node=&quot;11&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-path-to-node=&quot;12&quot; data-ke-size=&quot;size26&quot;&gt;3.  ️ strategy_engine.py (의사 결정 및 주문 실행)&lt;/h2&gt;
&lt;p data-path-to-node=&quot;13&quot; data-ke-size=&quot;size16&quot;&gt;주문 실행 및 리스크 관리 로직이 포함됩니다.&lt;/p&gt;
&lt;div data-hveid=&quot;9&quot;&gt;
&lt;div&gt;&lt;span&gt;Python&lt;/span&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;# strategy_engine.py

class StrategyEngine:
    MAX_RISK_PER_TRADE = 0.01  # 전체 계좌 잔고의 1%만 한 거래에 손실 허용

    def __init__(self, connector, analyzer):
        self.broker = connector
        self.analyzer = analyzer

    def get_position_recommendation(self, strong_rank: pd.DataFrame) -&amp;gt; dict:
        &quot;&quot;&quot;
        POST /api/position/recommend 매핑: 포지션 사이즈 계산 및 추천
        &quot;&quot;&quot;
        if strong_rank.empty: return None

        top_stock = strong_rank.iloc[0]
        symbol = top_stock['symbol']
        
        # 1. 잔고 및 가격 확인
        current_balance = self.broker.get_balance() # GET /api/broker/balance 호출
        current_price = self.broker.get_latest_price(symbol)
        
        if not current_balance or not current_price: return None

        # 2. SL/TP 가격 자동 설정 (엔지니어링 접근: 변동성 기반)
        # ATR(Average True Range)을 사용하지 않고 단순 %로 예시 (실제는 ATR 사용)
        risk_percent = 0.03 # 종목 진입 시 3% 하락 시 손절
        profit_percent = 0.06 # 종목 진입 시 6% 상승 시 익절
        
        stop_loss_price = round(current_price * (1 - risk_percent), 2)
        take_profit_price = round(current_price * (1 + profit_percent), 2)

        # 3. 포지션 사이즈 계산 (리스크 금액 기반)
        price_risk_unit = current_price - stop_loss_price # 주당 감수할 가격 위험
        max_loss_amount = current_balance * self.MAX_RISK_PER_TRADE # 총 허용 손실 금액
        
        if price_risk_unit &amp;lt;= 0: return None
        
        # 매수 수량 = 허용 손실 금액 / 주당 가격 위험
        quantity = int(max_loss_amount / price_risk_unit)
        
        if quantity &amp;gt; 0 and (quantity * current_price) &amp;lt; current_balance:
            return {
                'symbol': symbol,
                'action': 'BUY',
                'quantity': quantity,
                'entry_price': current_price,
                'stop_loss': stop_loss_price,
                'take_profit': take_profit_price
            }
        return None

    def execute_order(self, recommendation: dict):
        &quot;&quot;&quot;
        POST /api/order/execute 매핑: 실제 주문 실행
        &quot;&quot;&quot;
        if not recommendation:
            print(&quot;▶️ 매매 신호 없음.&quot;)
            return

        print(f&quot;✅ 주문 실행 요청: {recommendation['symbol']} / 수량: {recommendation['quantity']}&quot;)
        
        # 브로커 커넥터 호출 (실제 API 통신)
        order_result = self.broker.send_order(
            symbol=recommendation['symbol'],
            side=recommendation['action'],
            quantity=recommendation['quantity'],
            price=recommendation['entry_price']
        )
        
        if order_result.get('status') == 'FILLED':
            # 주문 성공 시 SL/TP 자동 설정 요청
            self.broker.set_take_profit_stop_loss(
                order_id=order_result['id'],
                tp=recommendation['take_profit'],
                sl=recommendation['stop_loss']
            )
            self.broker.data_handler.save_trade_history(recommendation)
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-path-to-node=&quot;15&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-path-to-node=&quot;16&quot; data-ke-size=&quot;size26&quot;&gt;4.   main.py (자동화 실행 루프)&lt;/h2&gt;
&lt;p data-path-to-node=&quot;17&quot; data-ke-size=&quot;size16&quot;&gt;모든 모듈을 결합하고 주기적으로 자동 거래를 실행하는 메인 엔진입니다.&lt;/p&gt;
&lt;div data-hveid=&quot;11&quot;&gt;
&lt;div&gt;&lt;span&gt;Python&lt;/span&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;# main.py

import time
from data_handler import DataHandler # 데이터 영속성 및 관리
from broker_connector import BrokerConnector # 브로커 통신 (가정된 구현)
from quant_analyzer import QuantAnalyzer
from strategy_engine import StrategyEngine

# --- ⚠️ 필수 설정 ---
BROKER_NAME = 'Binance_TESTNET'
API_KEY = 'YOUR_TESTNET_API_KEY'
SECRET_KEY = 'YOUR_TESTNET_SECRET_KEY'
# --------------------

def run_quant_engine():
    # 1. 시스템 초기화
    data_handler = DataHandler(db_path='quant_trades.sqlite')
    broker_connector = BrokerConnector(data_handler=data_handler)
    
    # 2. 브로커 연결 (인증)
    if not broker_connector.connect_broker(API_KEY, SECRET_KEY, BROKER_NAME):
        print(&quot;❌ 브로커 연결 실패. 시스템 종료.&quot;)
        return

    # 3. 메인 자동 거래 루프
    while True:
        try:
            print(f&quot;\n[{time.strftime('%Y-%m-%d %H:%M:%S')}] --- 분석 루틴 시작 ---&quot;)
            
            # A. 데이터 로드 및 준비
            market_data, stock_universe = data_handler.load_analysis_data(period='90D')
            
            if market_data.empty or stock_universe.empty:
                print(&quot;⚠️ 분석 데이터 부족. 다음 루프 대기.&quot;)
                time.sleep(600)
                continue

            # B. 정량적 분석 실행
            analyzer = QuantAnalyzer(market_data['Returns'])
            strong_rank = analyzer.select_strong_stocks(stock_universe)
            
            # C. 전략 결정 및 포지션 추천
            engine = StrategyEngine(broker_connector, analyzer)
            recommendation = engine.get_position_recommendation(strong_rank)
            
            # D. 주문 실행 (구입/판매)
            engine.execute_order(recommendation)
            
            # E. 전략 통계 업데이트 (GET /api/strategies/stats)
            data_handler.update_strategy_stats() 
            
            print(f&quot;--- 분석 루틴 완료. {BROKER_NAME} 잔고: {broker_connector.get_balance()} ---&quot;)

        except Exception as e:
            print(f&quot;  치명적인 엔진 오류: {e}&quot;)
        
        # 1시간마다 루프 실행 (분석 주기는 전략에 따라 조정 가능)
        time.sleep(3600) 

if __name__ == '__main__':
    run_quant_engine()&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <author>개미 트레이딩</author>
      <guid isPermaLink="true">https://antdsl.tistory.com/11</guid>
      <comments>https://antdsl.tistory.com/11#entry11comment</comments>
      <pubDate>Wed, 10 Dec 2025 21:25:42 +0900</pubDate>
    </item>
    <item>
      <title>  시장보다 강한 종목 찾기 및 투자 전략 분석</title>
      <link>https://antdsl.tistory.com/10</link>
      <description>&lt;p data-path-to-node=&quot;1&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;주식 시장의 지수(코스피, 코스닥) 움직임과 개별 종목의 움직임을 비교하여 '시장을 이기는 강한 종목'을 찾아내고 투자하는 방법&lt;/b&gt;에 대한 구체적인 조언과 경험담을 담고 있습니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;2&quot; data-ke-size=&quot;size16&quot;&gt;핵심 내용을 요약하고 분석하여 투자 전략을 정리했습니다.&lt;/p&gt;
&lt;hr data-path-to-node=&quot;3&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-path-to-node=&quot;4&quot; data-ke-size=&quot;size23&quot;&gt;1.   시장보다 강한 종목을 찾는 핵심 원칙&lt;/h3&gt;
&lt;p data-path-to-node=&quot;5&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;지수와 개별 종목의 상대적 강도 비교&lt;/b&gt;가 가장 중요합니다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;6&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;상황&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;지수 대비 종목 움직임&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;종목의 특성&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;판단 및 행동&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,1,0,0&quot;&gt;&lt;b&gt;폭락장&lt;/b&gt; (지수가 크게 하락할 때)&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,1,1,0&quot;&gt;지수보다 &lt;b&gt;덜 빠지거나 오히려 상승&lt;/b&gt;한 종목&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,1,2,0&quot;&gt;시장의 악재를 방어할 수 있는 힘이 있는 종목&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,1,3,0&quot;&gt;&lt;b&gt;강한 종목&lt;/b&gt;으로 판단하고 관심 종목에 편입하여 추이를 관찰&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,2,0,0&quot;&gt;&lt;b&gt;상승장&lt;/b&gt; (지수가 상승할 때)&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,2,1,0&quot;&gt;지수보다 &lt;b&gt;더 크게 상승&lt;/b&gt;하거나, &lt;b&gt;직전 고점을 더 빨리 돌파&lt;/b&gt;한 종목&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,2,2,0&quot;&gt;시장의 상승 흐름을 주도하는 리딩주&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,2,3,0&quot;&gt;&lt;b&gt;강한 종목&lt;/b&gt;으로 판단하고 매수 고려&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,3,0,0&quot;&gt;&lt;b&gt;약세/하락장&lt;/b&gt; (지수가 하락하고 있을 때)&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,3,1,0&quot;&gt;지수가 오르는데도 &lt;b&gt;계속 하락&lt;/b&gt;하는 종목&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,3,2,0&quot;&gt;시장보다 &lt;b&gt;약한 종목&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,3,3,0&quot;&gt;비중을 줄이거나 매도하여 현금 확보 (손절/교체매매)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote data-path-to-node=&quot;7&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-path-to-node=&quot;7,0&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;핵심 원칙:&lt;/b&gt; &quot;지금 당장의 순간을 보는 게 아니라 과거의 시장을 보면서 함께 &lt;b&gt;비교&lt;/b&gt;해야 된다.&quot;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 data-path-to-node=&quot;8&quot; data-ke-size=&quot;size23&quot;&gt;2.   강한 종목 찾는 구체적인 방법 및 훈련&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;9&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;관찰 대상:&lt;/b&gt; 코스피/코스닥 지수의 일간 상승률 및 하락률.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;종목 관찰 범위:&lt;/b&gt; 매일 &lt;b&gt;시가총액 1위부터 최소 50위&lt;/b&gt;, 가능하다면 &lt;b&gt;100위&lt;/b&gt;까지 관찰.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;핵심 관찰 시점:&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;9,2,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;지수가 2~3일 연속으로 빠졌을 때&lt;/b&gt; (폭락장 상황)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;오늘 지수가 1% 올랐는데 5~6% 오른 기업&lt;/b&gt; (상승장 상황)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;지수가 3% 빠졌는데 플러스(+) 난 기업&lt;/b&gt; (극단적인 강세)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;훈련 기간:&lt;/b&gt; 최소 &lt;b&gt;3개월&lt;/b&gt; 동안 매일 관찰하고 기록하는 훈련이 필요합니다. (초기 2~3시간 &amp;rarr; 3개월 후 30분 소요 예상)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;활용 도구:&lt;/b&gt; HTS/MTS를 켜고 시가총액 순위를 보면서 순위별 상승률/하락률을 확인.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;10&quot; data-ke-size=&quot;size23&quot;&gt;3.   폭락장 사례 분석 (A vs. B)&lt;/h3&gt;
&lt;p data-path-to-node=&quot;11&quot; data-ke-size=&quot;size16&quot;&gt;대화에서 제시된 &lt;b&gt;2020년 3월 폭락장&lt;/b&gt; 사례 분석은 다음과 같습니다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;12&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;구분&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;종목 A (언택트 관련주)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;종목 B (여행주)&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;12,1,0,0&quot;&gt;&lt;b&gt;폭락 당시 움직임&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;12,1,1,0&quot;&gt;&lt;b&gt;지수보다 덜 빠짐&lt;/b&gt; (낙하산 메고 내려옴)&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;12,1,2,0&quot;&gt;&lt;b&gt;지수보다 더 많이 빠짐&lt;/b&gt; (급락, 가방 메고 뛰어내림)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;12,2,0,0&quot;&gt;&lt;b&gt;주도 포지션&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;12,2,1,0&quot;&gt;시장을 &lt;b&gt;이기는&lt;/b&gt; 종목&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;12,2,2,0&quot;&gt;시장보다 &lt;b&gt;약한&lt;/b&gt; 종목&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;12,3,0,0&quot;&gt;&lt;b&gt;한 달 후 결과&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;12,3,1,0&quot;&gt;지수의 직전 고점(3월 초)을 &lt;b&gt;돌파&lt;/b&gt;하고 크게 상승&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;12,3,2,0&quot;&gt;지수의 직전 고점을 &lt;b&gt;회복하지 못함&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;12,4,0,0&quot;&gt;&lt;b&gt;결론&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;12,4,1,0&quot;&gt;폭락장에서 **덜 빠지면서 방어력이 좋았던 종목(A)**이 이후 시장 반등 시 &lt;b&gt;강력한 상승 탄력&lt;/b&gt;을 보였다.&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 data-path-to-node=&quot;13&quot; data-ke-size=&quot;size23&quot;&gt;4.   매매 기준 및 리스크 관리&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;14&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;매도 기준 (수익 실현):&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;14,0,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;수익이 나면 &lt;b&gt;비중 30% 정도는 매도&lt;/b&gt;하여 수익을 실현합니다.&lt;/li&gt;
&lt;li&gt;종목 진입 시 &lt;b&gt;단기(10%) 또는 중장기(40~50%) 목표 수익률&lt;/b&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-path-to-node=&quot;14,1,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;지수가 오르는데&lt;/b&gt; 내 종목이 계속 빠지면 (시장보다 약함) &amp;rarr; &lt;b&gt;일부(예: 50%) 매도&lt;/b&gt;.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;지수가 내렸는데&lt;/b&gt; 내 종목도 따라 내렸으면 &amp;rarr; &lt;b&gt;일부(예: 30%) 매도&lt;/b&gt; 후, 확보한 현금으로 &lt;b&gt;강한 종목&lt;/b&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-path-to-node=&quot;14,2,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;한 종목에 대한 분석 능력이 부족하다고 판단하면 &lt;b&gt;종목을 최대한 나누어&lt;/b&gt; (분산하여) 투자합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;확신이 있더라도&lt;/b&gt; 포트폴리오 내에서 특정 종목의 비율을 지나치게 높이지 않습니다. (예: 50%~100% 수익이 나면 대부분 매도)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;경계해야 할 행동:&lt;/b&gt; &lt;b&gt;수익 난 종목의 현금&lt;/b&gt;으로 &lt;b&gt;기존에 물린 종목에 '물타기'&lt;/b&gt; 하는 행위는 시장보다 약한 종목에 비중을 더 늘리는 것이므로 &lt;b&gt;가장 좋지 않은 판단&lt;/b&gt;입니다.&lt;/li&gt;
&lt;li&gt;  시장보다 강한 종목을 찾는 수학적/과학적/엔지니어링 접근법핵심은 **상대 모멘텀(Relative Momentum)**과 **리스크 대비 수익률(Risk-Adjusted Return)**을 정량화하여 강한 종목을 선별하는 것입니다.&lt;hr data-path-to-node=&quot;3&quot; data-ke-style=&quot;style1&quot; /&gt;1.   상대적 강도(Relative Strength) 정량화: RSI &amp;amp; 모멘텀1.1. 베타 (&lt;span data-math=&quot;\beta&quot;&gt;$\beta$&lt;/span&gt;) 계수 활용 (시장과의 민감도 측정)
&lt;div data-path-to-node=&quot;8&quot;&gt;
&lt;div data-math=&quot;\beta = \frac{Cov(R_i, R_m)}{Var(R_m)}&quot;&gt;$$\beta = \frac{Cov(R_i, R_m)}{Var(R_m)}$$&lt;/div&gt;
&lt;/div&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;9&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-math=&quot;R_i&quot;&gt;$R_i$&lt;/span&gt;: 개별 종목 수익률&lt;/li&gt;
&lt;li&gt;&lt;span data-math=&quot;R_m&quot;&gt;$R_m$&lt;/span&gt;: 시장 수익률 (코스피/코스닥 지수)&lt;/li&gt;
&lt;li&gt;&lt;span data-math=&quot;Cov&quot;&gt;$Cov$&lt;/span&gt;: 공분산 (Covariance)&lt;/li&gt;
&lt;li&gt;&lt;span data-math=&quot;Var&quot;&gt;$Var$&lt;/span&gt;: 분산 (Variance)&lt;/li&gt;
&lt;/ul&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;10&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;&amp;beta; 값&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;의미&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;투자 관점 (폭락장 대응)&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;10,1,0,0&quot;&gt;&lt;span data-math=&quot;\beta &amp;lt; 1&quot;&gt;$\beta &amp;lt; 1$&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;10,1,1,0&quot;&gt;시장보다 덜 민감하게 움직임 (수익률 변동폭이 작음).&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;10,1,2,0&quot;&gt;&lt;b&gt;지수가 폭락할 때 덜 빠지는 종목&lt;/b&gt; (방어주, 안정주)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;10,2,0,0&quot;&gt;&lt;span data-math=&quot;\beta = 1&quot;&gt;$\beta = 1$&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;10,2,1,0&quot;&gt;시장과 거의 동일하게 움직임.&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;10,2,2,0&quot;&gt;시장의 평균적인 위험 수준.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;10,3,0,0&quot;&gt;&lt;span data-math=&quot;\beta &amp;gt; 1&quot;&gt;$\beta &amp;gt; 1$&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;10,3,1,0&quot;&gt;시장보다 더 민감하게 움직임 (수익률 변동폭이 큼).&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;10,3,2,0&quot;&gt;&lt;b&gt;지수가 상승할 때 더 크게 오르는 종목&lt;/b&gt; (성장주, 공격주)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;b&gt;활용:&lt;/b&gt; 폭락장에서 &lt;b&gt;&lt;span data-math=&quot;\beta&quot;&gt;$\beta$&lt;/span&gt; 값이 낮은 종목&lt;/b&gt;을 찾고, 상승장 전환 시 &lt;b&gt;&lt;span data-math=&quot;\beta&quot;&gt;$\beta$&lt;/span&gt; 값이 높은 종목&lt;/b&gt; 중 강한 모멘텀을 가진 종목을 선별합니다.&lt;b&gt;개념:&lt;/b&gt; 개별 종목의 RSI 값과 &lt;b&gt;동일 기간의 지수 RSI 값&lt;/b&gt;을 비교하여 모멘텀의 상대적 강도를 확인합니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;14&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-math=&quot;RSI_i &amp;gt; RSI_m&quot;&gt;$RSI_i &amp;gt; RSI_m$&lt;/span&gt;: 개별 종목의 상승 모멘텀이 지수보다 강함.&lt;/li&gt;
&lt;li&gt;&lt;span data-math=&quot;RSI_i &amp;lt; RSI_m&quot;&gt;$RSI_i &amp;lt; RSI_m$&lt;/span&gt;: 개별 종목의 상승 모멘텀이 지수보다 약함.&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;활용:&lt;/b&gt; 지수와 종목의 RSI가 모두 40 이하로 낮아져 &lt;b&gt;과매도 상태&lt;/b&gt;일 때, 종목의 RSI가 지수 RSI보다 높게 유지되거나 먼저 &lt;b&gt;반등&lt;/b&gt;하는 종목을 찾습니다. 이는 &lt;b&gt;시장의 매도세보다 강한 매수세&lt;/b&gt;가 있음을 의미합니다.&lt;hr data-path-to-node=&quot;16&quot; data-ke-style=&quot;style1&quot; /&gt;2.  ️ 리스크 대비 수익률 분석: 샤프 비율 (Sharpe Ratio)**샤프 비율 (Sharpe Ratio)**은 대표적인 리스크 조정 수익률 지표입니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;21&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-math=&quot;R_p&quot;&gt;$R_p$&lt;/span&gt;: 포트폴리오(종목)의 기대 수익률&lt;/li&gt;
&lt;li&gt;&lt;span data-math=&quot;R_f&quot;&gt;$R_f$&lt;/span&gt;: 무위험 이자율 (Risk-Free Rate, 예: 국고채 금리)&lt;/li&gt;
&lt;li&gt;&lt;span data-math=&quot;\sigma_p&quot;&gt;$\sigma_p$&lt;/span&gt;: 포트폴리오(종목) 수익률의 표준편차 (변동성, 리스크)&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;활용:&lt;/b&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-path-to-node=&quot;23&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;**지수 (&lt;span data-math=&quot;\text{Sharpe Ratio}_m&quot;&gt;$\text{Sharpe Ratio}_m$&lt;/span&gt;)**와 **개별 종목 (&lt;span data-math=&quot;\text{Sharpe Ratio}_i&quot;&gt;$\text{Sharpe Ratio}_i$&lt;/span&gt;)**의 샤프 비율을 계산합니다.&lt;/li&gt;
&lt;li&gt;&lt;span data-math=&quot;\text{Sharpe Ratio}_i &amp;gt; \text{Sharpe Ratio}_m&quot;&gt;$\text{Sharpe Ratio}_i &amp;gt; \text{Sharpe Ratio}_m$&lt;/span&gt; 인 종목은 &lt;b&gt;지수 대비 위험을 감수할 가치가 높은 종목&lt;/b&gt;입니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;b&gt;엔지니어링 관점:&lt;/b&gt; 샤프 비율은 투자 자산의 **'효율성'**을 측정하는 계측기입니다. 동일한 수익률이라도 변동성(&lt;span data-math=&quot;\sigma_p&quot;&gt;$\sigma_p$&lt;/span&gt;)이 낮으면 샤프 비율이 높아져 더 좋은 투자로 판단합니다.&lt;hr data-path-to-node=&quot;25&quot; data-ke-style=&quot;style1&quot; /&gt;3.  ️ 시스템 구현 (엔지니어링 접근)
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;28&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;단계&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;분석 내용&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;활용 기술/지표&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;28,1,0,0&quot;&gt;&lt;b&gt;1. 데이터 수집&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;28,1,1,0&quot;&gt;코스피/코스닥 지수 및 시가총액 상위 100개 종목의 과거 가격 및 거래량 데이터.&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;28,1,2,0&quot;&gt;Python (Pandas, yfinance 라이브러리)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;28,2,0,0&quot;&gt;&lt;b&gt;2. 상대 강도 필터&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;28,2,1,0&quot;&gt;지정된 기간 (예: 60일 또는 120일) 동안의 &lt;b&gt;수익률(&lt;span data-math=&quot;R_i&quot;&gt;$R_i$&lt;/span&gt;)&lt;/b&gt; 및 **베타(&lt;span data-math=&quot;\beta&quot;&gt;$\beta$&lt;/span&gt;)**를 계산하여 지수 대비 강한 종목을 1차 선별.&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;28,2,2,0&quot;&gt;&lt;span data-math=&quot;\beta &amp;lt; 1&quot;&gt;$\beta &amp;lt; 1$&lt;/span&gt; 이면서 상대적으로 수익률이 높은 종목&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;28,3,0,0&quot;&gt;&lt;b&gt;3. 리스크 효율성 평가&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;28,3,1,0&quot;&gt;1차 선별된 종목들의 &lt;b&gt;샤프 비율&lt;/b&gt;을 계산하여 효율성을 평가.&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;28,3,2,0&quot;&gt;샤프 비율이 지수 대비 높은 종목&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;28,4,0,0&quot;&gt;&lt;b&gt;4. 매매 신호 생성&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;28,4,1,0&quot;&gt;모멘텀 지표 (RSI, 이동평균선)를 활용하여 &lt;b&gt;기술적 매수/매도 타이밍&lt;/b&gt;을 포착.&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;28,4,2,0&quot;&gt;RSI가 특정 기준(예: 50~60) 이상이거나, 단기 이평선이 장기 이평선을 상향 돌파 (골든 크로스)하는 시점.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;b&gt;실제 활용 예시:&lt;/b&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-path-to-node=&quot;30&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;오늘 지수가 3% 하락했습니다.&lt;/li&gt;
&lt;li&gt;데이터 시스템이 자동으로 시총 100위 종목 중 &lt;b&gt;&lt;span data-math=&quot;\beta&quot;&gt;$\beta$&lt;/span&gt; 값이 0.8 이하&lt;/b&gt;이면서 &lt;b&gt;수익률이 -1% 이내&lt;/b&gt;인 종목 10개를 필터링합니다. (방어력이 뛰어난 종목)&lt;/li&gt;
&lt;li&gt;이 10개 종목의 샤프 비율을 계산하여 지수보다 높은 종목을 '관심 종목' 리스트에 추가합니다.&lt;/li&gt;
&lt;li&gt;지수가 반등하는 시점에 해당 종목들의 &lt;b&gt;RSI가 50 이상&lt;/b&gt;으로 올라서면 매수 신호를 발생시킵니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li data-path-to-node=&quot;27&quot;&gt;이러한 정량적 분석을 &lt;b&gt;자동화된 시스템&lt;/b&gt;으로 구축하고 매일 활용합니다.&lt;/li&gt;
&lt;li data-path-to-node=&quot;20&quot;&gt;
&lt;div data-math=&quot;\text{Sharpe Ratio} = \frac{R_p - R_f}{\sigma_p}&quot;&gt;$$\text{Sharpe Ratio} = \frac{R_p - R_f}{\sigma_p}$$&lt;/div&gt;
&lt;/li&gt;
&lt;li data-path-to-node=&quot;18&quot;&gt;투자는 단순히 수익률만 보는 것이 아니라, &lt;b&gt;감수한 위험 대비 얼마나 효율적인 수익&lt;/b&gt;을 얻었는지를 과학적으로 판단해야 합니다.&lt;/li&gt;
&lt;li data-path-to-node=&quot;12&quot;&gt;1.2. 상대 강도 지수 (Relative Strength Index, RSI)의 비교&lt;/li&gt;
&lt;li data-path-to-node=&quot;7&quot;&gt;베타 계수는 개별 자산의 수익률이 시장(지수)의 수익률 변화에 얼마나 민감하게 반응하는지를 측정하는 통계적 지표입니다.&lt;/li&gt;
&lt;li data-path-to-node=&quot;5&quot;&gt;기존 대화에서 강조된 '시장을 이기는 종목'을 찾기 위해, &lt;b&gt;지수와 개별 종목의 상대적 성과를 수치화&lt;/b&gt;하는 것이 중요합니다.&lt;/li&gt;
&lt;li data-path-to-node=&quot;1&quot;&gt;말씀하신 대로 주식 시장 분석을 단순한 관찰을 넘어 &lt;b&gt;수학적, 과학적, 엔지니어링 관점&lt;/b&gt;에서 바로 활용할 수 있는 &lt;b&gt;정량적인 지표와 분석 방법&lt;/b&gt;을 제시해 드립니다.&lt;/li&gt;
&lt;li data-path-to-node=&quot;1&quot;&gt;
&lt;div id=&quot;model-response-message-contentr_95eadf5e0a24e91b&quot;&gt;
&lt;p data-path-to-node=&quot;0&quot; data-ke-size=&quot;size16&quot;&gt;수학적/과학적 방법)을 **실제 거래 시스템(엔진)**에 통합하여 &lt;b&gt;분석부터 구입/판매 실행까지&lt;/b&gt; 자동으로 처리하는 프로그램 엔진의 &lt;b&gt;개념 설계 및 아키텍처&lt;/b&gt;를 제안해 드립니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;1&quot; data-ke-size=&quot;size16&quot;&gt;이 엔진은 앞서 논의된 &lt;b&gt;베타, 샤프 비율, 상대 강도(모멘텀)&lt;/b&gt; 등의 정량적 지표를 활용하여 거래 결정을 내리고, 제시하신 API 엔드포인트 및 브로커 연결 기능을 포함합니다.&lt;/p&gt;
&lt;hr data-path-to-node=&quot;2&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-path-to-node=&quot;3&quot; data-ke-size=&quot;size26&quot;&gt;  통합 자동 거래 엔진 (Quantitative Trading Engine) 설계&lt;/h2&gt;
&lt;h3 data-path-to-node=&quot;4&quot; data-ke-size=&quot;size23&quot;&gt;1. ⚙️ 엔진 아키텍처 및 구성 요소&lt;/h3&gt;
&lt;p data-path-to-node=&quot;5&quot; data-ke-size=&quot;size16&quot;&gt;이 엔진은 데이터를 수집하고, 분석하며, 최종적으로 주문을 실행하는 세 가지 주요 계층으로 구성됩니다.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div data-hveid=&quot;4&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;6&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,0,0,0&quot;&gt;계층 (Layer)&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,0,1,0&quot;&gt;주요 역할&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,0,2,0&quot;&gt;수학적/과학적 적용&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,0,3,0&quot;&gt;활용 API 및 기능&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,1,0,0&quot;&gt;&lt;b&gt;1. Data &amp;amp; Analysis Module&lt;/b&gt; (데이터/분석)&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,1,1,0&quot;&gt;실시간 및 과거 데이터 수집, 정량적 지표 계산. &lt;b&gt;강한 종목 선별&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,1,2,0&quot;&gt;&lt;b&gt;&lt;span data-math=&quot;\beta&quot;&gt;&lt;span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&amp;beta;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; 계산, 샤프 비율, RSI 비교, 이동평균선 분석&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,1,3,0&quot;&gt;WebSocket, DB 조회 (SQLite)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,2,0,0&quot;&gt;&lt;b&gt;2. Decision &amp;amp; Strategy Module&lt;/b&gt; (의사결정/전략)&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,2,1,0&quot;&gt;분석 결과 기반으로 매수/매도 신호 생성, 포지션 및 TP/SL 설정.&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,2,2,0&quot;&gt;&lt;b&gt;매매 로직 구현 (If-Then 조건)&lt;/b&gt;, 리스크 관리 모델&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,2,3,0&quot;&gt;POST /api/position/recommend&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,3,0,0&quot;&gt;&lt;b&gt;3. Execution &amp;amp; Management Module&lt;/b&gt; (실행/관리)&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,3,1,0&quot;&gt;브로커 API를 통한 실제 주문 실행, 계좌 잔고 관리 및 이력 저장.&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,3,2,0&quot;&gt;&lt;b&gt;포지션 사이즈 자동 계산 (Kelly Criterion 응용 가능)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;6,3,3,0&quot;&gt;POST /api/order/execute, GET /api/broker/balance&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;Exporter vers Sheets&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-path-to-node=&quot;7&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-path-to-node=&quot;8&quot; data-ke-size=&quot;size23&quot;&gt;2.   핵심 기능 구현 상세 (수학적 분석 적용)&lt;/h3&gt;
&lt;p data-path-to-node=&quot;9&quot; data-ke-size=&quot;size16&quot;&gt;제시하신 API 엔드포인트에 수학적/과학적 분석을 적용한 구체적인 기능을 설명합니다.&lt;/p&gt;
&lt;h4 data-path-to-node=&quot;10&quot; data-ke-size=&quot;size20&quot;&gt;2.1. 전략 통계 자동 업데이트 (GET /api/strategies/stats)&lt;/h4&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div data-hveid=&quot;7&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;11&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;11,0,0,0&quot;&gt;지표&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;11,0,1,0&quot;&gt;계산 방법&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;11,0,2,0&quot;&gt;적용 목적&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;11,1,0,0&quot;&gt;&lt;b&gt;승률 (Win Rate)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;11,1,1,0&quot;&gt;(총 수익 거래 수 / 총 거래 수) &lt;span data-math=&quot;\times 100&quot;&gt;&lt;span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&amp;times;&lt;/span&gt;&lt;span&gt;100&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;11,1,2,0&quot;&gt;전략의 성공 빈도 측정.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;11,2,0,0&quot;&gt;&lt;b&gt;평균 손익 비율 (Profit Factor)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;11,2,1,0&quot;&gt;총 수익금 / 총 손실금&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;11,2,2,0&quot;&gt;리스크 대비 수익 규모의 효율성 측정.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;11,3,0,0&quot;&gt;&lt;b&gt;샤프 비율 (Sharpe Ratio)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;11,3,1,0&quot;&gt;엔진의 전체 포트폴리오 (&lt;span data-math=&quot;R_p&quot;&gt;&lt;span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;R&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;p&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;) 기준 계산.&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;11,3,2,0&quot;&gt;&lt;b&gt;위험 조정 수익률&lt;/b&gt;로 전략의 우수성 평가.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;Exporter vers Sheets&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h4 data-path-to-node=&quot;12&quot; data-ke-size=&quot;size20&quot;&gt;2.2. 포지션 추천 (POST /api/position/recommend)&lt;/h4&gt;
&lt;p data-path-to-node=&quot;13&quot; data-ke-size=&quot;size16&quot;&gt;이 엔드포인트는 앞서 논의된 &lt;b&gt;강한 종목 선별 로직&lt;/b&gt;을 실행합니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-path-to-node=&quot;14&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;시장 비교 분석:&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;14,0,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;지수 대비 개별 종목의 &lt;b&gt;수익률 모멘텀(R)&lt;/b&gt; 비교.&lt;/li&gt;
&lt;li&gt;지수 대비 종목의 &lt;b&gt;변동성(리스크)&lt;/b&gt; 및 &lt;b&gt;&lt;span data-math=&quot;\beta&quot;&gt;&lt;span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&amp;beta;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; 계수&lt;/b&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-path-to-node=&quot;14,1,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;매수 조건:&lt;/b&gt; 일정 기간 (예: 60일) 동안의 &lt;span data-math=&quot;\text{Sharpe Ratio}_i &amp;gt; \text{Sharpe Ratio}_m&quot;&gt;&lt;span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;Sharpe&amp;nbsp;Ratio&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;i&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;Sharpe&amp;nbsp;Ratio&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;m&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; 이며, &lt;span data-math=&quot;\beta &amp;lt; 1&quot;&gt;&lt;span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&amp;beta;&lt;/span&gt;&lt;span&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; (방어력 우수) 또는 &lt;span data-math=&quot;\beta &amp;gt; 1&quot;&gt;&lt;span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&amp;beta;&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; (상승장에서 공격력 우수)인 종목을 선별.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;RSI 비교:&lt;/b&gt; 종목 &lt;span data-math=&quot;RSI &amp;gt; \text{지수 } RSI&quot;&gt;&lt;span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;RS&lt;/span&gt;&lt;span&gt;I&lt;/span&gt;&lt;span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;지수&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;RS&lt;/span&gt;&lt;span&gt;I&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&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-path-to-node=&quot;14,2,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;거래당 &lt;b&gt;최대 리스크 허용 비율&lt;/b&gt; (예: 계좌 잔고의 1%)을 설정.&lt;/li&gt;
&lt;li&gt;&lt;span data-math=&quot;Position Size = \frac{\text{계좌 잔고} \times \text{허용 리스크 비율}}{\text{진입가} - \text{손절가 (SL)}}&quot;&gt;&lt;span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;P&lt;/span&gt;&lt;span&gt;os&lt;/span&gt;&lt;span&gt;i&lt;/span&gt;&lt;span&gt;t&lt;/span&gt;&lt;span&gt;i&lt;/span&gt;&lt;span&gt;o&lt;/span&gt;&lt;span&gt;n&lt;/span&gt;&lt;span&gt;S&lt;/span&gt;&lt;span&gt;i&lt;/span&gt;&lt;span&gt;ze&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;진입가&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;minus;&lt;/span&gt;&lt;span&gt;&lt;span&gt;손절가&lt;/span&gt;&lt;span&gt;&amp;nbsp;(SL)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;계좌&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;잔고&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;times;&lt;/span&gt;&lt;span&gt;&lt;span&gt;허용&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;리스크&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;비율&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; 공식을 사용하여 자동으로 적정 매수 수량 산출.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 data-path-to-node=&quot;15&quot; data-ke-size=&quot;size20&quot;&gt;2.3. 주문 실행 및 자동 설정 (POST /api/order/execute)&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;16&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;TP/SL 자동 설정:&lt;/b&gt; 주문 실행 시, 분석 모듈에서 계산된 **평균 변동성 (ATR)**을 기반으로 **자동 손절가(SL)**와 **자동 이익실현가(TP)**를 설정하여 리스크를 통제합니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;16,0,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;예시:&lt;/b&gt; &lt;span data-math=&quot;SL = \text{진입가} - (1.5 \times ATR)&quot;&gt;&lt;span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;S&lt;/span&gt;&lt;span&gt;L&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;진입가&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;minus;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;1.5&lt;/span&gt;&lt;span&gt;&amp;times;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;A&lt;/span&gt;&lt;span&gt;TR&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;, &lt;span data-math=&quot;TP1 = \text{진입가} + (2 \times ATR)&quot;&gt;&lt;span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;TP&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;진입가&lt;/span&gt;&lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;&amp;times;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;A&lt;/span&gt;&lt;span&gt;TR&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-path-to-node=&quot;17&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-path-to-node=&quot;18&quot; data-ke-size=&quot;size23&quot;&gt;3.   실용화를 위한 연결 및 테스트&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div data-hveid=&quot;10&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;19&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;19,0,0,0&quot;&gt;항목&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;19,0,1,0&quot;&gt;주소 및 절차&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;19,0,2,0&quot;&gt;목적&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;19,1,0,0&quot;&gt;&lt;b&gt;가상 거래 연결 (Testnet)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;19,1,1,0&quot;&gt;&lt;span data-math=&quot;\text{[https://testnet.binancefuture.com](https://testnet.binancefuture.com)}&quot;&gt;&lt;span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;[&lt;a href=&quot;https://testnet.binancefuture.com](https://testnet.binancefuture.com)&quot;&gt;https://testnet.binancefuture.com](https://testnet.binancefuture.com)&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; (Binance) &lt;span data-math=&quot;\text{[https://app.alpaca.markets](https://app.alpaca.markets)}&quot;&gt;&lt;span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;[&lt;a href=&quot;https://app.alpaca.markets](https://app.alpaca.markets)&quot;&gt;https://app.alpaca.markets](https://app.alpaca.markets)&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; (Alpaca)&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;19,1,2,0&quot;&gt;&lt;b&gt;실제 자금 투입 전&lt;/b&gt; 전략의 유효성 검증 및 시스템 안정성 테스트.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;19,2,0,0&quot;&gt;&lt;b&gt;API Key 연결&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;19,2,1,0&quot;&gt;발급받은 API Key와 Secret Key를 프론트엔드 또는 서버 설정 파일에 입력.&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;19,2,2,0&quot;&gt;실제 거래소 시스템에 주문을 보내기 위한 &lt;b&gt;인증&lt;/b&gt;.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;19,3,0,0&quot;&gt;&lt;b&gt;WebSocket&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;19,3,1,0&quot;&gt;&lt;span data-math=&quot;\text{WS /ws}&quot;&gt;&lt;span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;WS&amp;nbsp;/ws&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; 엔드포인트 구현&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;19,3,2,0&quot;&gt;실시간 가격 변동, 체결 정보, 잔고 변화 등을 &lt;b&gt;지연 없이&lt;/b&gt; 수신하여 분석 모듈과 연동.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;Exporter vers Sheets&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-path-to-node=&quot;20&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;엔지니어링 조언:&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;21&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;데이터 영속성:&lt;/b&gt; 모든 분석 결과와 거래 이력은 &lt;b&gt;SQLite DB&lt;/b&gt;에 저장되어야 합니다. 이는 백테스팅 모듈 개발 및 전략 통계의 정확한 계산을 위한 필수 기반입니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;리스크 관리 우선:&lt;/b&gt; 주문 실행 시 **Stop Loss(SL)**가 자동으로 걸리는지 항상 확인하는 &lt;b&gt;'Fail-Safe' 로직&lt;/b&gt;을 최우선으로 구현해야 합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
      <author>개미 트레이딩</author>
      <guid isPermaLink="true">https://antdsl.tistory.com/10</guid>
      <comments>https://antdsl.tistory.com/10#entry10comment</comments>
      <pubDate>Wed, 10 Dec 2025 21:24:52 +0900</pubDate>
    </item>
    <item>
      <title>RSI 및 MACD 기반 주식 투자 전략 분석 (1)</title>
      <link>https://antdsl.tistory.com/9</link>
      <description>&lt;div id=&quot;model-response-message-contentr_b37f0725d1e34840&quot; style=&quot;background-color: #000000; color: #1f1f1f;&quot;&gt;
&lt;p style=&quot;background-color: #000000; color: #1f1f1f;&quot; data-path-to-node=&quot;0&quot; data-ke-size=&quot;size16&quot;&gt;파이썬 기반의 &lt;b&gt;FastAPI 백엔드 애플리케이션&lt;/b&gt;과, 이 서버와 통신하도록 업데이트된 &lt;b&gt;React 프론트엔드 코드&lt;/b&gt;를 함께 구성해 드리겠습니다.&lt;/p&gt;
&lt;h3 style=&quot;background-color: #000000; color: #1f1f1f;&quot; data-path-to-node=&quot;1&quot; data-ke-size=&quot;size23&quot;&gt;1. FastAPI 백엔드 (main.py)&lt;/h3&gt;
&lt;p style=&quot;background-color: #000000; color: #1f1f1f;&quot; data-path-to-node=&quot;2&quot; data-ke-size=&quot;size16&quot;&gt;이 파일은 uvicorn main:app --reload 명령으로 실행되며, 프론트엔드와 통신할 핵심 리스크 계산 로직과 API 엔드포인트(api/signals, api/plan)를 포함합니다. CORS 설정을 통해 프론트엔드의 접근을 허용합니다.&lt;/p&gt;
&lt;div style=&quot;background-color: #000000; color: #1f1f1f;&quot;&gt;
&lt;div style=&quot;background-color: #dde3ea; color: #1f1f1f;&quot; data-hveid=&quot;4&quot; data-test-id=&quot;container&quot;&gt;
&lt;div style=&quot;background-color: #000000; color: #1f1f1f;&quot; data-test-id=&quot;default-entry-chip-content&quot;&gt;
&lt;div style=&quot;background-color: #000000; color: #1f1f1f;&quot;&gt;
&lt;div style=&quot;background-color: #000000; color: #1f1f1f;&quot; data-test-id=&quot;artifact-text&quot;&gt;PBY 트레이딩 엔진 FastAPI 백엔드&lt;/div&gt;
&lt;span style=&quot;background-color: #000000; color: #1f1f1f;&quot; data-test-id=&quot;creation-timestamp&quot;&gt;21 nov., 09:58&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 style=&quot;background-color: #000000; color: #1f1f1f;&quot; data-path-to-node=&quot;4&quot; data-ke-size=&quot;size23&quot;&gt;2. React 프론트엔드 (PBYTradingSystem.jsx)&lt;/h3&gt;
&lt;p style=&quot;background-color: #000000; color: #1f1f1f;&quot; data-path-to-node=&quot;5&quot; data-ke-size=&quot;size16&quot;&gt;이제 프론트엔드 코드를 업데이트하여 &lt;b&gt;실제 API 호출&lt;/b&gt;을 통합하고, &lt;b&gt;Drawdown, R-분포, 리스크 플롯 시각화&lt;/b&gt; (A-Z 계획의 C, D, E)를 완성합니다.&lt;/p&gt;
&lt;div style=&quot;background-color: #000000; color: #1f1f1f;&quot;&gt;
&lt;div style=&quot;background-color: #f0f4f9; color: #1f1f1f;&quot; data-hveid=&quot;5&quot; data-test-id=&quot;container&quot;&gt;
&lt;div style=&quot;background-color: #000000; color: #1f1f1f;&quot; data-test-id=&quot;default-entry-chip-content&quot;&gt;
&lt;div style=&quot;background-color: #000000; color: #1f1f1f;&quot;&gt;
&lt;div style=&quot;background-color: #000000; color: #1f1f1f;&quot; data-test-id=&quot;artifact-text&quot;&gt;PBY 트레이딩 시스템 (A-Z 차트 &amp;amp; API 통합)&lt;/div&gt;
&lt;span style=&quot;background-color: #000000; color: #1f1f1f;&quot; data-test-id=&quot;creation-timestamp&quot;&gt;21 nov., 09:58&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #000000; color: #1f1f1f;&quot; data-test-id=&quot;open-button&quot;&gt;&lt;span style=&quot;background-color: #000000; color: #ffffff;&quot;&gt;&lt;span style=&quot;background-color: #000000; color: #ffffff;&quot;&gt;Ouvrir&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 style=&quot;background-color: #000000; color: #1f1f1f;&quot; data-path-to-node=&quot;7&quot; data-ke-size=&quot;size23&quot;&gt;실행 방법 요약&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal; background-color: #000000; color: #1f1f1f;&quot; data-path-to-node=&quot;8&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;background-color: #000000; color: #1f1f1f;&quot;&gt;&lt;b&gt;FastAPI 서버 실행 (Python 백엔드):&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #000000; color: #1f1f1f;&quot; data-path-to-node=&quot;8,0,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;background-color: #000000; color: #1f1f1f;&quot;&gt;main.py 파일을 저장합니다.&lt;/li&gt;
&lt;li style=&quot;background-color: #000000; color: #1f1f1f;&quot;&gt;Python 환경에 fastapi, uvicorn, pydantic 라이브러리를 설치합니다 (pip install fastapi uvicorn[standard] pydantic).&lt;/li&gt;
&lt;li style=&quot;background-color: #000000; color: #1f1f1f;&quot;&gt;터미널에서 다음 명령으로 서버를 실행합니다:&lt;/li&gt;
&lt;li style=&quot;background-color: #000000; color: #1f1f1f;&quot; data-hveid=&quot;6&quot;&gt;
&lt;div style=&quot;background-color: #f0f4f9; color: #444746;&quot;&gt;&lt;span style=&quot;background-color: #000000; color: #444746;&quot;&gt;Bash&lt;/span&gt;
&lt;div style=&quot;background-color: #000000; color: #444746;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #f0f4f9; color: #1f1f1f;&quot;&gt;
&lt;div style=&quot;background-color: #000000; color: #1f1f1f;&quot;&gt;
&lt;pre class=&quot;markdown&quot; style=&quot;background-color: #000000; color: #1f1f1f;&quot;&gt;&lt;code&gt;uvicorn main:app --reload
2.  **React 프론트엔드 확인:**
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li style=&quot;background-color: #000000; color: #1f1f1f;&quot;&gt;제공된 PBYTradingSystem.jsx 코드를 React 프로젝트의 메인 컴포넌트로 사용합니다.&lt;/li&gt;
&lt;li style=&quot;background-color: #000000; color: #1f1f1f;&quot;&gt;프론트엔드 앱을 실행하고, &lt;b&gt;&quot;주문 / 리스크&quot;&lt;/b&gt; 탭에서 가격을 입력한 후 &lt;b&gt;&quot;리스크 플랜 요청 (FastAPI)&quot;&lt;/b&gt; 버튼을 눌러 백엔드와 통신하는 것을 확인하십시오.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</description>
      <author>개미 트레이딩</author>
      <guid isPermaLink="true">https://antdsl.tistory.com/9</guid>
      <comments>https://antdsl.tistory.com/9#entry9comment</comments>
      <pubDate>Wed, 10 Dec 2025 21:22:17 +0900</pubDate>
    </item>
    <item>
      <title>  RSI 및 MACD 기반 주식 투자 전략 분석: 20년 경력자의 관점</title>
      <link>https://antdsl.tistory.com/8</link>
      <description>&lt;h3 data-path-to-node=&quot;1&quot; data-ke-size=&quot;size23&quot;&gt;FastAPI 백엔드 (main.py)&lt;/h3&gt;
&lt;p data-path-to-node=&quot;2&quot; data-ke-size=&quot;size16&quot;&gt;이 파일은 uvicorn main:app --reload 명령으로 실행되며, 프론트엔드와 통신할 핵심 리스크 계산 로직과 API 엔드포인트(api/signals, api/plan)를 포함합니다. CORS 설정을 통해 프론트엔드의 접근을 허용합니다.&lt;/p&gt;
&lt;div&gt;
&lt;div data-hveid=&quot;4&quot; data-test-id=&quot;container&quot;&gt;
&lt;div data-test-id=&quot;default-entry-chip-content&quot;&gt;
&lt;div&gt;
&lt;div data-test-id=&quot;artifact-text&quot;&gt;PBY 트레이딩 엔진 FastAPI 백엔드&lt;/div&gt;
&lt;span data-test-id=&quot;creation-timestamp&quot;&gt;21 nov., 09:58&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-path-to-node=&quot;4&quot; data-ke-size=&quot;size23&quot;&gt;2. React 프론트엔드 (PBYTradingSystem.jsx)&lt;/h3&gt;
&lt;p data-path-to-node=&quot;5&quot; data-ke-size=&quot;size16&quot;&gt;이제 프론트엔드 코드를 업데이트하여 &lt;b&gt;실제 API 호출&lt;/b&gt;을 통합하고, &lt;b&gt;Drawdown, R-분포, 리스크 플롯 시각화&lt;/b&gt; (A-Z 계획의 C, D, E)를 완성합니다.&lt;/p&gt;
&lt;div&gt;
&lt;div data-hveid=&quot;5&quot; data-test-id=&quot;container&quot;&gt;
&lt;div data-test-id=&quot;default-entry-chip-content&quot;&gt;
&lt;div&gt;
&lt;div data-test-id=&quot;artifact-text&quot;&gt;PBY 트레이딩 시스템 (A-Z 차트 &amp;amp; API 통합)&lt;/div&gt;
&lt;span data-test-id=&quot;creation-timestamp&quot;&gt;21 nov., 09:58&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div data-test-id=&quot;open-button&quot;&gt;&lt;span&gt;&lt;span&gt;Ouvrir&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-path-to-node=&quot;7&quot; data-ke-size=&quot;size23&quot;&gt;실행 방법 요약&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-path-to-node=&quot;8&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;FastAPI 서버 실행 (Python 백엔드):&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;8,0,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;main.py 파일을 저장합니다.&lt;/li&gt;
&lt;li&gt;Python 환경에 fastapi, uvicorn, pydantic 라이브러리를 설치합니다 (pip install fastapi uvicorn[standard] pydantic).&lt;/li&gt;
&lt;li&gt;터미널에서 다음 명령으로 서버를 실행합니다:&lt;/li&gt;
&lt;li data-hveid=&quot;6&quot;&gt;
&lt;div&gt;&lt;span&gt;Bash&lt;/span&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;markdown&quot;&gt;&lt;code&gt;uvicorn main:app --reload
2.  **React 프론트엔드 확인:**
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;제공된 PBYTradingSystem.jsx 코드를 React 프로젝트의 메인 컴포넌트로 사용합니다.&lt;/li&gt;
&lt;li&gt;프론트엔드 앱을 실행하고, &lt;b&gt;&quot;주문 / 리스크&quot;&lt;/b&gt; 탭에서 가격을 입력한 후 &lt;b&gt;&quot;리스크 플랜 요청 (FastAPI)&quot;&lt;/b&gt; 버튼을 눌러 백엔드와 통신하는 것을 확인하십시오.&lt;/li&gt;
&lt;li&gt;//&amp;nbsp;src/PBYTradingSystem.jsx &lt;br /&gt;import&amp;nbsp;React,&amp;nbsp;{&amp;nbsp;useEffect,&amp;nbsp;useState,&amp;nbsp;useMemo,&amp;nbsp;useRef,&amp;nbsp;useCallback&amp;nbsp;}&amp;nbsp;from&amp;nbsp;&quot;react&quot;; &lt;br /&gt;import&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;BarChart, &lt;br /&gt;&amp;nbsp;&amp;nbsp;Bar, &lt;br /&gt;&amp;nbsp;&amp;nbsp;XAxis, &lt;br /&gt;&amp;nbsp;&amp;nbsp;YAxis, &lt;br /&gt;&amp;nbsp;&amp;nbsp;CartesianGrid, &lt;br /&gt;&amp;nbsp;&amp;nbsp;Tooltip, &lt;br /&gt;&amp;nbsp;&amp;nbsp;Legend, &lt;br /&gt;&amp;nbsp;&amp;nbsp;ResponsiveContainer, &lt;br /&gt;&amp;nbsp;&amp;nbsp;LineChart, &lt;br /&gt;&amp;nbsp;&amp;nbsp;Line, &lt;br /&gt;}&amp;nbsp;from&amp;nbsp;&quot;recharts&quot;; &lt;br /&gt;import&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;TrendingUp, &lt;br /&gt;&amp;nbsp;&amp;nbsp;TrendingDown, &lt;br /&gt;&amp;nbsp;&amp;nbsp;AlertCircle, &lt;br /&gt;&amp;nbsp;&amp;nbsp;CheckCircle, &lt;br /&gt;&amp;nbsp;&amp;nbsp;DollarSign, &lt;br /&gt;&amp;nbsp;&amp;nbsp;Activity, &lt;br /&gt;&amp;nbsp;&amp;nbsp;CreditCard, &lt;br /&gt;&amp;nbsp;&amp;nbsp;Banknote, &lt;br /&gt;&amp;nbsp;&amp;nbsp;LayoutDashboard, &lt;br /&gt;&amp;nbsp;&amp;nbsp;Zap, &lt;br /&gt;&amp;nbsp;&amp;nbsp;ShieldHalf, &lt;br /&gt;&amp;nbsp;&amp;nbsp;Calculator, &lt;br /&gt;}&amp;nbsp;from&amp;nbsp;&quot;lucide-react&quot;; &lt;br /&gt;&lt;br /&gt;//&amp;nbsp;FastAPI&amp;nbsp;서버&amp;nbsp;주소&amp;nbsp;(로컬&amp;nbsp;개발&amp;nbsp;환경) &lt;br /&gt;const&amp;nbsp;API_BASE&amp;nbsp;=&amp;nbsp;&quot;http://127.0.0.1:8000&quot;; &lt;br /&gt;&lt;br /&gt;//&amp;nbsp;========================================================== &lt;br /&gt;//&amp;nbsp; &amp;nbsp;1.&amp;nbsp;수학&amp;nbsp;및&amp;nbsp;통계&amp;nbsp;엔진&amp;nbsp;(분석&amp;nbsp;기반&amp;nbsp;로직) &lt;br /&gt;//&amp;nbsp;========================================================== &lt;br /&gt;&lt;br /&gt;//&amp;nbsp;개별&amp;nbsp;트레이드&amp;nbsp;R&amp;nbsp;계산 &lt;br /&gt;const&amp;nbsp;calculateR&amp;nbsp;=&amp;nbsp;(trade)&amp;nbsp;=&amp;gt;&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;const&amp;nbsp;{&amp;nbsp;direction,&amp;nbsp;entry,&amp;nbsp;stop,&amp;nbsp;exit&amp;nbsp;}&amp;nbsp;=&amp;nbsp;trade; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;//&amp;nbsp;리스크&amp;nbsp;(R&amp;nbsp;per&amp;nbsp;Share):&amp;nbsp;진입가와&amp;nbsp;손절가&amp;nbsp;차이 &lt;br /&gt;&amp;nbsp;&amp;nbsp;const&amp;nbsp;rPerShare&amp;nbsp;=&amp;nbsp;Math.abs(entry&amp;nbsp;-&amp;nbsp;stop); &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;//&amp;nbsp;수익/손실&amp;nbsp;(P&amp;amp;L&amp;nbsp;per&amp;nbsp;Share) &lt;br /&gt;&amp;nbsp;&amp;nbsp;const&amp;nbsp;plPerShare&amp;nbsp;= &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;direction&amp;nbsp;===&amp;nbsp;&quot;LONG&quot;&amp;nbsp;?&amp;nbsp;exit&amp;nbsp;-&amp;nbsp;entry&amp;nbsp;:&amp;nbsp;entry&amp;nbsp;-&amp;nbsp;exit; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;//&amp;nbsp;rPerShare가&amp;nbsp;0인&amp;nbsp;경우&amp;nbsp;(진입가와&amp;nbsp;손절가가&amp;nbsp;동일)&amp;nbsp;부동&amp;nbsp;소수점&amp;nbsp;오류&amp;nbsp;방지 &lt;br /&gt;&amp;nbsp;&amp;nbsp;const&amp;nbsp;rTrade&amp;nbsp;=&amp;nbsp;rPerShare&amp;nbsp;&amp;gt;&amp;nbsp;0&amp;nbsp;?&amp;nbsp;plPerShare&amp;nbsp;/&amp;nbsp;rPerShare&amp;nbsp;:&amp;nbsp;0; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;return&amp;nbsp;{&amp;nbsp;rPerShare,&amp;nbsp;plPerShare,&amp;nbsp;rTrade,&amp;nbsp;isWin:&amp;nbsp;rTrade&amp;nbsp;&amp;gt;&amp;nbsp;0&amp;nbsp;}; &lt;br /&gt;}; &lt;br /&gt;&lt;br /&gt;/** &lt;br /&gt;&amp;nbsp;*&amp;nbsp;전략별&amp;nbsp;통계를&amp;nbsp;계산하고&amp;nbsp;상태를&amp;nbsp;결정합니다. &lt;br /&gt;&amp;nbsp;*&amp;nbsp;@description&amp;nbsp;기대값(EV)과&amp;nbsp;켈리&amp;nbsp;기준(Kelly)을&amp;nbsp;계산합니다. &lt;br /&gt;&amp;nbsp;*/ &lt;br /&gt;const&amp;nbsp;calculateStrategyStats&amp;nbsp;=&amp;nbsp;(trades,&amp;nbsp;strategyName)&amp;nbsp;=&amp;gt;&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;const&amp;nbsp;strategyTrades&amp;nbsp;=&amp;nbsp;trades.filter((t)&amp;nbsp;=&amp;gt;&amp;nbsp;t.strategy&amp;nbsp;===&amp;nbsp;strategyName); &lt;br /&gt;&amp;nbsp;&amp;nbsp;const&amp;nbsp;minTradesForValidation&amp;nbsp;=&amp;nbsp;20;&amp;nbsp;//&amp;nbsp;ON/OFF&amp;nbsp;결정&amp;nbsp;최소&amp;nbsp;거래수 &lt;br /&gt;&amp;nbsp;&amp;nbsp;const&amp;nbsp;evThreshold&amp;nbsp;=&amp;nbsp;0.3;&amp;nbsp;//&amp;nbsp;ON&amp;nbsp;상태&amp;nbsp;기준&amp;nbsp;기대값&amp;nbsp;(0.3R) &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(strategyTrades.length&amp;nbsp;&amp;lt;&amp;nbsp;5)&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;status:&amp;nbsp;&quot;UNKNOWN&quot;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;totalTrades:&amp;nbsp;strategyTrades.length, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;winRate:&amp;nbsp;0, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;expectedR:&amp;nbsp;0, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;kellyFraction:&amp;nbsp;0, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;totalR:&amp;nbsp;&quot;0.00&quot;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cumulativeRData:&amp;nbsp;[], &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;drawdownData:&amp;nbsp;[], &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;rMultipleDistribution:&amp;nbsp;[], &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;avgWin:&amp;nbsp;0, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;avgLoss:&amp;nbsp;0, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}; &lt;br /&gt;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;const&amp;nbsp;rResults&amp;nbsp;=&amp;nbsp;strategyTrades.map((t)&amp;nbsp;=&amp;gt;&amp;nbsp;calculateR(t)); &lt;br /&gt;&amp;nbsp;&amp;nbsp;const&amp;nbsp;wins&amp;nbsp;=&amp;nbsp;rResults.filter((r)&amp;nbsp;=&amp;gt;&amp;nbsp;r.rTrade&amp;nbsp;&amp;gt;&amp;nbsp;0); &lt;br /&gt;&amp;nbsp;&amp;nbsp;const&amp;nbsp;losses&amp;nbsp;=&amp;nbsp;rResults.filter((r)&amp;nbsp;=&amp;gt;&amp;nbsp;r.rTrade&amp;nbsp;&amp;lt;&amp;nbsp;0); &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;const&amp;nbsp;winRate&amp;nbsp;=&amp;nbsp;wins.length&amp;nbsp;/&amp;nbsp;rResults.length; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;//&amp;nbsp;평균&amp;nbsp;승리&amp;nbsp;R-Multiple &lt;br /&gt;&amp;nbsp;&amp;nbsp;const&amp;nbsp;avgWin&amp;nbsp;=&amp;nbsp;wins.length&amp;nbsp;&amp;gt;&amp;nbsp;0&amp;nbsp;?&amp;nbsp;wins.reduce((s,&amp;nbsp;r)&amp;nbsp;=&amp;gt;&amp;nbsp;s&amp;nbsp;+&amp;nbsp;r.rTrade,&amp;nbsp;0)&amp;nbsp;/&amp;nbsp;wins.length&amp;nbsp;:&amp;nbsp;0; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;//&amp;nbsp;평균&amp;nbsp;손실&amp;nbsp;R-Multiple&amp;nbsp;(절댓값) &lt;br /&gt;&amp;nbsp;&amp;nbsp;const&amp;nbsp;avgLoss&amp;nbsp;=&amp;nbsp;losses.length&amp;nbsp;&amp;gt;&amp;nbsp;0 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;?&amp;nbsp;Math.abs(losses.reduce((s,&amp;nbsp;r)&amp;nbsp;=&amp;gt;&amp;nbsp;s&amp;nbsp;+&amp;nbsp;r.rTrade,&amp;nbsp;0)&amp;nbsp;/&amp;nbsp;losses.length) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:&amp;nbsp;1;&amp;nbsp;//&amp;nbsp;손실이&amp;nbsp;없으면&amp;nbsp;1R로&amp;nbsp;가정&amp;nbsp;(혹은&amp;nbsp;0으로&amp;nbsp;설정하여&amp;nbsp;무한대&amp;nbsp;방지) &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;//&amp;nbsp;기대값&amp;nbsp;(EV):&amp;nbsp;EV&amp;nbsp;=&amp;nbsp;(P&amp;nbsp;*&amp;nbsp;W)&amp;nbsp;-&amp;nbsp;((1&amp;nbsp;-&amp;nbsp;P)&amp;nbsp;*&amp;nbsp;L) &lt;br /&gt;&amp;nbsp;&amp;nbsp;const&amp;nbsp;expectedR&amp;nbsp;=&amp;nbsp;winRate&amp;nbsp;*&amp;nbsp;avgWin&amp;nbsp;-&amp;nbsp;(1&amp;nbsp;-&amp;nbsp;winRate)&amp;nbsp;*&amp;nbsp;avgLoss; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;//&amp;nbsp;Kelly&amp;nbsp;Fraction&amp;nbsp;(일반화된&amp;nbsp;형태:&amp;nbsp;f*&amp;nbsp;=&amp;nbsp;((W/L)*P&amp;nbsp;-&amp;nbsp;(1-P))&amp;nbsp;/&amp;nbsp;(W/L)) &lt;br /&gt;&amp;nbsp;&amp;nbsp;const&amp;nbsp;winLossRatio&amp;nbsp;=&amp;nbsp;avgLoss&amp;nbsp;&amp;gt;&amp;nbsp;0&amp;nbsp;?&amp;nbsp;avgWin&amp;nbsp;/&amp;nbsp;avgLoss&amp;nbsp;:&amp;nbsp;0; &lt;br /&gt;&amp;nbsp;&amp;nbsp;//&amp;nbsp;Kelly&amp;nbsp;Fraction:&amp;nbsp;max(0,&amp;nbsp;(P&amp;nbsp;*&amp;nbsp;W&amp;nbsp;-&amp;nbsp;(1-P)&amp;nbsp;*&amp;nbsp;L)&amp;nbsp;/&amp;nbsp;W) &lt;br /&gt;&amp;nbsp;&amp;nbsp;//&amp;nbsp;일반화된&amp;nbsp;켈리&amp;nbsp;공식:&amp;nbsp;f*&amp;nbsp;=&amp;nbsp;p&amp;nbsp;-&amp;nbsp;(1-p)/b.&amp;nbsp;여기서&amp;nbsp;b&amp;nbsp;=&amp;nbsp;W/L&amp;nbsp;(평균&amp;nbsp;승리R&amp;nbsp;/&amp;nbsp;평균&amp;nbsp;손실R) &lt;br /&gt;&amp;nbsp;&amp;nbsp;const&amp;nbsp;kellyFraction&amp;nbsp;=&amp;nbsp;Math.max(0,&amp;nbsp;(winRate&amp;nbsp;*&amp;nbsp;winLossRatio&amp;nbsp;-&amp;nbsp;(1&amp;nbsp;-&amp;nbsp;winRate))&amp;nbsp;/&amp;nbsp;winLossRatio); &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;let&amp;nbsp;status&amp;nbsp;=&amp;nbsp;&quot;OFF&quot;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(strategyTrades.length&amp;nbsp;&amp;gt;=&amp;nbsp;minTradesForValidation)&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;status&amp;nbsp;=&amp;nbsp;expectedR&amp;nbsp;&amp;gt;&amp;nbsp;evThreshold&amp;nbsp;?&amp;nbsp;&quot;ON&quot;&amp;nbsp;:&amp;nbsp;&quot;OFF&quot;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;}&amp;nbsp;else&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;status&amp;nbsp;=&amp;nbsp;&quot;UNKNOWN&quot;;&amp;nbsp;//&amp;nbsp;샘플&amp;nbsp;부족 &lt;br /&gt;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;//&amp;nbsp;누적&amp;nbsp;R-Multiple&amp;nbsp;데이터&amp;nbsp;(Cumulative&amp;nbsp;R-Multiple&amp;nbsp;Data) &lt;br /&gt;&amp;nbsp;&amp;nbsp;let&amp;nbsp;cumulativeR&amp;nbsp;=&amp;nbsp;0; &lt;br /&gt;&amp;nbsp;&amp;nbsp;const&amp;nbsp;cumulativeRData&amp;nbsp;=&amp;nbsp;rResults.map((r,&amp;nbsp;index)&amp;nbsp;=&amp;gt;&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cumulativeR&amp;nbsp;+=&amp;nbsp;r.rTrade; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;{&amp;nbsp;name:&amp;nbsp;`Trade&amp;nbsp;${index&amp;nbsp;+&amp;nbsp;1}`,&amp;nbsp;cumulativeR:&amp;nbsp;parseFloat(cumulativeR.toFixed(2))&amp;nbsp;}; &lt;br /&gt;&amp;nbsp;&amp;nbsp;}); &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;//&amp;nbsp;드로우다운&amp;nbsp;데이터&amp;nbsp;(Drawdown&amp;nbsp;Data) &lt;br /&gt;&amp;nbsp;&amp;nbsp;let&amp;nbsp;peak&amp;nbsp;=&amp;nbsp;0; &lt;br /&gt;&amp;nbsp;&amp;nbsp;let&amp;nbsp;maxDrawdown&amp;nbsp;=&amp;nbsp;0; &lt;br /&gt;&amp;nbsp;&amp;nbsp;const&amp;nbsp;drawdownData&amp;nbsp;=&amp;nbsp;cumulativeRData.map((data)&amp;nbsp;=&amp;gt;&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;peak&amp;nbsp;=&amp;nbsp;Math.max(peak,&amp;nbsp;data.cumulativeR); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;const&amp;nbsp;currentDrawdown&amp;nbsp;=&amp;nbsp;peak&amp;nbsp;-&amp;nbsp;data.cumulativeR; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;maxDrawdown&amp;nbsp;=&amp;nbsp;Math.max(maxDrawdown,&amp;nbsp;currentDrawdown); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;{&amp;nbsp;name:&amp;nbsp;data.name,&amp;nbsp;drawdown:&amp;nbsp;parseFloat(currentDrawdown.toFixed(2))&amp;nbsp;}; &lt;br /&gt;&amp;nbsp;&amp;nbsp;}); &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;//&amp;nbsp;R-Multiple&amp;nbsp;분포&amp;nbsp;데이터&amp;nbsp;(R-Multiple&amp;nbsp;Distribution) &lt;br /&gt;&amp;nbsp;&amp;nbsp;const&amp;nbsp;rMultipleDistribution&amp;nbsp;=&amp;nbsp;{}; &lt;br /&gt;&amp;nbsp;&amp;nbsp;rResults.forEach(r&amp;nbsp;=&amp;gt;&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;const&amp;nbsp;bucket&amp;nbsp;=&amp;nbsp;Math.round(r.rTrade&amp;nbsp;*&amp;nbsp;2)&amp;nbsp;/&amp;nbsp;2;&amp;nbsp;//&amp;nbsp;0.5R&amp;nbsp;단위로&amp;nbsp;버킷화 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;rMultipleDistribution[bucket]&amp;nbsp;=&amp;nbsp;(rMultipleDistribution[bucket]&amp;nbsp;||&amp;nbsp;0)&amp;nbsp;+&amp;nbsp;1; &lt;br /&gt;&amp;nbsp;&amp;nbsp;}); &lt;br /&gt;&amp;nbsp;&amp;nbsp;const&amp;nbsp;formattedRDistribution&amp;nbsp;=&amp;nbsp;Object.entries(rMultipleDistribution) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.map(([rVal,&amp;nbsp;count])&amp;nbsp;=&amp;gt;&amp;nbsp;({&amp;nbsp;rValue:&amp;nbsp;parseFloat(rVal),&amp;nbsp;count&amp;nbsp;})) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.sort((a,&amp;nbsp;b)&amp;nbsp;=&amp;gt;&amp;nbsp;a.rValue&amp;nbsp;-&amp;nbsp;b.rValue); &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;return&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;status, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;totalTrades:&amp;nbsp;strategyTrades.length, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;winRate:&amp;nbsp;winRate&amp;nbsp;*&amp;nbsp;100, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;avgWin:&amp;nbsp;parseFloat(avgWin.toFixed(2)), &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;avgLoss:&amp;nbsp;parseFloat(avgLoss.toFixed(2)), &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;expectedR:&amp;nbsp;parseFloat(expectedR.toFixed(2)), &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;kellyFraction:&amp;nbsp;parseFloat(kellyFraction.toFixed(4)), &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wins:&amp;nbsp;wins.length, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;losses:&amp;nbsp;losses.length, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;totalR:&amp;nbsp;rResults.reduce((s,&amp;nbsp;r)&amp;nbsp;=&amp;gt;&amp;nbsp;s&amp;nbsp;+&amp;nbsp;r.rTrade,&amp;nbsp;0).toFixed(2), &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cumulativeRData, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;drawdownData, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;rMultipleDistribution:&amp;nbsp;formattedRDistribution, &lt;br /&gt;&amp;nbsp;&amp;nbsp;}; &lt;br /&gt;}; &lt;br /&gt;&lt;br /&gt;//&amp;nbsp;포지션&amp;nbsp;사이즈&amp;nbsp;추천&amp;nbsp;(Kelly&amp;nbsp;+&amp;nbsp;제한) &lt;br /&gt;const&amp;nbsp;recommendPositionSize&amp;nbsp;=&amp;nbsp;( &lt;br /&gt;&amp;nbsp;&amp;nbsp;strategyStats, &lt;br /&gt;&amp;nbsp;&amp;nbsp;accountSize, &lt;br /&gt;&amp;nbsp;&amp;nbsp;currentPrice, &lt;br /&gt;&amp;nbsp;&amp;nbsp;stopPrice &lt;br /&gt;)&amp;nbsp;=&amp;gt;&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;const&amp;nbsp;{&amp;nbsp;status,&amp;nbsp;kellyFraction,&amp;nbsp;expectedR,&amp;nbsp;avgWin,&amp;nbsp;avgLoss&amp;nbsp;}&amp;nbsp;=&amp;nbsp;strategyStats; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;let&amp;nbsp;recommendedRisk;&amp;nbsp;//&amp;nbsp;계좌&amp;nbsp;대비&amp;nbsp;리스크&amp;nbsp;% &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(status&amp;nbsp;===&amp;nbsp;&quot;OFF&quot;)&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;recommendedRisk&amp;nbsp;=&amp;nbsp;0.2;&amp;nbsp;//&amp;nbsp;비활성:&amp;nbsp;극소량&amp;nbsp;리스크&amp;nbsp;(0.2%) &lt;br /&gt;&amp;nbsp;&amp;nbsp;}&amp;nbsp;else&amp;nbsp;if&amp;nbsp;(status&amp;nbsp;===&amp;nbsp;&quot;UNKNOWN&quot;)&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;recommendedRisk&amp;nbsp;=&amp;nbsp;0.5;&amp;nbsp;//&amp;nbsp;샘플&amp;nbsp;부족:&amp;nbsp;제한적&amp;nbsp;리스크&amp;nbsp;(0.5%) &lt;br /&gt;&amp;nbsp;&amp;nbsp;}&amp;nbsp;else&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;ON:&amp;nbsp;Half&amp;nbsp;Kelly&amp;nbsp;(f*/2)를&amp;nbsp;적용하되,&amp;nbsp;최대&amp;nbsp;2.0%로&amp;nbsp;제한 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;recommendedRisk&amp;nbsp;=&amp;nbsp;Math.min(kellyFraction&amp;nbsp;*&amp;nbsp;50,&amp;nbsp;2.0);&amp;nbsp;//&amp;nbsp;kellyFraction&amp;nbsp;*&amp;nbsp;50&amp;nbsp;=&amp;nbsp;Half&amp;nbsp;Kelly&amp;nbsp;% &lt;br /&gt;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;const&amp;nbsp;rPerShare&amp;nbsp;=&amp;nbsp;Math.abs(currentPrice&amp;nbsp;-&amp;nbsp;stopPrice); &lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(!rPerShare&amp;nbsp;||&amp;nbsp;rPerShare&amp;nbsp;&amp;lt;=&amp;nbsp;0)&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;recommendedRisk:&amp;nbsp;recommendedRisk.toFixed(2), &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;quantity:&amp;nbsp;0, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;riskDollars:&amp;nbsp;&quot;0.00&quot;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;actualRisk:&amp;nbsp;&quot;0.00&quot;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;potentialProfit:&amp;nbsp;&quot;0.00&quot;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;rPerShare:&amp;nbsp;&quot;0.00&quot;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;targetPrice:&amp;nbsp;&quot;0.00&quot;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}; &lt;br /&gt;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;//&amp;nbsp;$1R$&amp;nbsp;당&amp;nbsp;금액&amp;nbsp;계산 &lt;br /&gt;&amp;nbsp;&amp;nbsp;const&amp;nbsp;riskDollars&amp;nbsp;=&amp;nbsp;accountSize&amp;nbsp;*&amp;nbsp;(recommendedRisk&amp;nbsp;/&amp;nbsp;100); &lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;//&amp;nbsp;수량&amp;nbsp;(Quantity)&amp;nbsp;계산 &lt;br /&gt;&amp;nbsp;&amp;nbsp;const&amp;nbsp;quantity&amp;nbsp;=&amp;nbsp;Math.floor(riskDollars&amp;nbsp;/&amp;nbsp;rPerShare); &lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;//&amp;nbsp;실제&amp;nbsp;리스크&amp;nbsp;(Actual&amp;nbsp;Risk) &lt;br /&gt;&amp;nbsp;&amp;nbsp;const&amp;nbsp;actualRisk&amp;nbsp;=&amp;nbsp;((quantity&amp;nbsp;*&amp;nbsp;rPerShare)&amp;nbsp;/&amp;nbsp;accountSize)&amp;nbsp;*&amp;nbsp;100; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;//&amp;nbsp;목표가&amp;nbsp;계산&amp;nbsp;(AvgWin&amp;nbsp;R-Multiple을&amp;nbsp;기준으로) &lt;br /&gt;&amp;nbsp;&amp;nbsp;//&amp;nbsp;LONG:&amp;nbsp;Entry&amp;nbsp;+&amp;nbsp;(AvgWin&amp;nbsp;*&amp;nbsp;R_per_Share) &lt;br /&gt;&amp;nbsp;&amp;nbsp;//&amp;nbsp;SHORT:&amp;nbsp;Entry&amp;nbsp;-&amp;nbsp;(AvgWin&amp;nbsp;*&amp;nbsp;R_per_Share) &lt;br /&gt;&amp;nbsp;&amp;nbsp;const&amp;nbsp;targetPrice&amp;nbsp;=&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(currentPrice&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;stopPrice&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;avgWin&amp;nbsp;&amp;gt;&amp;nbsp;0) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;?&amp;nbsp;(currentPrice&amp;nbsp;+&amp;nbsp;(currentPrice&amp;nbsp;&amp;gt;&amp;nbsp;stopPrice&amp;nbsp;?&amp;nbsp;1&amp;nbsp;:&amp;nbsp;-1)&amp;nbsp;*&amp;nbsp;avgWin&amp;nbsp;*&amp;nbsp;rPerShare).toFixed(2) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:&amp;nbsp;&quot;0.00&quot;; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;//&amp;nbsp;기대&amp;nbsp;수익&amp;nbsp;(Potential&amp;nbsp;Profit) &lt;br /&gt;&amp;nbsp;&amp;nbsp;const&amp;nbsp;potentialProfit&amp;nbsp;=&amp;nbsp;quantity&amp;nbsp;*&amp;nbsp;avgWin&amp;nbsp;*&amp;nbsp;rPerShare; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;return&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;recommendedRisk:&amp;nbsp;recommendedRisk.toFixed(2), &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;quantity, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;riskDollars:&amp;nbsp;riskDollars.toFixed(2), &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;actualRisk:&amp;nbsp;actualRisk.toFixed(2), &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;potentialProfit:&amp;nbsp;potentialProfit.toFixed(2), &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;rPerShare:&amp;nbsp;rPerShare.toFixed(2), &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;targetPrice, &lt;br /&gt;&amp;nbsp;&amp;nbsp;}; &lt;br /&gt;}; &lt;br /&gt;&lt;br /&gt;//&amp;nbsp;샘플&amp;nbsp;트레이드&amp;nbsp;데이터&amp;nbsp;생성&amp;nbsp;(초기&amp;nbsp;시각화용) &lt;br /&gt;const&amp;nbsp;generateSampleTrades&amp;nbsp;=&amp;nbsp;()&amp;nbsp;=&amp;gt;&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;const&amp;nbsp;strategies&amp;nbsp;=&amp;nbsp;[&quot;Ross&quot;,&amp;nbsp;&quot;Buffett&quot;,&amp;nbsp;&quot;Christian&quot;,&amp;nbsp;&quot;Immanuel&quot;]; &lt;br /&gt;&amp;nbsp;&amp;nbsp;const&amp;nbsp;trades&amp;nbsp;=&amp;nbsp;[]; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;const&amp;nbsp;paramsByStrategy&amp;nbsp;=&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Ross:&amp;nbsp;{&amp;nbsp;winRate:&amp;nbsp;0.45,&amp;nbsp;avgWin:&amp;nbsp;2.8,&amp;nbsp;avgLoss:&amp;nbsp;1.2,&amp;nbsp;count:&amp;nbsp;24&amp;nbsp;},&amp;nbsp;//&amp;nbsp;EV&amp;nbsp;=&amp;nbsp;0.45*2.8&amp;nbsp;-&amp;nbsp;0.55*1.2&amp;nbsp;=&amp;nbsp;1.26&amp;nbsp;-&amp;nbsp;0.66&amp;nbsp;=&amp;nbsp;0.60 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Buffett:&amp;nbsp;{&amp;nbsp;winRate:&amp;nbsp;0.7,&amp;nbsp;avgWin:&amp;nbsp;1.5,&amp;nbsp;avgLoss:&amp;nbsp;0.8,&amp;nbsp;count:&amp;nbsp;25&amp;nbsp;},&amp;nbsp;//&amp;nbsp;EV&amp;nbsp;=&amp;nbsp;0.7*1.5&amp;nbsp;-&amp;nbsp;0.3*0.8&amp;nbsp;=&amp;nbsp;1.05&amp;nbsp;-&amp;nbsp;0.24&amp;nbsp;=&amp;nbsp;0.81 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Christian:&amp;nbsp;{&amp;nbsp;winRate:&amp;nbsp;0.52,&amp;nbsp;avgWin:&amp;nbsp;2.2,&amp;nbsp;avgLoss:&amp;nbsp;1.1,&amp;nbsp;count:&amp;nbsp;18&amp;nbsp;},&amp;nbsp;//&amp;nbsp;EV&amp;nbsp;=&amp;nbsp;0.52*2.2&amp;nbsp;-&amp;nbsp;0.48*1.1&amp;nbsp;=&amp;nbsp;1.144&amp;nbsp;-&amp;nbsp;0.528&amp;nbsp;=&amp;nbsp;0.616&amp;nbsp;(UNKNOWN) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Immanuel:&amp;nbsp;{&amp;nbsp;winRate:&amp;nbsp;0.6,&amp;nbsp;avgWin:&amp;nbsp;1.5,&amp;nbsp;avgLoss:&amp;nbsp;1.0,&amp;nbsp;count:&amp;nbsp;30&amp;nbsp;},&amp;nbsp;//&amp;nbsp;EV&amp;nbsp;=&amp;nbsp;0.6*1.5&amp;nbsp;-&amp;nbsp;0.4*1.0&amp;nbsp;=&amp;nbsp;0.9&amp;nbsp;-&amp;nbsp;0.4&amp;nbsp;=&amp;nbsp;0.50 &lt;br /&gt;&amp;nbsp;&amp;nbsp;}; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;strategies.forEach((strategy)&amp;nbsp;=&amp;gt;&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;const&amp;nbsp;p&amp;nbsp;=&amp;nbsp;paramsByStrategy[strategy]; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for&amp;nbsp;(let&amp;nbsp;i&amp;nbsp;=&amp;nbsp;0;&amp;nbsp;i&amp;nbsp;&amp;lt;&amp;nbsp;p.count;&amp;nbsp;i++)&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;const&amp;nbsp;isWin&amp;nbsp;=&amp;nbsp;Math.random()&amp;nbsp;&amp;lt;&amp;nbsp;p.winRate; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;const&amp;nbsp;direction&amp;nbsp;=&amp;nbsp;Math.random()&amp;nbsp;&amp;lt;&amp;nbsp;0.5&amp;nbsp;?&amp;nbsp;&quot;LONG&quot;&amp;nbsp;:&amp;nbsp;&quot;SHORT&quot;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;const&amp;nbsp;entry&amp;nbsp;=&amp;nbsp;100&amp;nbsp;+&amp;nbsp;Math.random()&amp;nbsp;*&amp;nbsp;20; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;const&amp;nbsp;rSize&amp;nbsp;=&amp;nbsp;2&amp;nbsp;+&amp;nbsp;Math.random()&amp;nbsp;*&amp;nbsp;1;&amp;nbsp;//&amp;nbsp;기본&amp;nbsp;리스크&amp;nbsp;크기 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;const&amp;nbsp;stop&amp;nbsp;=&amp;nbsp;direction&amp;nbsp;===&amp;nbsp;&quot;LONG&quot;&amp;nbsp;?&amp;nbsp;entry&amp;nbsp;-&amp;nbsp;rSize&amp;nbsp;:&amp;nbsp;entry&amp;nbsp;+&amp;nbsp;rSize; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;let&amp;nbsp;exit; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(isWin)&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;const&amp;nbsp;winSize&amp;nbsp;=&amp;nbsp;rSize&amp;nbsp;*&amp;nbsp;(p.avgWin&amp;nbsp;+&amp;nbsp;(Math.random()&amp;nbsp;-&amp;nbsp;0.5)&amp;nbsp;*&amp;nbsp;0.5); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exit&amp;nbsp;=&amp;nbsp;direction&amp;nbsp;===&amp;nbsp;&quot;LONG&quot;&amp;nbsp;?&amp;nbsp;entry&amp;nbsp;+&amp;nbsp;winSize&amp;nbsp;:&amp;nbsp;entry&amp;nbsp;-&amp;nbsp;winSize; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;else&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;const&amp;nbsp;lossSize&amp;nbsp;=&amp;nbsp;rSize&amp;nbsp;*&amp;nbsp;(p.avgLoss&amp;nbsp;+&amp;nbsp;(Math.random()&amp;nbsp;-&amp;nbsp;0.5)&amp;nbsp;*&amp;nbsp;0.3);&amp;nbsp;//&amp;nbsp;평균&amp;nbsp;손실&amp;nbsp;R-Multiple&amp;nbsp;반영 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exit&amp;nbsp;=&amp;nbsp;direction&amp;nbsp;===&amp;nbsp;&quot;LONG&quot;&amp;nbsp;?&amp;nbsp;entry&amp;nbsp;-&amp;nbsp;lossSize&amp;nbsp;:&amp;nbsp;entry&amp;nbsp;+&amp;nbsp;lossSize; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;trades.push({ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;id:&amp;nbsp;`${strategy}-${i}`, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;strategy, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;direction, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;entry:&amp;nbsp;parseFloat(entry.toFixed(2)), &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;stop:&amp;nbsp;parseFloat(stop.toFixed(2)), &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exit:&amp;nbsp;parseFloat(exit.toFixed(2)), &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;quantity:&amp;nbsp;100, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;date:&amp;nbsp;new&amp;nbsp;Date(2024,&amp;nbsp;0,&amp;nbsp;i&amp;nbsp;+&amp;nbsp;1), &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;&amp;nbsp;&amp;nbsp;}); &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;return&amp;nbsp;trades; &lt;br /&gt;}; &lt;br /&gt;&lt;br /&gt;//&amp;nbsp;========================================================== &lt;br /&gt;//&amp;nbsp;⚙️&amp;nbsp;2.&amp;nbsp;스타일&amp;nbsp;및&amp;nbsp;유틸리티 &lt;br /&gt;//&amp;nbsp;========================================================== &lt;br /&gt;&lt;br /&gt;const&amp;nbsp;getStatusColor&amp;nbsp;=&amp;nbsp;(status)&amp;nbsp;=&amp;gt;&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;switch&amp;nbsp;(status)&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;case&amp;nbsp;&quot;ON&quot;:&amp;nbsp;return&amp;nbsp;&quot;#16a34a&quot;;&amp;nbsp;//&amp;nbsp;Green &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;case&amp;nbsp;&quot;OFF&quot;:&amp;nbsp;return&amp;nbsp;&quot;#dc2626&quot;;&amp;nbsp;//&amp;nbsp;Red &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;case&amp;nbsp;&quot;UNKNOWN&quot;:&amp;nbsp;return&amp;nbsp;&quot;#eab308&quot;;&amp;nbsp;//&amp;nbsp;Yellow &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;default:&amp;nbsp;return&amp;nbsp;&quot;#9ca3af&quot;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;}; &lt;br /&gt;&lt;br /&gt;const&amp;nbsp;getStatusIcon&amp;nbsp;=&amp;nbsp;(status)&amp;nbsp;=&amp;gt;&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;switch&amp;nbsp;(status)&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;case&amp;nbsp;&quot;ON&quot;:&amp;nbsp;return&amp;nbsp;&amp;lt;CheckCircle&amp;nbsp;size={26}&amp;nbsp;color=&quot;#22c55e&quot;&amp;nbsp;/&amp;gt;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;case&amp;nbsp;&quot;OFF&quot;:&amp;nbsp;return&amp;nbsp;&amp;lt;TrendingDown&amp;nbsp;size={26}&amp;nbsp;color=&quot;#f87171&quot;&amp;nbsp;/&amp;gt;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;case&amp;nbsp;&quot;UNKNOWN&quot;:&amp;nbsp;return&amp;nbsp;&amp;lt;AlertCircle&amp;nbsp;size={26}&amp;nbsp;color=&quot;#facc15&quot;&amp;nbsp;/&amp;gt;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;default:&amp;nbsp;return&amp;nbsp;null; &lt;br /&gt;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;}; &lt;br /&gt;&lt;br /&gt;const&amp;nbsp;appStyle&amp;nbsp;=&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;minHeight:&amp;nbsp;&quot;100vh&quot;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;background:&amp;nbsp;&quot;radial-gradient(circle&amp;nbsp;at&amp;nbsp;top,&amp;nbsp;#1e293b,&amp;nbsp;#020617)&quot;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;padding:&amp;nbsp;&quot;48px&amp;nbsp;0&quot;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;color:&amp;nbsp;&quot;#f9fafb&quot;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;fontFamily: &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&quot;-apple-system,BlinkMacSystemFont,system-ui,Segoe&amp;nbsp;UI,sans-serif&quot;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;fontSize:&amp;nbsp;&quot;18px&quot;, &lt;br /&gt;}; &lt;br /&gt;&lt;br /&gt;const&amp;nbsp;containerStyle&amp;nbsp;=&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;maxWidth:&amp;nbsp;&quot;1400px&quot;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;margin:&amp;nbsp;&quot;0&amp;nbsp;auto&quot;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;padding:&amp;nbsp;&quot;0&amp;nbsp;32px&quot;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;boxSizing:&amp;nbsp;&quot;border-box&quot;, &lt;br /&gt;}; &lt;br /&gt;&lt;br /&gt;const&amp;nbsp;cardStyle&amp;nbsp;=&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;background:&amp;nbsp;&quot;rgba(15,23,42,0.9)&quot;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;borderRadius:&amp;nbsp;&quot;18px&quot;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;border:&amp;nbsp;&quot;1px&amp;nbsp;solid&amp;nbsp;rgba(148,163,184,0.55)&quot;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;padding:&amp;nbsp;&quot;20px&quot;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;boxSizing:&amp;nbsp;&quot;border-box&quot;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;boxShadow:&amp;nbsp;&quot;0&amp;nbsp;4px&amp;nbsp;12px&amp;nbsp;rgba(0,&amp;nbsp;0,&amp;nbsp;0,&amp;nbsp;0.2)&quot;, &lt;br /&gt;}; &lt;br /&gt;&lt;br /&gt;const&amp;nbsp;sectionTitleStyle&amp;nbsp;=&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;fontSize:&amp;nbsp;&quot;26px&quot;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;fontWeight:&amp;nbsp;800, &lt;br /&gt;&amp;nbsp;&amp;nbsp;marginBottom:&amp;nbsp;&quot;14px&quot;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;color:&amp;nbsp;&quot;#e2e8f0&quot;, &lt;br /&gt;}; &lt;br /&gt;&lt;br /&gt;//&amp;nbsp;========================================================== &lt;br /&gt;//&amp;nbsp; &amp;nbsp;3.&amp;nbsp;메인&amp;nbsp;컴포넌트 &lt;br /&gt;//&amp;nbsp;========================================================== &lt;br /&gt;&lt;br /&gt;const&amp;nbsp;PBYTradingSystem&amp;nbsp;=&amp;nbsp;()&amp;nbsp;=&amp;gt;&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;//&amp;nbsp;---&amp;nbsp;상태&amp;nbsp;관리&amp;nbsp;--- &lt;br /&gt;&amp;nbsp;&amp;nbsp;const&amp;nbsp;[trades,&amp;nbsp;setTrades]&amp;nbsp;=&amp;nbsp;useState([]);&amp;nbsp;//&amp;nbsp;모든&amp;nbsp;거래&amp;nbsp;내역 &lt;br /&gt;&amp;nbsp;&amp;nbsp;const&amp;nbsp;[strategyStats,&amp;nbsp;setStrategyStats]&amp;nbsp;=&amp;nbsp;useState({});&amp;nbsp;//&amp;nbsp;전략별&amp;nbsp;통계 &lt;br /&gt;&amp;nbsp;&amp;nbsp;const&amp;nbsp;[accountSize,&amp;nbsp;setAccountSize]&amp;nbsp;=&amp;nbsp;useState(100000);&amp;nbsp;//&amp;nbsp;계좌&amp;nbsp;크기 &lt;br /&gt;&amp;nbsp;&amp;nbsp;const&amp;nbsp;[currentView,&amp;nbsp;setCurrentView]&amp;nbsp;=&amp;nbsp;useState(&quot;dashboard&quot;);&amp;nbsp;//&amp;nbsp;현재&amp;nbsp;탭 &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;//&amp;nbsp;주문&amp;nbsp;입력&amp;nbsp;상태 &lt;br /&gt;&amp;nbsp;&amp;nbsp;const&amp;nbsp;[selectedStrategy,&amp;nbsp;setSelectedStrategy]&amp;nbsp;=&amp;nbsp;useState(&quot;Ross&quot;); &lt;br /&gt;&amp;nbsp;&amp;nbsp;const&amp;nbsp;[orderDirection,&amp;nbsp;setOrderDirection]&amp;nbsp;=&amp;nbsp;useState(&quot;LONG&quot;); &lt;br /&gt;&amp;nbsp;&amp;nbsp;const&amp;nbsp;[entryPrice,&amp;nbsp;setEntryPrice]&amp;nbsp;=&amp;nbsp;useState(&quot;105.50&quot;); &lt;br /&gt;&amp;nbsp;&amp;nbsp;const&amp;nbsp;[stopPrice,&amp;nbsp;setStopPrice]&amp;nbsp;=&amp;nbsp;useState(&quot;103.00&quot;); &lt;br /&gt;&amp;nbsp;&amp;nbsp;const&amp;nbsp;[symbol,&amp;nbsp;setSymbol]&amp;nbsp;=&amp;nbsp;useState(&quot;NVDA&quot;); &lt;br /&gt;&amp;nbsp;&amp;nbsp;const&amp;nbsp;[currentChartPrice,&amp;nbsp;setCurrentChartPrice]&amp;nbsp;=&amp;nbsp;useState(105.50);&amp;nbsp;//&amp;nbsp;차트&amp;nbsp;캔버스에&amp;nbsp;표시할&amp;nbsp;현재가 &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;//&amp;nbsp;모의&amp;nbsp;연결&amp;nbsp;상태 &lt;br /&gt;&amp;nbsp;&amp;nbsp;const&amp;nbsp;[brokerConnected,&amp;nbsp;setBrokerConnected]&amp;nbsp;=&amp;nbsp;useState(false); &lt;br /&gt;&amp;nbsp;&amp;nbsp;const&amp;nbsp;[dayOrders,&amp;nbsp;setDayOrders]&amp;nbsp;=&amp;nbsp;useState([]);&amp;nbsp;//&amp;nbsp;일별&amp;nbsp;모의&amp;nbsp;주문&amp;nbsp;내역 &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;//&amp;nbsp;백엔드&amp;nbsp;연동&amp;nbsp;상태 &lt;br /&gt;&amp;nbsp;&amp;nbsp;const&amp;nbsp;[serverPlan,&amp;nbsp;setServerPlan]&amp;nbsp;=&amp;nbsp;useState(null); &lt;br /&gt;&amp;nbsp;&amp;nbsp;const&amp;nbsp;[serverLoading,&amp;nbsp;setServerLoading]&amp;nbsp;=&amp;nbsp;useState(false); &lt;br /&gt;&amp;nbsp;&amp;nbsp;const&amp;nbsp;[serverError,&amp;nbsp;setServerError]&amp;nbsp;=&amp;nbsp;useState(&quot;&quot;); &lt;br /&gt;&amp;nbsp;&amp;nbsp;const&amp;nbsp;[engineIdeas,&amp;nbsp;setEngineIdeas]&amp;nbsp;=&amp;nbsp;useState([]); &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;//&amp;nbsp;---&amp;nbsp;Effect:&amp;nbsp;초기&amp;nbsp;데이터&amp;nbsp;로드&amp;nbsp;및&amp;nbsp;통계&amp;nbsp;계산&amp;nbsp;--- &lt;br /&gt;&amp;nbsp;&amp;nbsp;useEffect(()&amp;nbsp;=&amp;gt;&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;1.&amp;nbsp;샘플&amp;nbsp;트레이드&amp;nbsp;로드 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;const&amp;nbsp;sampleTrades&amp;nbsp;=&amp;nbsp;generateSampleTrades(); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setTrades(sampleTrades); &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;2.&amp;nbsp;전략&amp;nbsp;통계&amp;nbsp;계산 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;const&amp;nbsp;stats&amp;nbsp;=&amp;nbsp;{}; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[&quot;Ross&quot;,&amp;nbsp;&quot;Buffett&quot;,&amp;nbsp;&quot;Christian&quot;,&amp;nbsp;&quot;Immanuel&quot;].forEach((name)&amp;nbsp;=&amp;gt;&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;stats[name]&amp;nbsp;=&amp;nbsp;calculateStrategyStats(sampleTrades,&amp;nbsp;name); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setStrategyStats(stats); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;3.&amp;nbsp;백엔드&amp;nbsp;아이디어&amp;nbsp;로드&amp;nbsp;모의&amp;nbsp;(FastAPI&amp;nbsp;/api/signals) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;const&amp;nbsp;loadIdeas&amp;nbsp;=&amp;nbsp;async&amp;nbsp;()&amp;nbsp;=&amp;gt;&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;try&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;실제&amp;nbsp;fetch&amp;nbsp;대신&amp;nbsp;더미&amp;nbsp;데이터&amp;nbsp;사용 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;const&amp;nbsp;mockData&amp;nbsp;=&amp;nbsp;[ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&amp;nbsp;id:&amp;nbsp;1,&amp;nbsp;symbol:&amp;nbsp;&quot;TSLA&quot;,&amp;nbsp;style:&amp;nbsp;&quot;Ross&quot;,&amp;nbsp;direction:&amp;nbsp;&quot;LONG&quot;,&amp;nbsp;price:&amp;nbsp;205.50,&amp;nbsp;detail:&amp;nbsp;&quot;돌파&amp;nbsp;유효:&amp;nbsp;기대값&amp;nbsp;1.5R&quot;&amp;nbsp;}, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&amp;nbsp;id:&amp;nbsp;2,&amp;nbsp;symbol:&amp;nbsp;&quot;GOOG&quot;,&amp;nbsp;style:&amp;nbsp;&quot;Buffett&quot;,&amp;nbsp;direction:&amp;nbsp;&quot;SHORT&quot;,&amp;nbsp;price:&amp;nbsp;155.00,&amp;nbsp;detail:&amp;nbsp;&quot;단기&amp;nbsp;과매수:&amp;nbsp;기대값&amp;nbsp;0.8R&quot;&amp;nbsp;}, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;]; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setEngineIdeas(mockData.slice(0,&amp;nbsp;10)); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;catch&amp;nbsp;(err)&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;console.error(&quot;신호&amp;nbsp;로드&amp;nbsp;실패:&quot;,&amp;nbsp;err); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;loadIdeas(); &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;},&amp;nbsp;[]); &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;//&amp;nbsp;---&amp;nbsp;파생&amp;nbsp;상태&amp;nbsp;(Memoization)&amp;nbsp;--- &lt;br /&gt;&amp;nbsp;&amp;nbsp;const&amp;nbsp;selectedStrategyStats&amp;nbsp;=&amp;nbsp;strategyStats[selectedStrategy]&amp;nbsp;||&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;status:&amp;nbsp;&quot;UNKNOWN&quot;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;totalTrades:&amp;nbsp;0, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;winRate:&amp;nbsp;0, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;expectedR:&amp;nbsp;0, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;kellyFraction:&amp;nbsp;0, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;totalR:&amp;nbsp;&quot;0.00&quot;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cumulativeRData:&amp;nbsp;[], &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;drawdownData:&amp;nbsp;[], &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;rMultipleDistribution:&amp;nbsp;[], &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;avgWin:&amp;nbsp;0, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;avgLoss:&amp;nbsp;0, &lt;br /&gt;&amp;nbsp;&amp;nbsp;}; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;const&amp;nbsp;recommendedPosition&amp;nbsp;=&amp;nbsp;useMemo(()&amp;nbsp;=&amp;gt;&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(!selectedStrategyStats)&amp;nbsp;return&amp;nbsp;null; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;recommendPositionSize( &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;selectedStrategyStats, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;accountSize, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;parseFloat(entryPrice&amp;nbsp;||&amp;nbsp;&quot;0&quot;), &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;parseFloat(stopPrice&amp;nbsp;||&amp;nbsp;&quot;0&quot;) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;); &lt;br /&gt;&amp;nbsp;&amp;nbsp;},&amp;nbsp;[selectedStrategyStats,&amp;nbsp;accountSize,&amp;nbsp;entryPrice,&amp;nbsp;stopPrice]); &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;//&amp;nbsp;---&amp;nbsp;핸들러&amp;nbsp;함수&amp;nbsp;--- &lt;br /&gt;&amp;nbsp;&amp;nbsp;const&amp;nbsp;handleMockOrder&amp;nbsp;=&amp;nbsp;(side)&amp;nbsp;=&amp;gt;&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(!recommendedPosition&amp;nbsp;||&amp;nbsp;recommendedPosition.quantity&amp;nbsp;===&amp;nbsp;0)&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;alert(&quot;유효한&amp;nbsp;진입가/손절가&amp;nbsp;또는&amp;nbsp;전략을&amp;nbsp;먼저&amp;nbsp;입력해&amp;nbsp;주세요.&quot;); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;const&amp;nbsp;order&amp;nbsp;=&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;time:&amp;nbsp;new&amp;nbsp;Date().toLocaleTimeString(), &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;side, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;symbol:&amp;nbsp;symbol.toUpperCase(), &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;strategy:&amp;nbsp;selectedStrategy, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;qty:&amp;nbsp;recommendedPosition.quantity, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;entry:&amp;nbsp;parseFloat(entryPrice), &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;stop:&amp;nbsp;parseFloat(stopPrice), &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;riskPct:&amp;nbsp;recommendedPosition.actualRisk, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;target:&amp;nbsp;recommendedPosition.targetPrice, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setDayOrders((prev)&amp;nbsp;=&amp;gt;&amp;nbsp;[order,&amp;nbsp;...prev].slice(0,&amp;nbsp;10)); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;alert( &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;`[모의&amp;nbsp;주문]&amp;nbsp;체결\n${order.symbol}&amp;nbsp;${side}&amp;nbsp;${order.qty}주\n리스크:&amp;nbsp;${order.riskPct}%` &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;); &lt;br /&gt;&amp;nbsp;&amp;nbsp;}; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;const&amp;nbsp;handleServerPlan&amp;nbsp;=&amp;nbsp;async&amp;nbsp;()&amp;nbsp;=&amp;gt;&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setServerError(&quot;&quot;); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setServerPlan(null); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(!recommendedPosition&amp;nbsp;||&amp;nbsp;recommendedPosition.quantity&amp;nbsp;===&amp;nbsp;0)&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setServerError(&quot;유효한&amp;nbsp;포지션&amp;nbsp;정보가&amp;nbsp;필요합니다.&quot;); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;try&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setServerLoading(true); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;const&amp;nbsp;body&amp;nbsp;=&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;symbol, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;style:&amp;nbsp;selectedStrategy, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;direction:&amp;nbsp;orderDirection, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;entry:&amp;nbsp;parseFloat(entryPrice), &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;stop:&amp;nbsp;parseFloat(stopPrice), &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;account_size:&amp;nbsp;accountSize, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;risk_percent:&amp;nbsp;parseFloat(recommendedPosition.recommendedRisk),&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;실제&amp;nbsp;FastAPI&amp;nbsp;요청을&amp;nbsp;모의하는&amp;nbsp;더미&amp;nbsp;로직 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;await&amp;nbsp;new&amp;nbsp;Promise(resolve&amp;nbsp;=&amp;gt;&amp;nbsp;setTimeout(resolve,&amp;nbsp;800));&amp;nbsp;//&amp;nbsp;로딩&amp;nbsp;모의 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;const&amp;nbsp;mockPlan&amp;nbsp;=&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;symbol:&amp;nbsp;body.symbol, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;style:&amp;nbsp;body.style, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;direction:&amp;nbsp;body.direction, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;qty:&amp;nbsp;recommendedPosition.quantity, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;target_price:&amp;nbsp;recommendedPosition.targetPrice, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;suggested_risk_pct:&amp;nbsp;recommendedPosition.recommendedRisk, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;detail:&amp;nbsp;`EV&amp;nbsp;${selectedStrategyStats.expectedR.toFixed(2)}R&amp;nbsp;기반,&amp;nbsp;Half-Kelly&amp;nbsp;리스크&amp;nbsp;${recommendedPosition.recommendedRisk}%&amp;nbsp;적용.`, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setServerPlan(mockPlan); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;catch&amp;nbsp;(err)&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setServerError(&quot;서버&amp;nbsp;계산&amp;nbsp;중&amp;nbsp;오류가&amp;nbsp;발생했습니다.&quot;); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;finally&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setServerLoading(false); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;&amp;nbsp;&amp;nbsp;}; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;//&amp;nbsp;========================================================== &lt;br /&gt;&amp;nbsp;&amp;nbsp;//&amp;nbsp; &amp;nbsp;4.&amp;nbsp;JSX&amp;nbsp;렌더링 &lt;br /&gt;&amp;nbsp;&amp;nbsp;//&amp;nbsp;========================================================== &lt;br /&gt;&amp;nbsp;&amp;nbsp;return&amp;nbsp;( &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div&amp;nbsp;style={appStyle}&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div&amp;nbsp;style={containerStyle}&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{/*&amp;nbsp;---&amp;nbsp;헤더&amp;nbsp;및&amp;nbsp;내비게이션&amp;nbsp;---&amp;nbsp;*/} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;header &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;style={{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;display:&amp;nbsp;&quot;flex&quot;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;justifyContent:&amp;nbsp;&quot;space-between&quot;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;alignItems:&amp;nbsp;&quot;center&quot;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;marginBottom:&amp;nbsp;&quot;28px&quot;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;h1 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;style={{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fontSize:&amp;nbsp;&quot;42px&quot;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fontWeight:&amp;nbsp;900, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;margin:&amp;nbsp;0, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;color:&amp;nbsp;&quot;#c7d2fe&quot;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PBY&amp;nbsp;D.S.&amp;nbsp;Trader&amp;nbsp;Engine &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/h1&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;p &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;style={{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;marginTop:&amp;nbsp;&quot;8px&quot;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fontSize:&amp;nbsp;&quot;16px&quot;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;color:&amp;nbsp;&quot;#cbd5f5&quot;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;수학,&amp;nbsp;리스크&amp;nbsp;통제&amp;nbsp;및&amp;nbsp;실행&amp;nbsp;최적화를&amp;nbsp;위한&amp;nbsp;통합&amp;nbsp;시스템 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/p&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/div&amp;gt; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;nav &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;style={{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;display:&amp;nbsp;&quot;flex&quot;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;gap:&amp;nbsp;&quot;10px&quot;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{[ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&amp;nbsp;id:&amp;nbsp;&quot;dashboard&quot;,&amp;nbsp;label:&amp;nbsp;&quot;대시보드&quot;,&amp;nbsp;Icon:&amp;nbsp;LayoutDashboard&amp;nbsp;}, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&amp;nbsp;id:&amp;nbsp;&quot;order&quot;,&amp;nbsp;label:&amp;nbsp;&quot;주문&amp;nbsp;/&amp;nbsp;리스크&quot;,&amp;nbsp;Icon:&amp;nbsp;ShieldHalf&amp;nbsp;}, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&amp;nbsp;id:&amp;nbsp;&quot;stats&quot;,&amp;nbsp;label:&amp;nbsp;&quot;전략&amp;nbsp;통계&quot;,&amp;nbsp;Icon:&amp;nbsp;Activity&amp;nbsp;}, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;].map((tab)&amp;nbsp;=&amp;gt;&amp;nbsp;( &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;button &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;key={tab.id} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;onClick={()&amp;nbsp;=&amp;gt;&amp;nbsp;setCurrentView(tab.id)} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;style={{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;padding:&amp;nbsp;&quot;10px&amp;nbsp;18px&quot;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;borderRadius:&amp;nbsp;&quot;999px&quot;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;border: &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;currentView&amp;nbsp;===&amp;nbsp;tab.id &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;?&amp;nbsp;&quot;2px&amp;nbsp;solid&amp;nbsp;#a855f7&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:&amp;nbsp;&quot;1px&amp;nbsp;solid&amp;nbsp;rgba(148,163,184,0.7)&quot;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;background: &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;currentView&amp;nbsp;===&amp;nbsp;tab.id &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;?&amp;nbsp;&quot;linear-gradient(135deg,#a855f7,#6366f1)&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:&amp;nbsp;&quot;rgba(15,23,42,0.95)&quot;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;color:&amp;nbsp;&quot;#e5e7eb&quot;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cursor:&amp;nbsp;&quot;pointer&quot;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fontSize:&amp;nbsp;&quot;16px&quot;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fontWeight:&amp;nbsp;700, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;display:&amp;nbsp;'flex', &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;alignItems:&amp;nbsp;'center', &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;gap:&amp;nbsp;'6px', &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;tab.Icon&amp;nbsp;size={18}&amp;nbsp;/&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{tab.label} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/button&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;))} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/nav&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/header&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{/*&amp;nbsp;---&amp;nbsp;계좌&amp;nbsp;사이즈&amp;nbsp;박스&amp;nbsp;---&amp;nbsp;*/} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;section &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;style={{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;...cardStyle, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;display:&amp;nbsp;&quot;flex&quot;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;justifyContent:&amp;nbsp;&quot;space-between&quot;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;alignItems:&amp;nbsp;&quot;center&quot;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;marginBottom:&amp;nbsp;&quot;20px&quot;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;borderColor:&amp;nbsp;brokerConnected&amp;nbsp;?&amp;nbsp;&quot;#4ade80&quot;&amp;nbsp;:&amp;nbsp;&quot;rgba(148,163,184,0.55)&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div&amp;nbsp;style={{&amp;nbsp;display:&amp;nbsp;&quot;flex&quot;,&amp;nbsp;alignItems:&amp;nbsp;&quot;center&quot;&amp;nbsp;}}&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;DollarSign&amp;nbsp;size={36}&amp;nbsp;color=&quot;#4ade80&quot;&amp;nbsp;style={{&amp;nbsp;marginRight:&amp;nbsp;&quot;14px&quot;&amp;nbsp;}}&amp;nbsp;/&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div&amp;nbsp;style={{&amp;nbsp;fontSize:&amp;nbsp;&quot;16px&quot;,&amp;nbsp;color:&amp;nbsp;&quot;#c7d2fe&quot;&amp;nbsp;}}&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;계좌&amp;nbsp;크기&amp;nbsp;(USD/KRW) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/div&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div&amp;nbsp;style={{&amp;nbsp;fontSize:&amp;nbsp;&quot;30px&quot;,&amp;nbsp;fontWeight:&amp;nbsp;800&amp;nbsp;}}&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;${accountSize.toLocaleString()} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/div&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/div&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/div&amp;gt; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div&amp;nbsp;style={{&amp;nbsp;display:&amp;nbsp;&quot;flex&quot;,&amp;nbsp;gap:&amp;nbsp;&quot;20px&quot;,&amp;nbsp;alignItems:&amp;nbsp;&quot;center&quot;&amp;nbsp;}}&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{/*&amp;nbsp;브로커&amp;nbsp;연결&amp;nbsp;상태&amp;nbsp;*/} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div&amp;nbsp;style={{&amp;nbsp;display:&amp;nbsp;&quot;flex&quot;,&amp;nbsp;alignItems:&amp;nbsp;&quot;center&quot;,&amp;nbsp;gap:&amp;nbsp;&quot;8px&quot;&amp;nbsp;}}&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;CreditCard&amp;nbsp;size={20}&amp;nbsp;color={brokerConnected&amp;nbsp;?&amp;nbsp;&quot;#4ade80&quot;&amp;nbsp;:&amp;nbsp;&quot;#f97373&quot;}&amp;nbsp;/&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;span&amp;nbsp;style={{&amp;nbsp;fontWeight:&amp;nbsp;700,&amp;nbsp;color:&amp;nbsp;brokerConnected&amp;nbsp;?&amp;nbsp;&quot;#4ade80&quot;&amp;nbsp;:&amp;nbsp;&quot;#f97373&quot;&amp;nbsp;}}&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;브로커:&amp;nbsp;{brokerConnected&amp;nbsp;?&amp;nbsp;&quot;연결됨&quot;&amp;nbsp;:&amp;nbsp;&quot;모의&quot;} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/span&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/div&amp;gt; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{/*&amp;nbsp;계좌&amp;nbsp;크기&amp;nbsp;수동&amp;nbsp;수정&amp;nbsp;*/} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;label&amp;nbsp;style={{&amp;nbsp;fontSize:&amp;nbsp;&quot;14px&quot;,&amp;nbsp;color:&amp;nbsp;&quot;#cbd5f5&quot;,&amp;nbsp;marginRight:&amp;nbsp;&quot;10px&quot;&amp;nbsp;}}&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;계좌&amp;nbsp;수정 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/label&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;input &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;type=&quot;number&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;value={accountSize} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;onChange={(e)&amp;nbsp;=&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setAccountSize(parseInt(e.target.value&amp;nbsp;||&amp;nbsp;&quot;0&quot;,&amp;nbsp;10)) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;style={{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;...cardStyle, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;padding:&amp;nbsp;&quot;8px&amp;nbsp;12px&quot;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;width:&amp;nbsp;&quot;180px&quot;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fontSize:&amp;nbsp;&quot;16px&quot;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;background:&amp;nbsp;&quot;#020617&quot;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/div&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/div&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/section&amp;gt; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{/*&amp;nbsp;====================&amp;nbsp;대시보드&amp;nbsp;뷰&amp;nbsp;====================&amp;nbsp;*/} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{currentView&amp;nbsp;===&amp;nbsp;&quot;dashboard&quot;&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;( &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{/*&amp;nbsp;Strategy&amp;nbsp;Center&amp;nbsp;-&amp;nbsp;전략&amp;nbsp;카드&amp;nbsp;목록&amp;nbsp;*/} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;section&amp;nbsp;style={{&amp;nbsp;marginBottom:&amp;nbsp;&quot;26px&quot;&amp;nbsp;}}&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;h2&amp;nbsp;style={sectionTitleStyle}&amp;gt; &amp;nbsp;Strategy&amp;nbsp;Center&amp;lt;/h2&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;style={{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;display:&amp;nbsp;&quot;grid&quot;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;gridTemplateColumns:&amp;nbsp;&quot;repeat(4,&amp;nbsp;minmax(0,&amp;nbsp;1fr))&quot;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;gap:&amp;nbsp;&quot;16px&quot;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{Object.entries(strategyStats).map(([name,&amp;nbsp;stats])&amp;nbsp;=&amp;gt;&amp;nbsp;( &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;key={name} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;onClick={()&amp;nbsp;=&amp;gt;&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setSelectedStrategy(name); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setCurrentView(&quot;order&quot;); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;style={{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;...cardStyle, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cursor:&amp;nbsp;&quot;pointer&quot;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;transition:&amp;nbsp;&quot;all&amp;nbsp;0.3s&quot;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;borderColor:&amp;nbsp;getStatusColor(stats.status), &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;borderWidth:&amp;nbsp;&quot;2px&quot;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;opacity:&amp;nbsp;stats.status&amp;nbsp;===&amp;nbsp;&quot;OFF&quot;&amp;nbsp;?&amp;nbsp;0.6&amp;nbsp;:&amp;nbsp;1, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;boxShadow: &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;selectedStrategy&amp;nbsp;===&amp;nbsp;name &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;?&amp;nbsp;&quot;0&amp;nbsp;0&amp;nbsp;0&amp;nbsp;4px&amp;nbsp;#a855f7&quot; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;:&amp;nbsp;&quot;none&quot;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;style={{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;display:&amp;nbsp;&quot;flex&quot;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;justifyContent:&amp;nbsp;&quot;space-between&quot;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;alignItems:&amp;nbsp;&quot;center&quot;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;marginBottom:&amp;nbsp;&quot;10px&quot;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div&amp;nbsp;style={{&amp;nbsp;fontWeight:&amp;nbsp;800,&amp;nbsp;fontSize:&amp;nbsp;&quot;22px&quot;&amp;nbsp;}}&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{name} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/div&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{getStatusIcon(stats.status)} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/div&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div&amp;nbsp;style={{&amp;nbsp;fontSize:&amp;nbsp;&quot;16px&quot;,&amp;nbsp;marginBottom:&amp;nbsp;&quot;4px&quot;&amp;nbsp;}}&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;**기대값&amp;nbsp;(EV):**{&quot;&amp;nbsp;&quot;} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;strong&amp;nbsp;style={{&amp;nbsp;color:&amp;nbsp;stats.expectedR&amp;nbsp;&amp;gt;&amp;nbsp;0&amp;nbsp;?&amp;nbsp;&quot;#4ade80&quot;&amp;nbsp;:&amp;nbsp;&quot;#f87171&quot;&amp;nbsp;}}&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{stats.expectedR.toFixed(2)}R &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/strong&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/div&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div&amp;nbsp;style={{&amp;nbsp;fontSize:&amp;nbsp;&quot;16px&quot;,&amp;nbsp;marginBottom:&amp;nbsp;&quot;4px&quot;&amp;nbsp;}}&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;**승률:**&amp;nbsp;{stats.winRate.toFixed(1)}%&amp;nbsp;({stats.totalTrades}T) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/div&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div&amp;nbsp;style={{&amp;nbsp;fontSize:&amp;nbsp;&quot;14px&quot;,&amp;nbsp;paddingTop:&amp;nbsp;&quot;8px&quot;,&amp;nbsp;borderTop:&amp;nbsp;&quot;1px&amp;nbsp;solid&amp;nbsp;#334155&quot;&amp;nbsp;}}&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;**추천&amp;nbsp;리스크&amp;nbsp;(Half&amp;nbsp;Kelly):**&amp;nbsp;&amp;lt;span&amp;nbsp;style={{&amp;nbsp;color:&amp;nbsp;&quot;#a5b4fc&quot;,&amp;nbsp;fontWeight:&amp;nbsp;700,&amp;nbsp;marginLeft:&amp;nbsp;'5px'&amp;nbsp;}}&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{(stats.kellyFraction&amp;nbsp;*&amp;nbsp;50).toFixed(2)}% &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/span&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/div&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/div&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;))} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/div&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/section&amp;gt; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{/*&amp;nbsp;차트&amp;nbsp;및&amp;nbsp;아이디어&amp;nbsp;*/} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;section &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;style={{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;display:&amp;nbsp;&quot;grid&quot;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;gridTemplateColumns:&amp;nbsp;&quot;1.4fr&amp;nbsp;1fr&quot;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;gap:&amp;nbsp;&quot;18px&quot;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{/*&amp;nbsp;누적&amp;nbsp;R-Multiple&amp;nbsp;및&amp;nbsp;EV&amp;nbsp;차트&amp;nbsp;(A,&amp;nbsp;B)&amp;nbsp;*/} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div&amp;nbsp;style={cardStyle}&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;h3&amp;nbsp;style={{&amp;nbsp;...sectionTitleStyle,&amp;nbsp;fontSize:&amp;nbsp;&quot;22px&quot;&amp;nbsp;}}&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;전략별&amp;nbsp;누적&amp;nbsp;수익&amp;nbsp;(R&amp;nbsp;단위)&amp;nbsp;및&amp;nbsp;기대값 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/h3&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div&amp;nbsp;style={{&amp;nbsp;width:&amp;nbsp;&quot;100%&quot;,&amp;nbsp;height:&amp;nbsp;350&amp;nbsp;}}&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;ResponsiveContainer&amp;nbsp;width=&quot;100%&quot;&amp;nbsp;height=&quot;100%&quot;&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;BarChart &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;data={Object.entries(strategyStats).map( &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;([name,&amp;nbsp;stats])&amp;nbsp;=&amp;gt;&amp;nbsp;({ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;name, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;totalR:&amp;nbsp;parseFloat(stats.totalR&amp;nbsp;||&amp;nbsp;0), &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;expectedR:&amp;nbsp;stats.expectedR&amp;nbsp;||&amp;nbsp;0, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;kelly:&amp;nbsp;stats.kellyFraction&amp;nbsp;*&amp;nbsp;50, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;)} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;CartesianGrid&amp;nbsp;strokeDasharray=&quot;3&amp;nbsp;3&quot;&amp;nbsp;stroke=&quot;#334155&quot;&amp;nbsp;/&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;XAxis&amp;nbsp;dataKey=&quot;name&quot;&amp;nbsp;stroke=&quot;#cbd5f5&quot;&amp;nbsp;/&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;YAxis&amp;nbsp;yAxisId=&quot;left&quot;&amp;nbsp;stroke=&quot;#cbd5f5&quot;&amp;nbsp;/&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;YAxis&amp;nbsp;yAxisId=&quot;right&quot;&amp;nbsp;orientation=&quot;right&quot;&amp;nbsp;stroke=&quot;#fde047&quot;&amp;nbsp;domain={[0,&amp;nbsp;3]}&amp;nbsp;/&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;Tooltip &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;contentStyle={{&amp;nbsp;background:&amp;nbsp;&quot;#020617&quot;,&amp;nbsp;border:&amp;nbsp;&quot;1px&amp;nbsp;solid&amp;nbsp;#334155&quot;,&amp;nbsp;fontSize:&amp;nbsp;&quot;14px&quot;&amp;nbsp;}} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;formatter={(value,&amp;nbsp;name)&amp;nbsp;=&amp;gt;&amp;nbsp;[value.toFixed(2),&amp;nbsp;name]} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;Legend&amp;nbsp;/&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;Bar&amp;nbsp;yAxisId=&quot;left&quot;&amp;nbsp;dataKey=&quot;totalR&quot;&amp;nbsp;name=&quot;누적&amp;nbsp;R&quot;&amp;nbsp;fill=&quot;#22c55e&quot;&amp;nbsp;/&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;Bar&amp;nbsp;yAxisId=&quot;right&quot;&amp;nbsp;dataKey=&quot;expectedR&quot;&amp;nbsp;name=&quot;기대값&amp;nbsp;(R)&quot;&amp;nbsp;fill=&quot;#8b5cf6&quot;&amp;nbsp;/&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/BarChart&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/ResponsiveContainer&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/div&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/div&amp;gt; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{/*&amp;nbsp;엔진&amp;nbsp;아이디어&amp;nbsp;리스트&amp;nbsp;(백엔드&amp;nbsp;신호)&amp;nbsp;*/} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div&amp;nbsp;style={cardStyle}&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;h3&amp;nbsp;style={{&amp;nbsp;...sectionTitleStyle,&amp;nbsp;fontSize:&amp;nbsp;&quot;22px&quot;&amp;nbsp;}}&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;Zap&amp;nbsp;size={20}&amp;nbsp;color=&quot;#f97316&quot;&amp;nbsp;style={{&amp;nbsp;marginRight:&amp;nbsp;'5px'&amp;nbsp;}}&amp;nbsp;/&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;엔진&amp;nbsp;트레이딩&amp;nbsp;아이디어&amp;nbsp;(FastAPI) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/h3&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{engineIdeas.length&amp;nbsp;===&amp;nbsp;0&amp;nbsp;?&amp;nbsp;( &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;p&amp;nbsp;style={{&amp;nbsp;color:&amp;nbsp;&quot;#9ca3af&quot;&amp;nbsp;}}&amp;gt;현재&amp;nbsp;유효한&amp;nbsp;엔진&amp;nbsp;신호가&amp;nbsp;없습니다.&amp;lt;/p&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;)&amp;nbsp;:&amp;nbsp;( &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;ul&amp;nbsp;style={{&amp;nbsp;listStyle:&amp;nbsp;'none',&amp;nbsp;padding:&amp;nbsp;0,&amp;nbsp;margin:&amp;nbsp;0&amp;nbsp;}}&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{engineIdeas.map(idea&amp;nbsp;=&amp;gt;&amp;nbsp;( &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;li&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;key={idea.id}&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;style={{&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;padding:&amp;nbsp;'10px&amp;nbsp;0',&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;borderBottom:&amp;nbsp;'1px&amp;nbsp;solid&amp;nbsp;#334155',&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fontSize:&amp;nbsp;'15px', &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cursor:&amp;nbsp;'pointer', &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;onClick={()&amp;nbsp;=&amp;gt;&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setSelectedStrategy(idea.style); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setSymbol(idea.symbol); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setEntryPrice(idea.price.toFixed(2)); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;setCurrentView(&quot;order&quot;); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;span&amp;nbsp;style={{&amp;nbsp;color:&amp;nbsp;idea.direction&amp;nbsp;===&amp;nbsp;&quot;LONG&quot;&amp;nbsp;?&amp;nbsp;&quot;#4ade80&quot;&amp;nbsp;:&amp;nbsp;&quot;#f97373&quot;,&amp;nbsp;fontWeight:&amp;nbsp;700&amp;nbsp;}}&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{idea.direction} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/span&amp;gt;{&quot;&amp;nbsp;&quot;} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;**{idea.symbol}**&amp;nbsp;(${idea.price.toFixed(2)})&amp;nbsp;-&amp;nbsp;{idea.detail} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/li&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;))} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/ul&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;)} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/div&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/section&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;)} &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{/*&amp;nbsp;====================&amp;nbsp;주문&amp;nbsp;/&amp;nbsp;리스크&amp;nbsp;뷰&amp;nbsp;====================&amp;nbsp;*/} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{currentView&amp;nbsp;===&amp;nbsp;&quot;order&quot;&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;( &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;section &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;style={{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;display:&amp;nbsp;&quot;grid&quot;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;gridTemplateColumns:&amp;nbsp;&quot;1.2fr&amp;nbsp;1fr&quot;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;gap:&amp;nbsp;&quot;24px&quot;, &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{/*&amp;nbsp;주문&amp;nbsp;입력&amp;nbsp;및&amp;nbsp;리스크&amp;nbsp;계산&amp;nbsp;(E,&amp;nbsp;F)&amp;nbsp;*/} &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div&amp;nbsp;style={cardStyle}&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;h2&amp;nbsp;style={sectionTitleStyle}&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;ShieldHalf&amp;nbsp;size={24}&amp;nbsp;style={{&amp;nbsp;marginRight:&amp;nbsp;'5px'&amp;nbsp;}}&amp;nbsp;/&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;리스크&amp;nbsp;기반&amp;nbsp;주문&amp;nbsp;실행 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/h2&amp;gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div style=&quot;background-color: #f0f4f9; color: #000000;&quot;&gt;
&lt;div&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; fastapi &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; FastAPI, HTTPException&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; fastapi.middleware.cors &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; CORSMiddleware&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; pydantic &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; BaseModel, Field&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;from&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; typing &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; List, Dict, Any, Optional&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; time&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; math&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #5f6368;&quot;&gt;# ==========================================================&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #5f6368;&quot;&gt;# ⚙️ 1. FastAPI 설정&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #5f6368;&quot;&gt;# ==========================================================&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;app = FastAPI(&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; title=&lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;&quot;PBY Trader Risk Engine API&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; description=&lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;&quot;수학적 기대값 및 Kelly 기준 기반의 포지션 리스크 관리 백엔드.&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; version=&lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;&quot;1.0.0&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #5f6368;&quot;&gt;# CORS 설정: 프론트엔드 (React)가 접근할 수 있도록 허용&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #5f6368;&quot;&gt;# 개발 환경에서 모든 출처 허용. 실제 배포 시에는 특정 도메인으로 제한해야 합니다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;origins = [&lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;&quot;*&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;]&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;app.add_middleware(&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; CORSMiddleware,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; allow_origins=origins,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; allow_credentials=&lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;True&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; allow_methods=[&lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;&quot;*&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;],&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; allow_headers=[&lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;&quot;*&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;],&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #5f6368;&quot;&gt;# ==========================================================&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #5f6368;&quot;&gt;#  ️ 2. Pydantic 데이터 모델&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #5f6368;&quot;&gt;# ==========================================================&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; StrategySignal(BaseModel):&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;&quot;&quot;&quot;엔진이 감지한 트레이딩 신호.&quot;&quot;&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;int&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; symbol: &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;str&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; style: &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; = Field(description=&lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;&quot;적용할 전략 이름 (예: Ross)&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; direction: &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; = Field(description=&lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;&quot;LONG 또는 SHORT&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; price: &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;float&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; = Field(description=&lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;&quot;권장 진입 가격&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; detail: &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; = Field(description=&lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;&quot;신호 발생 상세 이유&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; TradePlanRequest(BaseModel):&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;&quot;&quot;&quot;트레이딩 플랜 요청 시 프론트엔드에서 전송하는 데이터.&quot;&quot;&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; symbol: &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;str&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; style: &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;str&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; direction: &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;str&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; entry: &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;float&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; stop: &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;float&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; account_size: &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;float&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; risk_percent: &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;float&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #5f6368;&quot;&gt;# 클라이언트에서 요청한 기본 리스크 (%)&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; TradePlanResponse(BaseModel):&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;&quot;&quot;&quot;FastAPI 엔진이 리스크 계산 후 반환하는 트레이딩 플랜.&quot;&quot;&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; symbol: &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;str&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; style: &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;str&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; direction: &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;str&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; qty: &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; = Field(description=&lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;&quot;최종 추천 수량&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; target_price: &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;str&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; suggested_risk_pct: &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; = Field(description=&lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;&quot;Kelly 및 최대치 제한이 적용된 실제 리스크 %&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; detail: &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;str&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; r_per_share: &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; = Field(description=&lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;&quot;주당 리스크 (1R)&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #5f6368;&quot;&gt;# ==========================================================&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #5f6368;&quot;&gt;#   3. 핵심 수학/통계 로직 (프론트엔드와 동일하게 유지)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #5f6368;&quot;&gt;# ==========================================================&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; calculate_r(trade: Dict[&lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, Any]) -&amp;gt; Dict[&lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, Any]:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;&quot;&quot;&quot;개별 트레이드의 R-Multiple을 계산합니다.&quot;&quot;&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; direction = trade[&lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'direction'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;]&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; entry = trade[&lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'entry'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;]&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; stop = trade[&lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'stop'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;]&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; exit = trade[&lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'exit'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;]&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; r_per_share = &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;abs&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(entry - stop)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; pl_per_share = (exit - entry) &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; direction == &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;&quot;LONG&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; (entry - exit)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; r_trade = pl_per_share / r_per_share &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; r_per_share &amp;gt; &lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;0&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; {&lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'rPerShare'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: r_per_share, &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'plPerShare'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: pl_per_share, &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'rTrade'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: r_trade, &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'isWin'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: r_trade &amp;gt; &lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; calculate_strategy_stats(trades: List[Dict[&lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, Any]], strategy_name: &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;) -&amp;gt; Dict[&lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, Any]:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;&quot;&quot;&quot;전략별 통계를 계산합니다.&quot;&quot;&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; strategy_trades = [t &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; t &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; trades &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; t[&lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'strategy'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;] == strategy_name]&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;len&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(strategy_trades) &amp;lt; &lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;5&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; {&lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'status'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'UNKNOWN'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'expectedR'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;0.0&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'kellyFraction'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;0.0&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'avgWin'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;0.0&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'avgLoss'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;0.0&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; r_results = [calculate_r(t) &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; t &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; strategy_trades]&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; wins = [r &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; r &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; r_results &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; r[&lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'isWin'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;]]&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; losses = [r &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; r &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; r_results &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;not&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; r[&lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'isWin'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;]]&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; win_rate = &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;len&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(wins) / &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;len&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(r_results)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; avg_win = &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;sum&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(r[&lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'rTrade'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; r &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; wins) / &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;len&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(wins) &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; wins &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;0.0&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; avg_loss = &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;abs&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;sum&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(r[&lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'rTrade'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; r &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; losses) / &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;len&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(losses)) &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; losses &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;1.0&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; expected_r = win_rate * avg_win - (&lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; - win_rate) * avg_loss&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; win_loss_ratio = avg_win / avg_loss &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; avg_loss &amp;gt; &lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;0&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; kelly_fraction = &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;max&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, (win_rate * win_loss_ratio - (&lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; - win_rate)) / win_loss_ratio) &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; win_loss_ratio &amp;gt; &lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;0&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; ev_threshold = &lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;0.3&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; status = &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;&quot;ON&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; expected_r &amp;gt; ev_threshold &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;and&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;len&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(strategy_trades) &amp;gt;= &lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;20&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;&quot;OFF&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;len&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(strategy_trades) &amp;lt; &lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;20&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: status = &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;&quot;UNKNOWN&quot;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'status'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: status,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'expectedR'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: expected_r,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'kellyFraction'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: kelly_fraction,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'avgWin'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: avg_win,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'avgLoss'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: avg_loss&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; recommend_position_size(&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; stats: Dict[&lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, Any],&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; account_size: &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;float&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; current_price: &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;float&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; stop_price: &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;float&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;) -&amp;gt; Dict[&lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, Any]:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;&quot;&quot;&quot;통계와 계좌 크기 기반으로 포지션 수량을 계산합니다.&quot;&quot;&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; status = stats.get(&lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'status'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'OFF'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; kelly_fraction = stats.get(&lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'kellyFraction'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;0.0&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; avg_win = stats.get(&lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'avgWin'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;0.0&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; recommended_risk = &lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;0.0&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; status == &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;&quot;OFF&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; recommended_risk = &lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;0.2&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;elif&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; status == &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;&quot;UNKNOWN&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; recommended_risk = &lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;0.5&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #5f6368;&quot;&gt;# Half Kelly (f*/2)를 적용하되, 최대 2.0%로 제한&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; recommended_risk = &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;min&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(kelly_fraction * &lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;50&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;2.0&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; r_per_share = &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;abs&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(current_price - stop_price)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; r_per_share &amp;lt;= &lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; { &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'quantity'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'riskDollars'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;0.0&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'actualRisk'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;0.0&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'recommendedRisk'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: recommended_risk, &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'targetPrice'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;0.0&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'rPerShare'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;0.0&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; }&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; risk_dollars = account_size * (recommended_risk / &lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;100&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; quantity = math.floor(risk_dollars / r_per_share)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; actual_risk = ((quantity * r_per_share) / account_size) * &lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;100&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; account_size &amp;gt; &lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;0&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #5f6368;&quot;&gt;# 목표가 계산: Entry + (AvgWin * R_per_Share)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; direction_sign = &lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; current_price &amp;gt; stop_price &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;else&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;-1&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #5f6368;&quot;&gt;# LONG: 1, SHORT: -1&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; target_price = current_price + direction_sign * avg_win * r_per_share&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; {&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'quantity'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: quantity,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'riskDollars'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: risk_dollars,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'actualRisk'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: actual_risk,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'recommendedRisk'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: recommended_risk,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'targetPrice'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: target_price,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'rPerShare'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: r_per_share,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'avgWin'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: avg_win&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #5f6368;&quot;&gt;# ==========================================================&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #5f6368;&quot;&gt;#   4. 모의 데이터베이스 (실제로는 DB 연결)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #5f6368;&quot;&gt;# ==========================================================&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #5f6368;&quot;&gt;# Mock Backtest Trade Database&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;MOCK_TRADES_DB: List[Dict[&lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;str&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, Any]] = [&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #5f6368;&quot;&gt;# Ross (ON: EV 0.60)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; *[{&lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'strategy'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'Ross'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'direction'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'LONG'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'entry'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;100&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'stop'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;98&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'exit'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;105&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; + i * &lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;0.1&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'quantity'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;100&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;} &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; i &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;range&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;11&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;)], &lt;/span&gt;&lt;span style=&quot;color: #5f6368;&quot;&gt;# 11 Wins (~2.5R avg)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; *[{&lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'strategy'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'Ross'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'direction'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'LONG'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'entry'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;100&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'stop'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;98&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'exit'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;99&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; + i * &lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;0.1&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'quantity'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;100&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;} &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; i &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;range&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;13&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;)], &lt;/span&gt;&lt;span style=&quot;color: #5f6368;&quot;&gt;# 13 Losses (~0.8R avg)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #5f6368;&quot;&gt;# Buffett (ON: EV 0.81)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; *[{&lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'strategy'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'Buffett'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'direction'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'SHORT'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'entry'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;50&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'stop'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;52&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'exit'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;48&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; - i * &lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;0.1&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'quantity'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;200&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;} &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; i &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;range&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;18&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;)], &lt;/span&gt;&lt;span style=&quot;color: #5f6368;&quot;&gt;# 18 Wins (~1.0R avg)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; *[{&lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'strategy'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'Buffett'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'direction'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'SHORT'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'entry'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;50&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'stop'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;52&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'exit'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;51&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; + i * &lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;0.1&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'quantity'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;200&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;} &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; i &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;range&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;7&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;)], &lt;/span&gt;&lt;span style=&quot;color: #5f6368;&quot;&gt;# 7 Losses (~0.5R avg)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #5f6368;&quot;&gt;# Christian (UNKNOWN: 18 Trades)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; *[{&lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'strategy'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'Christian'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'direction'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'LONG'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'entry'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;20&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'stop'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;19.5&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'exit'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;20.8&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'quantity'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;50&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;} &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; i &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;range&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;10&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;)],&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; *[{&lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'strategy'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'Christian'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'direction'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'LONG'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'entry'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;20&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'stop'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;19.5&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'exit'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;19.7&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'quantity'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;50&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;} &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; i &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;in&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;range&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;8&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;)],&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;]&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #5f6368;&quot;&gt;# ==========================================================&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #5f6368;&quot;&gt;#   5. API 엔드포인트&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #5f6368;&quot;&gt;# ==========================================================&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #800000;&quot;&gt;@app&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.get(&lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;&quot;/api/status&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; get_status():&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;&quot;&quot;&quot;서버 상태 확인용 엔드포인트.&quot;&quot;&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; {&lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;&quot;status&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;&quot;OK&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;&quot;message&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;&quot;PBY Risk Engine is running.&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #800000;&quot;&gt;@app&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.get(&lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;&quot;/api/signals&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, response_model=List[StrategySignal])&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; get_signals():&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;&quot;&quot;&quot;현재 시장 상황에서 엔진이 생성한 트레이딩 아이디어 목록을 반환.&quot;&quot;&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #5f6368;&quot;&gt;# 실제로는 실시간 데이터 분석을 통해 생성됨&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; signals = [&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; StrategySignal(&lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, symbol=&lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;&quot;TSLA&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, style=&lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;&quot;Ross&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, direction=&lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;&quot;LONG&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, price=&lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;205.50&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, detail=&lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;&quot;Ross 전략: MACD 돌파, EV 1.2R&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;),&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; StrategySignal(&lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;2&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, symbol=&lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;&quot;GOOG&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, style=&lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;&quot;Buffett&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, direction=&lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;&quot;SHORT&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, price=&lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;155.00&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, detail=&lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;&quot;Buffett 전략: 과매수 권역 진입, EV 0.8R&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;),&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; StrategySignal(&lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, symbol=&lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;&quot;MSFT&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, style=&lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;&quot;Ross&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, direction=&lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;&quot;LONG&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, price=&lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;320.10&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, detail=&lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;&quot;Ross 전략: 지지선 리테스트 성공, EV 0.9R&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;),&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; StrategySignal(&lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;4&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, symbol=&lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;&quot;NFLX&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, style=&lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;&quot;Christian&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, direction=&lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;&quot;SHORT&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, price=&lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;610.00&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, detail=&lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;&quot;Christian 전략: 리스크 검증 필요 (UNKNOWN)&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;),&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; ]&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; signals&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #800000;&quot;&gt;@app&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.post(&lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;&quot;/api/plan&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, response_model=TradePlanResponse)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;def&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; generate_trade_plan(request: TradePlanRequest):&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;&quot;&quot;&quot;주문 요청을 받아 리스크 엔진을 통해 포지션 플랜을 계산하고 반환.&quot;&quot;&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;try&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #5f6368;&quot;&gt;# 1. 전략 통계 계산 (DB에서 해당 전략의 백테스트 데이터 조회)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; stats = calculate_strategy_stats(MOCK_TRADES_DB, request.style)&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #5f6368;&quot;&gt;# 2. 포지션 사이즈 추천&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; recommendation = recommend_position_size(&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; stats,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; request.account_size,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; request.entry,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; request.stop&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; )&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #5f6368;&quot;&gt;# 3. 응답 모델 생성 및 반환&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; response = TradePlanResponse(&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; symbol=request.symbol.upper(),&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; style=request.style,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; direction=request.direction,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; qty=recommendation[&lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;'quantity'&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;],&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; target_price=&lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;f&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;{recommendation['targetPrice']&lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;:.2f&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; suggested_risk_pct=&lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;f&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;{recommendation['recommendedRisk']&lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;:.2f&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; r_per_share=&lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;f&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;{recommendation['rPerShare']&lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;:.2f&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;,&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; detail=&lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;f&quot;EV &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;{stats['expectedR']&lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;:.2f&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;R 기반, Half-Kelly 리스크 &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;{recommendation['recommendedRisk']&lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;:.2f&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;% 적용. 목표 R: &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;{recommendation['avgWin']&lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;:.2f&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;R&quot;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; )&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; response&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;except&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; Exception &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; e:&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #8430ce;&quot;&gt;raise&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; HTTPException(status_code=&lt;/span&gt;&lt;span style=&quot;color: #b55908;&quot;&gt;500&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, detail=&lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;f&quot;Risk plan calculation failed: &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;{str(e)}&lt;/span&gt;&lt;span style=&quot;color: #188038;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;</description>
      <author>개미 트레이딩</author>
      <guid isPermaLink="true">https://antdsl.tistory.com/8</guid>
      <comments>https://antdsl.tistory.com/8#entry8comment</comments>
      <pubDate>Wed, 10 Dec 2025 21:20:24 +0900</pubDate>
    </item>
    <item>
      <title>볼린저 밴드(Bollinger Bands, BB)**를 활용한 두 가지 핵심 매매 전략, 즉 **반전 매매(Reversal Trading)**와 **추세 매매(Trend Following)**에 대한 상세한 설명과 실제 적용 시 발생하는 문제점</title>
      <link>https://antdsl.tistory.com/7</link>
      <description>&lt;h2 data-path-to-node=&quot;1&quot; data-ke-size=&quot;size26&quot;&gt;  볼린저 밴드의 핵심 개념&lt;/h2&gt;
&lt;p data-path-to-node=&quot;2&quot; data-ke-size=&quot;size16&quot;&gt;볼린저 밴드는 **존 볼린저(John Bollinger)**가 개발한 기술적 분석 도구입니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;3&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;중앙 밴드 (Middle Band):&lt;/b&gt; 길이가 20인 **단순 이동 평균선 (Simple Moving Average, SMA)**을 사용합니다. 이는 최근 20개 캔들의 평균 움직임을 나타냅니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;상단/하단 밴드 (Upper/Lower Band):&lt;/b&gt; 중앙 밴드에서 &lt;b&gt;표준 편차&lt;/b&gt;를 이용해 계산됩니다. 일반적으로 상단은 &lt;span data-math=&quot;+2\sigma&quot;&gt;$+2\sigma$&lt;/span&gt;, 하단은 &lt;span data-math=&quot;-2\sigma&quot;&gt;$-2\sigma$&lt;/span&gt;로 설정됩니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;핵심 원리:&lt;/b&gt; 놀랍게도 &lt;b&gt;캔들의 약 $95.45%$가 이 밴드 내에서 움직이는 것&lt;/b&gt;이 통계적 기본 원리입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-path-to-node=&quot;4&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-path-to-node=&quot;5&quot; data-ke-size=&quot;size26&quot;&gt;  주요 매매 전략과 문제점&lt;/h2&gt;
&lt;h3 data-path-to-node=&quot;6&quot; data-ke-size=&quot;size23&quot;&gt;1. 반전 매매 (Reversal Trading)&lt;/h3&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;7&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;전략&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;7,1,0,0&quot;&gt;&lt;b&gt;원칙&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;7,1,1,0&quot;&gt;캔들이 &lt;b&gt;하단 밴드&lt;/b&gt;에 도달하면 &lt;b&gt;매수(롱 포지션)&lt;/b&gt;, &lt;b&gt;상단 밴드&lt;/b&gt;에 도달하면 **매도(숏 포지션)**하여 가격이 밴드 중앙으로 회귀하는 현상을 이용합니다.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;7,2,0,0&quot;&gt;&lt;b&gt;문제점&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;7,2,1,0&quot;&gt;추세가 강하게 발생할 경우, 가격이 한쪽 밴드를 따라 계속 움직이거나 이탈할 수 있습니다. 이 경우, 반전을 예상하고 진입하면 &lt;b&gt;큰 손실&lt;/b&gt;을 볼 수 있습니다. (예: 하단에서 매수했으나 상단으로 회귀하지 않고 계속 하락하는 경우)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 data-path-to-node=&quot;8&quot; data-ke-size=&quot;size23&quot;&gt;2. 추세 매매 (Trend Following) - 밴드의 수축과 확장&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;9&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;밴드 수축 (Contraction):&lt;/b&gt; 밴드가 좁아지는 현상으로, 캔들의 움직임이 작고 **안정적(횡보)**임을 의미합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;밴드 확장 (Expansion):&lt;/b&gt; 밴드가 급격히 넓어지는 현상으로, **강한 추세(상승 또는 하락)**가 시작되거나 이어질 가능성이 높음을 의미합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;전략:&lt;/b&gt; 밴드가 수축 후 확장되기 시작하는 시점에서 추세 방향으로 진입하여 큰 수익을 노립니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;문제점:&lt;/b&gt; 밴드 확장 초기에 진입했을 때, **진짜 추세가 아닌 속임수(False Breakout)**일 수 있으며, 수축과 확장이 애매한 구간에서는 매매 판단이 어렵습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-path-to-node=&quot;10&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-path-to-node=&quot;10,0&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;⚠️ 존 볼린저의 경고:&lt;/b&gt; 밴드는 매수/매도 **시그널(타점)**을 알려주는 것이 아니라, **현재 추세와 가격의 상대적인 위치(정보)**를 알려주는 도구일 뿐입니다. 볼린저 밴드 &lt;b&gt;단독&lt;/b&gt;으로는 완벽하게 수익을 내기 어렵습니다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr data-path-to-node=&quot;11&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-path-to-node=&quot;12&quot; data-ke-size=&quot;size26&quot;&gt;  볼린저 밴드 보완을 위한 지표 결합 전략&lt;/h2&gt;
&lt;p data-path-to-node=&quot;13&quot; data-ke-size=&quot;size16&quot;&gt;볼린저 밴드의 단점을 보완하고 승률을 높이기 위해 다른 지표를 결합하여 사용합니다.&lt;/p&gt;
&lt;h3 data-path-to-node=&quot;14&quot; data-ke-size=&quot;size23&quot;&gt;1. 추세 매매 보강: EMA (지수 이동 평균선) 결합 전략&lt;/h3&gt;
&lt;p data-path-to-node=&quot;15&quot; data-ke-size=&quot;size16&quot;&gt;이 전략은 &lt;b&gt;장기 이동평균선&lt;/b&gt;을 활용하여 &lt;b&gt;전체적인 추세 방향&lt;/b&gt;을 파악하고, 그 방향으로 볼린저 밴드의 확장 신호를 필터링합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;16&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;지표 설정 (코인 차트 기준):&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;16,0,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;볼린저 밴드:&lt;/b&gt; 길이 30 (일반적인 주식 20일 대신 코인 사이클을 고려)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;장기 EMA (추세 파악):&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;16,0,1,1,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;EMA 200 (가장 장기 추세, &lt;b&gt;전체 추세 방향&lt;/b&gt; 확인)&lt;/li&gt;
&lt;li&gt;EMA 90 (중기 추세, 3개월 분기 사이클 확인)&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;ol style=&quot;list-style-type: decimal;&quot; data-path-to-node=&quot;16,1,1&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;정배열/골든 크로스:&lt;/b&gt; (EMA 30/90/200 순서) 이동 평균선이 &lt;b&gt;정배열&lt;/b&gt;되고 &lt;b&gt;골든 크로스&lt;/b&gt;가 발생하여 &lt;b&gt;상승 추세&lt;/b&gt;가 확립된 것을 확인합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;볼린저 밴드 확장:&lt;/b&gt; 밴드가 수축 후 &lt;b&gt;확장&lt;/b&gt;되기 시작하는 구간에서 &lt;b&gt;상승 방향&lt;/b&gt;으로 진입합니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;익절 시점:&lt;/b&gt; 이동 평균선의 &lt;b&gt;배열이 꺾이거나 (역배열 전환),&lt;/b&gt; 추세가 약해져 다시 밴드 중앙으로 회귀하는 시점까지 길게 포지션을 유지하여 큰 추세 수익을 극대화합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;17&quot; data-ke-size=&quot;size23&quot;&gt;2. 반전 매매 보강: RSI와 리버절 밴드 결합 전략&lt;/h3&gt;
&lt;p data-path-to-node=&quot;18&quot; data-ke-size=&quot;size16&quot;&gt;반전 매매의 실패율을 줄이기 위해 &lt;b&gt;과매수/과매도&lt;/b&gt; 상태를 확인하는 지표와 확장된 밴드를 활용합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;19&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;RSI (Relative Strength Index):&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;19,0,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;원리:&lt;/b&gt; 가격 변동의 강도를 나타내 &lt;b&gt;과매수 (상단)&lt;/b&gt; 또는 &lt;b&gt;과매도 (하단)&lt;/b&gt; 구간을 파악합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;문제점:&lt;/b&gt; RSI 단독으로는 강한 추세장에서 &lt;b&gt;오랫동안 과매수/과매도 상태를 유지&lt;/b&gt;하며 손실을 유발할 수 있습니다. (예: 상승 추세에서 계속 과매수 상태 유지)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;리버절 BB 밴드 (Reversal BB Band):&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;19,1,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;활용:&lt;/b&gt; 일반 볼린저 밴드보다 &lt;b&gt;확장된 형태의 밴드&lt;/b&gt;를 사용하여 추세의 '끝' 또는 반전이 확실한 지점을 포착합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;전략:&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;19,1,1,1,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;추세장:&lt;/b&gt; 가격이 리버절 밴드를 &lt;b&gt;이탈&lt;/b&gt;하는 구간은 &lt;b&gt;추세가 계속 이어짐&lt;/b&gt;을 의미하므로 반전 매매 진입을 피하고 추세 매매를 고려합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;반전장:&lt;/b&gt; 가격이 리버절 밴드에 도달했으나 &lt;b&gt;이탈하지 않고&lt;/b&gt; 다시 밴드 안으로 들어올 때 반전 매매 (매수/매도)를 진행합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;결론:&lt;/b&gt; 볼린저 밴드와 리버절 밴드, 그리고 RSI를 조합하여 &lt;b&gt;반전 구간과 추세 구간을 명확히 분리&lt;/b&gt;하고 복리 수익을 얻을 수 있는 &lt;b&gt;단기 매매&lt;/b&gt;를 강화합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-path-to-node=&quot;20&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-path-to-node=&quot;21&quot; data-ke-size=&quot;size26&quot;&gt;  요약 및 결론&lt;/h2&gt;
&lt;p data-path-to-node=&quot;22&quot; data-ke-size=&quot;size16&quot;&gt;제공된 자료는 &lt;b&gt;단일 지표의 한계&lt;/b&gt;를 지적하며, &lt;b&gt;상황에 맞는 지표 결합의 중요성&lt;/b&gt;을 강조합니다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;23&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;전략&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;볼린저 밴드 활용&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;결합 지표&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;매매 목적&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;23,1,0,0&quot;&gt;&lt;b&gt;추세 매매&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;23,1,1,0&quot;&gt;수축 후 확장 (추세 방향 확인)&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;23,1,2,0&quot;&gt;&lt;b&gt;EMA 90, EMA 200&lt;/b&gt; (장기 추세 필터링)&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;23,1,3,0&quot;&gt;큰 추세의 초입을 잡아 장기간 수익 극대화&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;23,2,0,0&quot;&gt;&lt;b&gt;반전 매매&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;23,2,1,0&quot;&gt;상단/하단 도달 (반전 가능성 확인)&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;23,2,2,0&quot;&gt;&lt;b&gt;RSI, 리버절 BB 밴드&lt;/b&gt; (반전의 정확한 시점과 추세와의 분리)&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;23,2,3,0&quot;&gt;짧은 반전 구간을 반복적으로 활용하여 복리 수익 창출&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-path-to-node=&quot;24&quot; data-ke-size=&quot;size16&quot;&gt;제공된 설명은 볼린저 밴드를 실제 트레이딩에 적용할 때 발생할 수 있는 오류를 줄이고, &lt;b&gt;추세와 반전을 모두 공략할 수 있는 실전적인 방법&lt;/b&gt;을 제시하고 있습니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;0&quot; data-ke-size=&quot;size16&quot;&gt;이 두 가지 핵심 &lt;b&gt;지표 결합 매매 전략&lt;/b&gt;에 대해 실전 투자에 필요한 자세한 설정과 매매 방식을 단계별로 안내해 드리겠습니다.&lt;/p&gt;
&lt;hr data-path-to-node=&quot;1&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-path-to-node=&quot;2&quot; data-ke-size=&quot;size26&quot;&gt;1.   추세 매매 전략: EMA + 볼린저 밴드&lt;/h2&gt;
&lt;p data-path-to-node=&quot;3&quot; data-ke-size=&quot;size16&quot;&gt;이 전략은 &lt;b&gt;장기적인 추세 방향&lt;/b&gt;을 먼저 파악하고, 추세의 힘이 폭발적으로 분출되는 &lt;b&gt;밴드 확장 구간&lt;/b&gt;을 공략하여 수익을 극대화하는 것이 핵심입니다.&lt;/p&gt;
&lt;h3 data-path-to-node=&quot;4&quot; data-ke-size=&quot;size23&quot;&gt;⚙️ 지표 설정 (Settings)&lt;/h3&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;5&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;지표&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;종류&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;기간 (Length)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;역할&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;5,1,0,0&quot;&gt;&lt;b&gt;중앙값&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;5,1,1,0&quot;&gt;볼린저 밴드 (BB)&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;5,1,2,0&quot;&gt;&lt;b&gt;30&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;5,1,3,0&quot;&gt;코인 차트의 한 달 사이클(30일) 기준 움직임 파악&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;5,2,0,0&quot;&gt;&lt;b&gt;중기 추세&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;5,2,1,0&quot;&gt;EMA (지수 이동 평균)&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;5,2,2,0&quot;&gt;&lt;b&gt;90&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;5,2,3,0&quot;&gt;3개월(한 분기) 사이클 기준 추세 방향 파악&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;5,3,0,0&quot;&gt;&lt;b&gt;장기 추세&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;5,3,1,0&quot;&gt;EMA (지수 이동 평균)&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;5,3,2,0&quot;&gt;&lt;b&gt;200&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;5,3,3,0&quot;&gt;전체적인 상승/하락 추세의 기준선 역할&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote data-path-to-node=&quot;6&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-path-to-node=&quot;6,0&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;  핵심:&lt;/b&gt; &lt;b&gt;EMA 200&lt;/b&gt; 위에 캔들이 위치하면 &lt;b&gt;상승 추세&lt;/b&gt;, 아래에 위치하면 &lt;b&gt;하락 추세&lt;/b&gt;로 판단합니다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 data-path-to-node=&quot;7&quot; data-ke-size=&quot;size23&quot;&gt;  실전 매매 방식 (Execution)&lt;/h3&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;8&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;구분&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;롱 포지션 (매수)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;숏 포지션 (매도)&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,1,0,0&quot;&gt;&lt;b&gt;진입 신호&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;1. &lt;b&gt;골든 크로스&lt;/b&gt; 확인: EMA 30, 90, 200이 &lt;b&gt;정배열&lt;/b&gt; (아래에서 위로) 상태에 진입.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;2. &lt;b&gt;BB 확장&lt;/b&gt; 확인: 밴드가 수축 후 위로 크게 벌어지며 캔들이 상단 밴드 위로 돌파 시작.&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;1. &lt;b&gt;데드 크로스&lt;/b&gt; 확인: EMA 30, 90, 200이 &lt;b&gt;역배열&lt;/b&gt; (위에서 아래로) 상태에 진입.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;2. &lt;b&gt;BB 확장&lt;/b&gt; 확인: 밴드가 수축 후 아래로 크게 벌어지며 캔들이 하단 밴드 아래로 돌파 시작.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,2,0,0&quot;&gt;&lt;b&gt;손절 (Stop-Loss)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,2,1,0&quot;&gt;&lt;b&gt;BB 중앙 라인 (EMA 30)&lt;/b&gt; 또는 &lt;b&gt;EMA 90&lt;/b&gt; 라인 아래에 설정. (추세가 깨지면 빠르게 이탈)&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,2,2,0&quot;&gt;&lt;b&gt;BB 중앙 라인 (EMA 30)&lt;/b&gt; 또는 &lt;b&gt;EMA 90&lt;/b&gt; 라인 위에 설정. (추세가 깨지면 빠르게 이탈)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,3,0,0&quot;&gt;&lt;b&gt;익절 (Take-Profit)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,3,1,0&quot;&gt;추세가 완전히 힘을 잃고 &lt;b&gt;이동 평균선 배열이 꺾이는 시점&lt;/b&gt; (골든 크로스 해제), 혹은 가격이 장기간 상단 밴드를 타고 가다 &lt;b&gt;BB 중앙 라인으로 복귀&lt;/b&gt;하는 시점까지 홀딩.&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;8,3,2,0&quot;&gt;추세가 완전히 힘을 잃고 &lt;b&gt;이동 평균선 배열이 꺾이는 시점&lt;/b&gt; (데드 크로스 해제), 혹은 가격이 장기간 하단 밴드를 타고 가다 &lt;b&gt;BB 중앙 라인으로 복귀&lt;/b&gt;하는 시점까지 홀딩.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr data-path-to-node=&quot;9&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-path-to-node=&quot;10&quot; data-ke-size=&quot;size26&quot;&gt;2.   반전 매매 전략: RSI + 리버절 BB 밴드&lt;/h2&gt;
&lt;p data-path-to-node=&quot;11&quot; data-ke-size=&quot;size16&quot;&gt;이 전략은 가격이 과도하게 움직여 &lt;b&gt;반전할 가능성&lt;/b&gt;이 높을 때, 일반 볼린저 밴드보다 더 넓은 **'리버절 밴드'**를 사용하여 속임수 반전이 아닌 &lt;b&gt;확실한 반전 타점&lt;/b&gt;을 잡아 복리 수익을 목표로 합니다.&lt;/p&gt;
&lt;h3 data-path-to-node=&quot;12&quot; data-ke-size=&quot;size23&quot;&gt;⚙️ 지표 역할 (Indicator Roles)&lt;/h3&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;13&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;지표&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;역할&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;매매 활용&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;13,1,0,0&quot;&gt;&lt;b&gt;RSI&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;13,1,1,0&quot;&gt;&lt;b&gt;과매수/과매도&lt;/b&gt; 상태 확인 (가격의 강도)&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;13,1,2,0&quot;&gt;반전 가능성 필터링 및 익절 구간 설정&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;13,2,0,0&quot;&gt;&lt;b&gt;볼린저 밴드&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;13,2,1,0&quot;&gt;현재 시장이 &lt;b&gt;횡보&lt;/b&gt;인지 &lt;b&gt;추세&lt;/b&gt;인지 구분&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;13,2,2,0&quot;&gt;추세가 끝나는 구간 (이탈) 체크&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;13,3,0,0&quot;&gt;&lt;b&gt;리버절 BB 밴드&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;13,3,1,0&quot;&gt;반전 매매의 &lt;b&gt;기준 경계선&lt;/b&gt; 역할&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;13,3,2,0&quot;&gt;밴드 이탈 여부를 통해 추세 지속/반전 확인&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 data-path-to-node=&quot;14&quot; data-ke-size=&quot;size23&quot;&gt;  실전 매매 방식 (Execution)&lt;/h3&gt;
&lt;p data-path-to-node=&quot;15&quot; data-ke-size=&quot;size16&quot;&gt;이 전략의 핵심은 &lt;b&gt;가격이 리버절 밴드에 도달했으나 밴드 밖으로 이탈하지 않고 안으로 회귀&lt;/b&gt;할 때 진입하는 것입니다. 밴드를 강하게 뚫고 나가면 추세가 이어지는 것으로 판단하고 진입하지 않습니다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;16&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;구분&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;롱 포지션 (매수)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;숏 포지션 (매도)&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;16,1,0,0&quot;&gt;&lt;b&gt;진입 신호&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;1. 가격이 &lt;b&gt;리버절 밴드 하단&lt;/b&gt;에 도달.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;2. 밴드를 &lt;b&gt;이탈하지 않고&lt;/b&gt; 다시 안으로 진입하는 캔들 발생.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;3. &lt;b&gt;RSI&lt;/b&gt;가 &lt;b&gt;과매도 구간&lt;/b&gt;에서 벗어나는 (상승하는) 신호 포착.&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;1. 가격이 &lt;b&gt;리버절 밴드 상단&lt;/b&gt;에 도달.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;2. 밴드를 &lt;b&gt;이탈하지 않고&lt;/b&gt; 다시 안으로 진입하는 캔들 발생.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;3. &lt;b&gt;RSI&lt;/b&gt;가 &lt;b&gt;과매수 구간&lt;/b&gt;에서 벗어나는 (하락하는) 신호 포착.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;16,2,0,0&quot;&gt;&lt;b&gt;손절 (Stop-Loss)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;16,2,1,0&quot;&gt;진입 캔들의 &lt;b&gt;최저점&lt;/b&gt; 아래, 혹은 리버절 밴드 &lt;b&gt;하단 라인 바깥쪽&lt;/b&gt;에 설정.&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;16,2,2,0&quot;&gt;진입 캔들의 &lt;b&gt;최고점&lt;/b&gt; 위, 혹은 리버절 밴드 &lt;b&gt;상단 라인 바깥쪽&lt;/b&gt;에 설정.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;16,3,0,0&quot;&gt;&lt;b&gt;익절 (Take-Profit)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;반대편 **리버절 밴드 (상단)**에 도달했을 때 1차 익절.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;RSI가 **반대 극단 (과매수/과매도)**에 도달했을 때 최종 익절.&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span&gt;반대편 **리버절 밴드 (하단)**에 도달했을 때 1차 익절.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;RSI가 **반대 극단 (과매수/과매도)**에 도달했을 때 최종 익절.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 data-path-to-node=&quot;17&quot; data-ke-size=&quot;size23&quot;&gt;  '리버절 BB 밴드' 관련 유의사항&lt;/h3&gt;
&lt;p data-path-to-node=&quot;18&quot; data-ke-size=&quot;size16&quot;&gt;제공된 텍스트에 따르면 '리버절 BB 밴드'는 일반적인 지표 검색으로는 나오지 않는 &lt;b&gt;프라이빗 코드&lt;/b&gt;로 언급되어 있습니다. 따라서 이 지표를 사용하기 위해서는 텍스트에 안내된 대로 &lt;b&gt;해당 채널의 공유 방식&lt;/b&gt;을 통해 접근해야 할 수 있습니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;19&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;지표 결합 전략&lt;/b&gt;은 통계적 확률을 높이는 것이지만, &lt;b&gt;백테스팅&lt;/b&gt;과 &lt;b&gt;실전 연습&lt;/b&gt;이 반드시 선행되어야 합니다. 제시된 설정을 참고하여 다양한 차트와 시간대에서 적용해보시는 것을 권장드립니다.&lt;/p&gt;</description>
      <author>개미 트레이딩</author>
      <guid isPermaLink="true">https://antdsl.tistory.com/7</guid>
      <comments>https://antdsl.tistory.com/7#entry7comment</comments>
      <pubDate>Wed, 10 Dec 2025 21:17:20 +0900</pubDate>
    </item>
    <item>
      <title>켈트너 채널과 볼린저 밴드의 수학적 비교</title>
      <link>https://antdsl.tistory.com/6</link>
      <description>&lt;div id=&quot;model-response-message-contentr_2eada4c7e6d2f470&quot;&gt;
&lt;p data-path-to-node=&quot;1&quot; data-ke-size=&quot;size16&quot;&gt;켈트너 채널(Keltner Channel)과 볼린저 밴드(Bollinger Bands)는 겉모습은 비슷하지만, 가격 평균과 변동폭을 계산하는 방식에서 큰 차이를 보입니다. 핵심은 &lt;b&gt;중심선&lt;/b&gt;에 사용되는 평균 유형과 &lt;b&gt;밴드 폭&lt;/b&gt;을 계산하는 지표입니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;2&quot; data-ke-size=&quot;size16&quot;&gt;아래 표는 두 지표의 계산식을 수학적으로 비교 정리한 것입니다.&lt;/p&gt;
&lt;h3 data-path-to-node=&quot;3&quot; data-ke-size=&quot;size23&quot;&gt;  계산식 비교표&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div data-hveid=&quot;4&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;4&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;4,0,0,0&quot;&gt;구성 요소&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;4,0,1,0&quot;&gt;켈트너 채널 (Keltner Channel)&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;4,0,2,0&quot;&gt;볼린저 밴드 (Bollinger Bands)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;4,1,0,0&quot;&gt;&lt;b&gt;중심선 (Middle Band)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;4,1,1,0&quot;&gt;&lt;span data-math=&quot;MC = \text{EMA}(P, N)&quot;&gt;&lt;span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;MC&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;EMA&lt;/span&gt;&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;P&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;N&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;4,1,2,0&quot;&gt;&lt;span data-math=&quot;MB = \text{SMA}(P, N)&quot;&gt;&lt;span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;MB&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;SMA&lt;/span&gt;&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;P&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;N&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;4,2,0,0&quot;&gt;&lt;b&gt;변동성 측정 지표&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;4,2,1,0&quot;&gt;&lt;span data-math=&quot;\text{ATR}&quot;&gt;&lt;span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;ATR&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; (Average True Range)&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;4,2,2,0&quot;&gt;&lt;span data-math=&quot;\sigma&quot;&gt;&lt;span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&amp;sigma;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; (표준편차, Standard Deviation)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;4,3,0,0&quot;&gt;&lt;b&gt;상단 밴드 (Upper Band)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;4,3,1,0&quot;&gt;&lt;span data-math=&quot;UC = MC + (\text{Multiplier} \times \text{ATR})&quot;&gt;&lt;span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;U&lt;/span&gt;&lt;span&gt;C&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;MC&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&lt;span&gt;Multiplier&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&amp;times;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;ATR&lt;/span&gt;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;4,3,2,0&quot;&gt;&lt;span data-math=&quot;UB = MB + (\text{Multiplier} \times \sigma)&quot;&gt;&lt;span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;U&lt;/span&gt;&lt;span&gt;B&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;MB&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;+&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&lt;span&gt;Multiplier&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&amp;times;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&amp;sigma;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;4,4,0,0&quot;&gt;&lt;b&gt;하단 밴드 (Lower Band)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;4,4,1,0&quot;&gt;&lt;span data-math=&quot;LC = MC - (\text{Multiplier} \times \text{ATR})&quot;&gt;&lt;span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;L&lt;/span&gt;&lt;span&gt;C&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;MC&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&amp;minus;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&lt;span&gt;Multiplier&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&amp;times;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;ATR&lt;/span&gt;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;4,4,2,0&quot;&gt;&lt;span data-math=&quot;LB = MB - (\text{Multiplier} \times \sigma)&quot;&gt;&lt;span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;L&lt;/span&gt;&lt;span&gt;B&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;MB&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&amp;minus;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&lt;span&gt;Multiplier&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&amp;times;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&amp;sigma;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;Exporter vers Sheets&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-path-to-node=&quot;5&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-path-to-node=&quot;6&quot; data-ke-size=&quot;size23&quot;&gt;  지표 및 계산 상세 설명&lt;/h3&gt;
&lt;h4 data-path-to-node=&quot;7&quot; data-ke-size=&quot;size20&quot;&gt;1. 켈트너 채널 (Keltner Channel)&lt;/h4&gt;
&lt;p data-path-to-node=&quot;8&quot; data-ke-size=&quot;size16&quot;&gt;켈트너 채널은 &lt;b&gt;EMA&lt;/b&gt;와 &lt;b&gt;ATR&lt;/b&gt;을 사용하기 때문에 추세 변화에 빠르게 반응하며, 변동성이 커져도 밴드 폭이 급격히 넓어지지 않아 상대적으로 &lt;b&gt;안정적인 추세 기반&lt;/b&gt; 지표입니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;9&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;변수 정의:&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;9,0,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-math=&quot;P&quot;&gt;&lt;span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;P&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;: 해당 기간의 가격 (일반적으로 종가, 혹은 (고가+저가+종가)/3)&lt;/li&gt;
&lt;li&gt;&lt;span data-math=&quot;N&quot;&gt;&lt;span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;N&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;: 기간 (일반적으로 20)&lt;/li&gt;
&lt;li&gt;&lt;span data-math=&quot;\text{Multiplier}&quot;&gt;&lt;span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;Multiplier&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;: 승수 (일반적으로 2)&lt;/li&gt;
&lt;li&gt;&lt;span data-math=&quot;\text{ATR}&quot;&gt;&lt;span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;ATR&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;: Average True Range (평균 참 범위)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;중심선 (Middle Channel, &lt;span data-math=&quot;MC&quot;&gt;&lt;span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;MC&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;)&lt;/b&gt;:
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;9,1,2&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;EMA (Exponential Moving Average, 지수 이동 평균):&lt;/b&gt; 최근 가격에 더 높은 가중치를 부여하여 가격 변화에 더 &lt;b&gt;민감하게&lt;/b&gt; 반응합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-path-to-node=&quot;9,1,1&quot;&gt;
&lt;div data-math=&quot;MC = \text{EMA}(P, N)&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;MC&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;EMA&lt;/span&gt;&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;P&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;N&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;ATR (Average True Range) 계산&lt;/b&gt;:
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;9,2,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-math=&quot;TR_t = \max[(H_t - L_t), |\ H_t - C_{t-1}\ |,\ |\ L_t - C_{t-1}\ |]&quot;&gt;&lt;span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;T&lt;/span&gt;&lt;span&gt;&lt;span&gt;R&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;t&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;max&lt;/span&gt;&lt;span&gt;[(&lt;/span&gt;&lt;span&gt;&lt;span&gt;H&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;t&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;minus;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;L&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;t&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;∣&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&lt;span&gt;H&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;t&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;minus;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;C&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;t&lt;/span&gt;&lt;span&gt;&amp;minus;&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;∣&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;∣&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;&lt;span&gt;L&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;t&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;minus;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;C&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;t&lt;/span&gt;&lt;span&gt;&amp;minus;&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span&gt;∣&lt;/span&gt;&lt;span&gt;]&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;$\text{ATR}$은 &lt;span data-math=&quot;TR&quot;&gt;&lt;span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;TR&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;의 평균입니다. 가격의 움직임 폭을 측정하며, 밴드 폭을 &lt;b&gt;일정하게&lt;/b&gt; 유지하는 핵심 요소입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-path-to-node=&quot;10&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 data-path-to-node=&quot;11&quot; data-ke-size=&quot;size20&quot;&gt;2. 볼린저 밴드 (Bollinger Bands)&lt;/h4&gt;
&lt;p data-path-to-node=&quot;12&quot; data-ke-size=&quot;size16&quot;&gt;볼린저 밴드는 &lt;b&gt;SMA&lt;/b&gt;와 &lt;b&gt;표준편차&lt;/b&gt;를 사용하며, 가격이 통계적으로 일정 범위 내에 머무르는 경향을 보여주는 &lt;b&gt;통계 기반&lt;/b&gt; 지표입니다. 변동성이 클수록 밴드 폭이 크게 넓어집니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;13&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;변수 정의:&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;13,0,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span data-math=&quot;P&quot;&gt;&lt;span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;P&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;: 해당 기간의 가격 (일반적으로 종가)&lt;/li&gt;
&lt;li&gt;&lt;span data-math=&quot;N&quot;&gt;&lt;span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;N&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;: 기간 (일반적으로 20)&lt;/li&gt;
&lt;li&gt;&lt;span data-math=&quot;\text{Multiplier}&quot;&gt;&lt;span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;Multiplier&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;: 승수 (일반적으로 2)&lt;/li&gt;
&lt;li&gt;&lt;span data-math=&quot;\sigma&quot;&gt;&lt;span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&amp;sigma;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;: Standard Deviation (표준편차)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;중심선 (Middle Band, &lt;span data-math=&quot;MB&quot;&gt;&lt;span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;MB&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;)&lt;/b&gt;:
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;13,1,2&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;SMA (Simple Moving Average, 단순 이동 평균):&lt;/b&gt; &lt;span data-math=&quot;N&quot;&gt;&lt;span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;N&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; 기간 동안의 가격을 단순 평균하여 계산합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-path-to-node=&quot;13,1,1&quot;&gt;
&lt;div data-math=&quot;MB = \text{SMA}(P, N)&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;MB&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;SMA&lt;/span&gt;&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;P&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span&gt;N&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;표준편차 (&lt;span data-math=&quot;\sigma&quot;&gt;&lt;span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&amp;sigma;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;) 계산&lt;/b&gt;:
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;13,2,2&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;표준편차:&lt;/b&gt; 가격이 평균(&lt;span data-math=&quot;MB&quot;&gt;&lt;span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;MB&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;)으로부터 얼마나 멀리 떨어져 있는지를 측정하는 &lt;b&gt;변동성&lt;/b&gt; 지표입니다. &lt;span data-math=&quot;\sigma&quot;&gt;&lt;span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&amp;sigma;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; 값이 커지면 밴드 폭이 넓어집니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-path-to-node=&quot;13,2,1&quot;&gt;
&lt;div data-math=&quot;\sigma = \sqrt{\frac{1}{N} \sum_{i=1}^{N} (P_i - MB)^2}&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&amp;sigma;&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;N&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;i&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&amp;sum;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;N&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;&lt;span&gt;P&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;i&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;minus;&lt;/span&gt;&lt;span&gt;MB&lt;/span&gt;&lt;span&gt;&lt;span&gt;)&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;2&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span aria-hidden=&quot;true&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;​&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-path-to-node=&quot;14&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-path-to-node=&quot;15&quot; data-ke-size=&quot;size23&quot;&gt;  핵심 차이 요약&lt;/h3&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div data-hveid=&quot;7&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;16&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;16,0,0,0&quot;&gt;구분&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;16,0,1,0&quot;&gt;켈트너 채널&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;16,0,2,0&quot;&gt;볼린저 밴드&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;16,1,0,0&quot;&gt;&lt;b&gt;평균 (중심선)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;16,1,1,0&quot;&gt;&lt;b&gt;EMA&lt;/b&gt; (가중 평균, 빠른 반응)&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;16,1,2,0&quot;&gt;&lt;b&gt;SMA&lt;/b&gt; (단순 평균)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;16,2,0,0&quot;&gt;&lt;b&gt;변동성 측정&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;16,2,1,0&quot;&gt;&lt;b&gt;ATR&lt;/b&gt; (실제 가격 움직임 평균, 안정적 밴드)&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;16,2,2,0&quot;&gt;&lt;b&gt;표준편차&lt;/b&gt; (통계적 분산, 변동성에 따라 밴드 폭 변화)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;div&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;Exporter vers Sheets&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-path-to-node=&quot;17&quot; data-ke-size=&quot;size16&quot;&gt;이러한 수학적 차이로 인해 켈트너 채널은 주로 &lt;b&gt;추세의 강도 및 채널링&lt;/b&gt;을 확인하는 데 유리하며, 볼린저 밴드는 주로 &lt;b&gt;가격의 변동성 및 과매수/과매도 여부&lt;/b&gt;를 확인하는 데 사용됩니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;18&quot; data-ke-size=&quot;size16&quot;&gt;켈트너 채널과 볼린저 밴드의 차이를 보여주는 차트의 시각적 예시를 참고하면 이해가 더욱 쉬울 수 있습니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;19&quot; data-ke-size=&quot;size16&quot;&gt;혹시 MACD나 슈퍼트렌드 지표의 계산식도 수학적으로 정리해 드릴까요?&lt;/p&gt;
&lt;/div&gt;</description>
      <author>개미 트레이딩</author>
      <guid isPermaLink="true">https://antdsl.tistory.com/6</guid>
      <comments>https://antdsl.tistory.com/6#entry6comment</comments>
      <pubDate>Wed, 10 Dec 2025 21:15:37 +0900</pubDate>
    </item>
    <item>
      <title>켈트너 채널(Keltner Channel), MACD, 슈퍼트렌드(SuperTrend) 세 가지 지표를 조합하여 가장 확률 높은 진입 타점을 찾는 데 중점</title>
      <link>https://antdsl.tistory.com/5</link>
      <description>&lt;h2 data-path-to-node=&quot;0&quot; data-ke-size=&quot;size26&quot;&gt;  엠마의 1분봉 초단타 전략 핵심 지표 분석&lt;/h2&gt;
&lt;p data-path-to-node=&quot;1&quot; data-ke-size=&quot;size16&quot;&gt;제공해 주신 텍스트는 트레이더 '엠마'가 사용하는 1분봉 초단타 전략에 대한 자세한 설명입니다. 이 전략은 &lt;b&gt;켈트너 채널(Keltner Channel)&lt;/b&gt;, &lt;b&gt;MACD&lt;/b&gt;, &lt;b&gt;슈퍼트렌드(SuperTrend)&lt;/b&gt; 세 가지 지표를 조합하여 가장 확률 높은 진입 타점을 찾는 데 중점을 둡니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;2&quot; data-ke-size=&quot;size16&quot;&gt;핵심 내용을 지표별로 분석하여 정리해 드리겠습니다.&lt;/p&gt;
&lt;hr data-path-to-node=&quot;3&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-path-to-node=&quot;4&quot; data-ke-size=&quot;size23&quot;&gt;1. 켈트너 채널 (Keltner Channel)&lt;/h3&gt;
&lt;p data-path-to-node=&quot;5&quot; data-ke-size=&quot;size16&quot;&gt;켈트너 채널은 볼린저 밴드와 비슷해 보이지만, 변동성이 커질 때 밴드 폭이 일정하게 유지되는 것이 특징인 &lt;b&gt;추세 기반 지표&lt;/b&gt;입니다.&lt;/p&gt;
&lt;h4 data-path-to-node=&quot;6&quot; data-ke-size=&quot;size20&quot;&gt;  &lt;b&gt;작동 원리&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;7&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;중심선:&lt;/b&gt; EMA (지수 이동 평균)를 사용하여 최근 가격에 더 큰 가중치를 둠으로써 가격 변화에 빠르게 반응합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;밴드 폭:&lt;/b&gt; **ATR (Average True Range)**을 사용해 일정 기간 동안 가격이 얼마나 크게 움직였는지를 측정하여 위아래 밴드를 만듭니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;7,1,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;i&gt;계산:&lt;/i&gt; 중심선 &lt;span data-math=&quot;\pm&quot;&gt;$\pm$&lt;/span&gt; (ATR &lt;span data-math=&quot;\times&quot;&gt;$\times$&lt;/span&gt; 계수). (기본 계수: 2, 조정 가능: 1.5 또는 2.5)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-path-to-node=&quot;8&quot; data-ke-size=&quot;size20&quot;&gt;  &lt;b&gt;볼린저 밴드와의 차이점&lt;/b&gt;&lt;/h4&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;9&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;구분&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;켈트너 채널&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;볼린저 밴드&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;9,1,0,0&quot;&gt;&lt;b&gt;기반&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;9,1,1,0&quot;&gt;EMA &amp;amp; ATR &lt;b&gt;(추세 기반)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;9,1,2,0&quot;&gt;단순 이동 평균 &amp;amp; 표준 편차 &lt;b&gt;(통계 기반)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;9,2,0,0&quot;&gt;&lt;b&gt;역할&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;9,2,1,0&quot;&gt;추세의 &lt;b&gt;강도와 방향&lt;/b&gt; 시각화&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;9,2,2,0&quot;&gt;가격의 &lt;b&gt;변동폭&lt;/b&gt; 시각화&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;9,3,0,0&quot;&gt;&lt;b&gt;특징&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;9,3,1,0&quot;&gt;시세 급변 시에도 중심선을 따라 &lt;b&gt;일정하게&lt;/b&gt; 움직임&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;9,3,2,0&quot;&gt;시세 급변 시 밴드 폭이 &lt;b&gt;확 넓어짐&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h4 data-path-to-node=&quot;10&quot; data-ke-size=&quot;size20&quot;&gt;  &lt;b&gt;매매법&lt;/b&gt;&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-path-to-node=&quot;11&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;추세 매매:&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;11,0,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;상승 추세:&lt;/b&gt; 캔들이 상단 채널 위에서 종가 마감되고 상단 채널을 따라 계속 이동.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;하락 추세:&lt;/b&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-path-to-node=&quot;11,1,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;중심선에서 멀어진 &lt;b&gt;상단선(과매수)&lt;/b&gt; 또는 &lt;b&gt;하단선(과매도)&lt;/b&gt; 근처에서 진입.&lt;/li&gt;
&lt;li&gt;채널 종가 이탈을 손절로 설정하고, 상단에서는 저항 받고 하락, 하단에서는 지지 받고 상승하는 흐름을 노림.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr data-path-to-node=&quot;12&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-path-to-node=&quot;13&quot; data-ke-size=&quot;size23&quot;&gt;2. MACD (Moving Average Convergence Divergence)&lt;/h3&gt;
&lt;p data-path-to-node=&quot;14&quot; data-ke-size=&quot;size16&quot;&gt;MACD는 추세의 &lt;b&gt;방향&lt;/b&gt;과 &lt;b&gt;전환 시점&lt;/b&gt;을 보여주는 대표적인 &lt;b&gt;모멘텀 지표&lt;/b&gt;입니다. 추세가 강해지고 있는지 약해지고 있는지를 파악하는 데 사용됩니다.&lt;/p&gt;
&lt;h4 data-path-to-node=&quot;15&quot; data-ke-size=&quot;size20&quot;&gt;  &lt;b&gt;구성 요소&lt;/b&gt;&lt;/h4&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-path-to-node=&quot;16&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;MACD선 (파란색):&lt;/b&gt; 단기 (12일) EMA와 장기 (26일) EMA의 차이.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;시그널 선 (주황색):&lt;/b&gt; MACD 선의 9일 EMA.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;히스토그램 (막대):&lt;/b&gt; MACD선 - 시그널 선 (두 선의 간격을 시각화).&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 data-path-to-node=&quot;17&quot; data-ke-size=&quot;size20&quot;&gt;  &lt;b&gt;활용&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;18&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;골든 크로스:&lt;/b&gt; MACD선이 시그널 선을 상향 돌파 (&lt;b&gt;상승 모멘텀 강화&lt;/b&gt; 신호).&lt;/li&gt;
&lt;li&gt;&lt;b&gt;데드 크로스:&lt;/b&gt; MACD선이 시그널 선을 하향 돌파 (&lt;b&gt;하락 모멘텀 강화&lt;/b&gt; 신호).&lt;/li&gt;
&lt;li&gt;히스토그램의 크기는 모멘텀의 강도를 나타냅니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-path-to-node=&quot;19&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-path-to-node=&quot;20&quot; data-ke-size=&quot;size23&quot;&gt;3. 슈퍼트렌드 (SuperTrend)&lt;/h3&gt;
&lt;p data-path-to-node=&quot;21&quot; data-ke-size=&quot;size16&quot;&gt;슈퍼트렌드는 현재 시장이 &lt;b&gt;상승 추세인지 하락 추세인지&lt;/b&gt;를 색상 하나로 직관적으로 보여주는 지표입니다.&lt;/p&gt;
&lt;h4 data-path-to-node=&quot;22&quot; data-ke-size=&quot;size20&quot;&gt;  &lt;b&gt;작동 원리&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;23&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ATR과 가격의 중간값을 이용해 계산. (ATR 계수 기본값: 3)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;상승 추세:&lt;/b&gt; 캔들이 슈퍼트렌드 선을 위로 돌파하고 선 위에 위치 (보통 &lt;b&gt;초록색&lt;/b&gt;).&lt;/li&gt;
&lt;li&gt;&lt;b&gt;하락 추세:&lt;/b&gt; 캔들이 슈퍼트렌드 선을 아래로 돌파하고 선 아래에 위치 (보통 &lt;b&gt;빨간색&lt;/b&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-path-to-node=&quot;24&quot; data-ke-size=&quot;size20&quot;&gt;  &lt;b&gt;활용&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;25&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;초록색&lt;/b&gt; 선 위에 캔들: &lt;b&gt;매수 관점&lt;/b&gt; (상승 추세 확인).&lt;/li&gt;
&lt;li&gt;&lt;b&gt;빨간색&lt;/b&gt; 선 아래에 캔들: &lt;b&gt;매도 관점&lt;/b&gt; (하락 추세 확인).&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-path-to-node=&quot;26&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-path-to-node=&quot;27&quot; data-ke-size=&quot;size23&quot;&gt;4. 단기 추세 변곡 캔들 패턴 (추가 참고 지표)&lt;/h3&gt;
&lt;p data-path-to-node=&quot;28&quot; data-ke-size=&quot;size16&quot;&gt;엠마는 위 세 가지 지표와 함께 총 여섯 가지 주요 &lt;b&gt;단기 추세 변곡 캔들&lt;/b&gt;을 참고하여 최종 진입 타점을 잡습니다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;29&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;캔들 패턴&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;형태 및 특징&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;시그널&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;29,1,0,0&quot;&gt;&lt;b&gt;핀바 (Pinbar)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;29,1,1,0&quot;&gt;긴 꼬리(위/아래)를 가짐&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;29,1,2,0&quot;&gt;&lt;b&gt;강력한 반전 신호&lt;/b&gt; (긴 위꼬리: 매도 압력, 긴 아래꼬리: 매수 압력)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;29,2,0,0&quot;&gt;&lt;b&gt;인걸핑 (Engulfing)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;29,2,1,0&quot;&gt;이전 캔들을 완전히 덮는 큰 몸통&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;29,2,2,0&quot;&gt;이전 추세의 힘이 완전히 뒤집혔음을 의미. (&lt;b&gt;강한 추세 전환&lt;/b&gt;)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;29,3,0,0&quot;&gt;&lt;b&gt;해머/행잉맨&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;29,3,1,0&quot;&gt;몸통이 위쪽/아래쪽에 있고 긴 꼬리가 반대 방향에 위치&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;29,3,2,0&quot;&gt;하락 중 &lt;b&gt;해머&lt;/b&gt;는 매수 반전, 상승 중 &lt;b&gt;행잉맨&lt;/b&gt;은 매도 반전 신호&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;29,4,0,0&quot;&gt;&lt;b&gt;도지 (Doji)&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;29,4,1,0&quot;&gt;시가와 종가가 거의 같음 (몸통이 작음)&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;29,4,2,0&quot;&gt;매수/매도 세력 팽팽, &lt;b&gt;추세 전환 직전&lt;/b&gt; 또는 변곡 구간&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;29,5,0,0&quot;&gt;&lt;b&gt;모닝/이브닝 스타&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;29,5,1,0&quot;&gt;3개의 캔들로 구성된 반전 패턴&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;29,5,2,0&quot;&gt;&lt;b&gt;모닝 스타:&lt;/b&gt; 하락 &lt;span data-math=&quot;\to&quot;&gt;$\to$&lt;/span&gt; 상승 반전. &lt;b&gt;이브닝 스타:&lt;/b&gt; 상승 &lt;span data-math=&quot;\to&quot;&gt;$\to$&lt;/span&gt; 하락 반전.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;29,6,0,0&quot;&gt;&lt;b&gt;슈팅 스타&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;29,6,1,0&quot;&gt;몸통이 아래에 있고 긴 윗꼬리&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;29,6,2,0&quot;&gt;위쪽 돌파 실패 및 매도 압력 강화. (&lt;b&gt;하락 반전 시그널&lt;/b&gt;)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr data-path-to-node=&quot;30&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-path-to-node=&quot;31&quot; data-ke-size=&quot;size23&quot;&gt;  엠마 전략의 최종 조합 및 진입/청산&lt;/h3&gt;
&lt;p data-path-to-node=&quot;32&quot; data-ke-size=&quot;size16&quot;&gt;엠마의 전략은 다음과 같이 세 가지 지표로 시장 상황을 분석하고 캔들로 최종 타점을 확정합니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-path-to-node=&quot;33&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;켈트너 채널:&lt;/b&gt; 가격의 &lt;b&gt;위치&lt;/b&gt;와 &lt;b&gt;변동성&lt;/b&gt; 확인.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;MACD:&lt;/b&gt; 추세의 &lt;b&gt;에너지/모멘텀&lt;/b&gt; 확인 (골든/데드 크로스).&lt;/li&gt;
&lt;li&gt;&lt;b&gt;슈퍼트렌드:&lt;/b&gt; 실제 &lt;b&gt;추세 방향성&lt;/b&gt; 확정 (색상 확인).&lt;/li&gt;
&lt;li&gt;&lt;b&gt;캔들 패턴:&lt;/b&gt; &lt;b&gt;최종 진입 타점&lt;/b&gt; 확정.&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 data-path-to-node=&quot;34&quot; data-ke-size=&quot;size20&quot;&gt;  &lt;b&gt;커스텀 조합 지표의 예시 (롱 포지션)&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;35&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;캔들이 &lt;b&gt;하단 채널&lt;/b&gt;에서 이동 (하락 추세).&lt;/li&gt;
&lt;li&gt;&lt;b&gt;도지 캔들&lt;/b&gt; 출연.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;상승 다이버전스&lt;/b&gt; 시그널.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;MACD 골든 크로스&lt;/b&gt; 출연.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;진입:&lt;/b&gt; 위 조건 동시 충족 시 롱 포지션 진입.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;손절:&lt;/b&gt; 도지 캔들 하단 등 명확한 지지선.&lt;/li&gt;
&lt;/ul&gt;</description>
      <author>개미 트레이딩</author>
      <guid isPermaLink="true">https://antdsl.tistory.com/5</guid>
      <comments>https://antdsl.tistory.com/5#entry5comment</comments>
      <pubDate>Wed, 10 Dec 2025 21:14:49 +0900</pubDate>
    </item>
    <item>
      <title>자동화된 거래 전략(Automated Trading Strategy), 즉 알고리즘 트레이딩 봇</title>
      <link>https://antdsl.tistory.com/4</link>
      <description>&lt;p data-path-to-node=&quot;0&quot; data-ke-size=&quot;size16&quot;&gt;슈퍼트렌드(Supertrend) 지표를 프로그램으로 응용하는 것은 &lt;b&gt;자동화된 거래 전략(Automated Trading Strategy)&lt;/b&gt;, 즉 &lt;b&gt;알고리즘 트레이딩 봇&lt;/b&gt;을 만드는 데 가장 일반적이고 강력하게 활용됩니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;1&quot; data-ke-size=&quot;size16&quot;&gt;파이썬(Python) 같은 프로그래밍 언어를 사용하여 슈퍼트렌드 지표를 계산하고, 이를 기반으로 실시간 거래 신호를 생성하는 프로그램을 만들 수 있습니다.&lt;/p&gt;
&lt;h2 data-path-to-node=&quot;2&quot; data-ke-size=&quot;size26&quot;&gt;  프로그램 응용 방법&lt;/h2&gt;
&lt;p data-path-to-node=&quot;3&quot; data-ke-size=&quot;size16&quot;&gt;슈퍼트렌드 지표를 활용한 알고리즘 트레이딩 시스템을 구축할 때의 주요 응용 단계를 설명합니다.&lt;/p&gt;
&lt;h3 data-path-to-node=&quot;4&quot; data-ke-size=&quot;size23&quot;&gt;1. 지표 계산 및 신호 생성&lt;/h3&gt;
&lt;p data-path-to-node=&quot;5&quot; data-ke-size=&quot;size16&quot;&gt;슈퍼트렌드의 핵심 계산 로직을 코드로 구현합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;6&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;ATR(Average True Range) 계산:&lt;/b&gt; 지정된 기간(예: 14일) 동안의 평균 실제 범위를 계산하는 함수를 만듭니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Supertrend 값 계산:&lt;/b&gt; ATR 값과 승수(Multiplier, 예: 3)를 사용하여 슈퍼트렌드 선의 상단 밴드와 하단 밴드를 계산하고, 최종 슈퍼트렌드 선을 결정합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;신호 로직:&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;6,2,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;매수(Long) 신호:&lt;/b&gt; 현재 종가(&lt;span data-math=&quot;C&quot;&gt;$C$&lt;/span&gt;)가 슈퍼트렌드 선(&lt;span data-math=&quot;ST&quot;&gt;$ST$&lt;/span&gt;)을 &lt;b&gt;상향 돌파&lt;/b&gt;하고, &lt;span data-math=&quot;ST&quot;&gt;$ST$&lt;/span&gt;가 &lt;b&gt;하락에서 상승 추세로 전환&lt;/b&gt;할 때 신호를 발생시킵니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;매도(Short) 신호:&lt;/b&gt; 현재 종가(&lt;span data-math=&quot;C&quot;&gt;$C$&lt;/span&gt;)가 슈퍼트렌드 선(&lt;span data-math=&quot;ST&quot;&gt;$ST$&lt;/span&gt;)을 &lt;b&gt;하향 돌파&lt;/b&gt;하고, &lt;span data-math=&quot;ST&quot;&gt;$ST$&lt;/span&gt;가 &lt;b&gt;상승에서 하락 추세로 전환&lt;/b&gt;할 때 신호를 발생시킵니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;7&quot; data-ke-size=&quot;size23&quot;&gt;2. 자동화된 거래 실행 (알고리즘 트레이딩)&lt;/h3&gt;
&lt;p data-path-to-node=&quot;8&quot; data-ke-size=&quot;size16&quot;&gt;계산된 신호를 실제 거래소(예: 바이낸스, 업비트 등)의 API에 연결하여 자동으로 주문을 실행합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;9&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;진입:&lt;/b&gt; 매수 신호가 발생하면 지정된 자산(예: 비트코인)을 시장가 또는 지정가로 매수합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;청산/손절매:&lt;/b&gt; 슈퍼트렌드 지표는 &lt;b&gt;추세 전환 시점&lt;/b&gt;에 포지션을 청산하거나 &lt;b&gt;손절매 수준&lt;/b&gt;을 결정하는 데 활용될 수 있습니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;9,1,1&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;예시:&lt;/b&gt; Long 포지션을 보유 중일 때, 슈퍼트렌드 선이 상승에서 하락(빨간색)으로 전환되면 자동으로 해당 포지션을 청산합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;백테스팅 (Backtesting):&lt;/b&gt; 이 전략을 과거 데이터에 적용하여 실제로 얼마나 수익성이 있었는지 시뮬레이션하고, 최적의 파라미터(ATR 기간, 승수)를 찾습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-path-to-node=&quot;10&quot; data-ke-size=&quot;size23&quot;&gt;3. 웹 기반 알림 시스템&lt;/h3&gt;
&lt;p data-path-to-node=&quot;11&quot; data-ke-size=&quot;size16&quot;&gt;프로그램이 실시간 데이터를 모니터링하며 슈퍼트렌드 신호를 감지했을 때, 사용자에게 알림을 보냅니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;12&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;알림 채널:&lt;/b&gt; 텔레그램, 카카오톡, 이메일 등의 API를 활용하여 신호 발생 즉시 푸시 알림을 전송합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;정보 포함:&lt;/b&gt; &quot;비트코인 5분봉에서 슈퍼트렌드 매수 신호 발생 (ATR: 10, 승수: 3)&quot;과 같은 구체적인 정보를 포함합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-path-to-node=&quot;13&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-path-to-node=&quot;14&quot; data-ke-size=&quot;size26&quot;&gt; ️ 간단한 Python 코드 예시 (개념)&lt;/h2&gt;
&lt;p data-path-to-node=&quot;15&quot; data-ke-size=&quot;size16&quot;&gt;실제 거래소 API 연결 없이, pandas와 같은 라이브러리를 사용하여 슈퍼트렌드를 계산하는 개념적 코드는 다음과 같습니다.&lt;/p&gt;
&lt;div data-hveid=&quot;4&quot;&gt;
&lt;div&gt;&lt;span&gt;Python&lt;/span&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;kotlin&quot;&gt;&lt;code&gt;import pandas as pd
# pandas_ta 같은 라이브러리를 사용하여 슈퍼트렌드 지표를 쉽게 계산할 수 있습니다.

def calculate_supertrend(data, period=10, multiplier=3):
    # 1. ATR 및 기본 상/하단 밴드 계산 로직 (내부 라이브러리 사용 가정)
    # 2. 가격과 밴드를 비교하여 추세 방향(슈퍼트렌드 값) 결정
    # 3. 매수/매도 신호 생성 (Supertrend 선의 색상/방향 전환 감지)
    
    # 예시:
    data['Supertrend'] = ... # 계산된 슈퍼트렌드 값
    data['Signal'] = 0 
    
    # 매수 신호 로직 (Supertrend가 하락에서 상승으로 전환되는 시점)
    data.loc[(data['Supertrend'].shift(1) &amp;gt; data['Supertrend']) &amp;amp; (data['Supertrend'] &amp;lt; data['Close']), 'Signal'] = 1 
    
    # 매도 신호 로직 
    data.loc[(data['Supertrend'].shift(1) &amp;lt; data['Supertrend']) &amp;amp; (data['Supertrend'] &amp;gt; data['Close']), 'Signal'] = -1

    return data

# 예시 DataFrame에 함수 적용 후 'Signal' 컬럼을 통해 거래 실행
# strategy_df = calculate_supertrend(price_data) &lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <author>개미 트레이딩</author>
      <guid isPermaLink="true">https://antdsl.tistory.com/4</guid>
      <comments>https://antdsl.tistory.com/4#entry4comment</comments>
      <pubDate>Wed, 10 Dec 2025 21:13:01 +0900</pubDate>
    </item>
  </channel>
</rss>