Perplexity 를 이용한 인공지능 종목 추천 2탄입니다. (1탄은 여기)
이번에는 WICS라는 업종 정보를 주면서 종목 추천을 문의했습니다. 업종마다의 특색이 있는데 그러한 정보들을 담아내는지 궁금해서 시작한 작업입니다. 재미로 봐주시기 바랍니다. 어느 정도는 의미가 있어 보입니다.
Perplexity 제공 정보
WICS 업종 정보 그리고 아래 정보들
name, price, per, ma5, ma20, frn, ins, rsi, roe
업종별 의미를 부여할 수 있도록 코드 생성을 요청했더니 아래와 같은 소스 코드를 생성했습니다.
def calculate_sector_score(row):
sector = row['sector']
score = 0
# 기본 점수 계산
if 0 < row['per'] < 20:
score += 1
if row['pbr'] < 2:
score += 1
if row['price'] > row['ma20']:
score += 1
if row['frn'] > 0:
score += 1
if row['ins'] > 0:
score += 1
if 30 < row['rsi'] < 70:
score += 1
if row['roe'] > 10:
score += 1
# 업종별 특화 점수
if sector == '에너지':
if row['pbr'] < 1.5:
score += 2
elif sector == '소재':
if row['per'] < sector_avg_per['소재']:
score += 2
elif sector == '산업재':
if row['roe'] > sector_avg_roe['산업재']:
score += 2
elif sector == '자유소비재':
if row['ma5_slp'] > 0 and row['frn'] > 0:
score += 2
elif sector == '필수소비재':
if row['per'] < sector_avg_per['필수소비재'] and row['pbr'] < sector_avg_pbr['필수소비재']:
score += 2
elif sector == '건강관리':
if row['mktcap'] > df[df['sector'] == '건강관리']['mktcap'].median():
score += 2
elif sector == '금융':
if row['roe'] > 15:
score += 2
elif sector == 'IT':
if row['ma5_slp'] > 0 and row['rsi'] < 65:
score += 2
elif sector == '통신서비스':
if row['per'] < sector_avg_per['통신서비스']:
score += 2
elif sector == '유틸리티':
if row['pbr'] < sector_avg_pbr['유틸리티']:
score += 2
else:
# 기타 업종 또는 분류되지 않은 업종
pass # skip
return score
아래는 위 코드로 업종별 1등 종목만 정렬한 결과입니다.
종목 | 업종 | 현재가 | 점수 |
---|---|---|---|
DB하이텍 | IT | 33,050 | 3 |
JW생명과학 | 건강관리 | 11,370 | 3 |
DN오토모티브 | 경기관련소비재 | 18,600 | 3 |
DB금융투자 | 금융 | 5,400 | 3 |
AJ네트웍스 | 산업재 | 4,685 | 3 |
KISCO홀딩스 | 소재 | 22,150 | 3 |
SGC에너지 | 에너지 | 26,600 | 3 |
삼천리 | 유틸리티 | 90,900 | 3 |
나스미디어 | 커뮤니케이션서비스 | 15,000 | 3 |
CJ프레시웨이 | 필수소비재 | 18,000 | 3 |