SEPA 전략 주식 분석

Author

Stock Analysis Team

Published

May 5, 2025

SEPA (Super Efficient Portfolio Approach) 전략 상세 분석

SEPA ?

SEPA(Super Efficient Portfolio Approach) 전략은 기술적 분석을 기반으로 한 주식 선정 전략으로, 다음과 같은 조건들을 만족하는 종목을 선별합니다:

  • 현재가가 200일선 위
  • 150일선이 200일선 위
  • 50일선이 150/200일선 위
  • 현재가가 5일선 위
  • 200일선 상승 추세
  • 52주 최저가 대비 30% 이상 상승

1. SEPA 전략 개요

SEPA 전략은 기술적 분석을 기반으로 한 체계적인 주식 선정 방법론으로, 강력한 상승 트렌드에 있는 주식을 식별하고 투자하는 것을 목표로 합니다. 이 전략은 이동평균선의 정렬 상태와 가격 모멘텀을 주요 지표로 활용합니다.

2. 핵심 선정 기준

2.1 이동평균선 조건

  1. 단기 강도
    • 현재가가 5일 이동평균선 위에 위치
    • 가격의 단기 상승 모멘텀 확인
  2. 중기 강도
    • 50일 이동평균선이 150일과 200일 이동평균선 위에 위치
    • 중기적 상승 추세 확인
  3. 장기 강도
    • 150일 이동평균선이 200일 이동평균선 위에 위치
    • 장기적 상승 추세 확인

2.2 추세 조건

  1. 상승 추세 확인
    • 200일 이동평균선이 상승 추세에 있을 것
    • 최소 1개월 전 대비 상승
  2. 모멘텀 강도
    • 52주 최저가 대비 30% 이상 상승
    • 강력한 상승 모멘텀 확보

3. SEPA 전략의 장점

3.1 트렌드 추종

  • 강한 상승 추세에 있는 종목 선별
  • 추세 지속성에 기반한 투자
  • 모멘텀 효과 활용

3.2 리스크 관리

  • 다중 시계열 분석으로 허위 신호 최소화
  • 이동평균선 정렬을 통한 체계적 접근
  • 명확한 진입/퇴출 기준

3.3 포트폴리오 구성

  • 객관적 기준을 통한 종목 선정
  • 섹터 다각화 가능
  • 시스템적 리밸런싱 용이

4. 실전 적용 가이드라인

4.1 진입 전략

  1. 기술적 스크리닝
    • 모든 SEPA 조건 충족 확인
    • 거래량 증가 여부 체크
  2. 추가 확인사항
    • 시장 전반적 추세 확인
    • 섹터/업종 동향 분석
    • 변동성 수준 체크

4.2 포지션 관리

  1. 보유 기간
    • SEPA 조건 유지되는 동안 보유
    • 정기적인 조건 재검증
  2. 손절 기준
    • 5일 이동평균선 하향 이탈 시 경고
    • 50일선 하향 이탈 시 재검토
    • 200일선 하향 이탈 시 매도 고려

4.3 리밸런싱

  • 월간 또는 분기 단위 정기 점검
  • 조건 위배 시 즉시 재검토
  • 포트폴리오 비중 조정

5. 주의사항

5.1 시장 상황별 고려사항

  1. 강세장
    • SEPA 조건 충족 종목 증가
    • 선별 기준 강화 고려
  2. 약세장
    • SEPA 조건 충족 종목 감소
    • 현금 비중 확대 고려

5.2 한계점

  • 하락 추세 진입 시점 포착 지연 가능
  • 급격한 시장 반전 시 대응 지연
  • 횡보장에서 잦은 매매 신호 발생 가능

6. 전략 최적화 방안

6.1 기본 전략 강화

  1. 보조지표 활용
    • RSI, MACD 등 추가 확인
    • 거래량 분석 병행
  2. 시장 상황 반영
    • VIX 지수 활용
    • 업종 모멘텀 고려

6.2 리스크 관리 강화

  1. 분산 투자
    • 섹터별 비중 제한
    • 개별 종목 비중 제한
  2. 시장 위험 관리
    • 시장 베타 고려
    • 변동성 기준 설정

미국 주식 분석 SEPA 상위 10개 종목

Code
import pandas as pd
import yfinance as yf
import datetime
import json
import plotly.graph_objs as go

def load_sepa_stocks():
    try:
        df = pd.read_csv('2024-11-18T12-28_export.csv')
        df['criteria_details'] = df['criteria_details'].apply(json.loads)
        return df
    except Exception as e:
        print(f"CSV 파일 로드 중 오류 발생: {str(e)}")
        return None

def calculate_technical_indicators(df):
    if len(df) < 200:
        return None
    try:
        df["MA5"] = df["Close"].rolling(window=5).mean()
        df["MA50"] = df["Close"].rolling(window=50).mean()
        df["MA150"] = df["Close"].rolling(window=150).mean()
        df["MA200"] = df["Close"].rolling(window=200).mean()
        return df
    except Exception as e:
        print(f"지표 계산 중 오류 발생: {str(e)}")
        return None

def create_stock_figure(ticker, company_name, stock_data):
    fig = go.Figure()
    
    # 캔들스틱 차트
    fig.add_trace(
        go.Candlestick(
            x=stock_data.index,
            open=stock_data['Open'],
            high=stock_data['High'],
            low=stock_data['Low'],
            close=stock_data['Close'],
            name='Price'
        )
    )
    
    # 이동평균선
    colors = {'MA5': 'purple', 'MA50': 'blue', 'MA150': 'green', 'MA200': 'red'}
    for ma, color in colors.items():
        fig.add_trace(
            go.Scatter(
                x=stock_data.index,
                y=stock_data[ma],
                name=ma,
                line=dict(color=color)
            )
        )
    
    fig.update_layout(
        title=f"{ticker} - {company_name}",
        yaxis_title="Price",
        xaxis_title="Date",
        height=600,
        template="plotly_white",
        showlegend=True
    )
    
    return fig

# 데이터 준비
sepa_df = load_sepa_stocks()
top_10_stocks = sepa_df.nlargest(10, '시가총액(M)')
stock_data = {}

for _, stock in top_10_stocks.iterrows():
    ticker = stock['티커']
    yf_ticker = yf.Ticker(ticker)
    hist_data = yf_ticker.history(period="1y")
    if not hist_data.empty:
        hist_data = calculate_technical_indicators(hist_data)
        if hist_data is not None:
            stock_data[ticker] = {
                'data': hist_data,
                'company_name': stock['기업명']
            }

SEPA 전략 상위 10개 종목 차트

Code
if 'ALK' in stock_data:
    create_stock_figure('ALK', stock_data['ALK']['company_name'], stock_data['ALK']['data']).show()
Code
if 'GPI' in stock_data:
    create_stock_figure('GPI', stock_data['GPI']['company_name'], stock_data['GPI']['data']).show()
Code
if 'CWEN' in stock_data:
    create_stock_figure('CWEN', stock_data['CWEN']['company_name'], stock_data['CWEN']['data']).show()
Code
if 'RDN' in stock_data:
    create_stock_figure('RDN', stock_data['RDN']['company_name'], stock_data['RDN']['data']).show()
Code
if 'BOOT' in stock_data:
    create_stock_figure('BOOT', stock_data['BOOT']['company_name'], stock_data['BOOT']['data']).show()
Code
if 'PBH' in stock_data:
    create_stock_figure('PBH', stock_data['PBH']['company_name'], stock_data['PBH']['data']).show()
Code
if 'SKT' in stock_data:
    create_stock_figure('SKT', stock_data['SKT']['company_name'], stock_data['SKT']['data']).show()
Code
if 'CCOI' in stock_data:
    create_stock_figure('CCOI', stock_data['CCOI']['company_name'], stock_data['CCOI']['data']).show()
Code
if 'FULT' in stock_data:
    create_stock_figure('FULT', stock_data['FULT']['company_name'], stock_data['FULT']['data']).show()
Code
if 'MDU' in stock_data:
    create_stock_figure('MDU', stock_data['MDU']['company_name'], stock_data['MDU']['data']).show()

개별 종목 분석

산업: 항공 운송

  • 주요 특징:
    • 2024년 초부터 꾸준한 상승세
    • 9월 이후 강한 상승 모멘텀
    • 5일선과 50일선이 150/200일 이동평균선 위에서 강한 상승세
    • 최근 거래량 증가와 함께 상승하여 매수세가 강함

산업: 자동차 딜러십

  • 주요 특징:
    • 2024년 전반적으로 안정적인 상승 추세 유지
    • 모든 이동평균선이 우상향하며 깔끔한 상승 구조
    • 11월 들어 가격 변동성이 커지면서 상승 탄력 발생

산업: 신재생 에너지 유틸리티

  • 주요 특징:
    • 5월까지 하락세였으나 이후 반등하여 강한 상승세로 전환
    • 최근 모든 이동평균선이 정렬되며 상승 추세 확립
    • 거래량도 점진적으로 증가하는 패턴

산업: 보험 서비스

  • 주요 특징:
    • 연초 대비 꾸준한 상승세 유지
    • 50일 이동평균선을 중심으로 안정적인 상승
    • 11월 들어 상승 모멘텀 강화

산업: 의류 소매

  • 주요 특징:
    • 변동성이 상대적으로 큰 편
    • 최근 200일 이동평균선 부근에서 지지를 받으며 반등 시도
    • 단기적으로 횡보 패턴 형성

산업: 제약/헬스케어

  • 주요 특징:
    • 7월까지 강한 상승세를 보였으나 이후 조정 국면
    • 200일 이동평균선이 하방 지지선 역할
    • 최근 거래량 감소로 관망세

산업: 리테일 REIT

  • 주요 특징:
    • 9월까지 꾸준한 상승세였으나 이후 조정
    • 200일 이동평균선 근처에서 지지 형성 중
    • 상승 추세선 유지 여부가 중요

산업: 통신 서비스

  • 주요 특징:
    • 변동성이 크지만 장기 상승 추세 유지
    • 최근 모든 이동평균선 위에서 강한 상승세
    • 거래량 증가와 함께 상승하는 긍정적 패턴

산업: 지역 은행

  • 주요 특징:
    • 연초부터 완만한 상승세 유지
    • 이동평균선들이 깔끔하게 정렬되며 상승 추세 확립
    • 변동성이 낮고 안정적인 상승 패턴

산업: 산업 복합기업

  • 주요 특징:
    • 5월 저점 이후 강한 반등세
    • 모든 이동평균선 위에서 거래되며 상승 추세 확실
    • 최근 상승 탄력 강화

투자 전략 및 리스크 관리

전반적인 특징

  1. 대부분의 종목이 200일 이동평균선 위에서 거래되며 장기 상승 추세 유지
  2. 산업군이 다양하게 분포되어 있어 포트폴리오 다각화 효과
  3. 대부분 11월 들어 상승 모멘텀이 강화되는 특징
  4. 변동성 측면에서는 금융, 유틸리티 섹터가 상대적으로 안정적

투자 시 고려사항

  1. 개별 종목의 섹터별 특성과 리스크 고려 필요
  2. 이동평균선 정렬 상태와 거래량 변화 모니터링
  3. 200일 이동평균선을 주요 지지선으로 활용 가능
  4. 전반적인 시장 상황과 연계하여 리스크 관리 필요

결론

SEPA 전략으로 선정된 상위 10개 종목들은 대체로 강한 기술적 모멘텀을 보여주고 있으며, 다양한 섹터에 분산되어 있어 포트폴리오 구성에 적합해 보입니다. 다만, 개별 종목의 변동성과 시장 상황을 고려한 리스크 관리가 필요합니다.