ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

๋ฐ˜์‘ํ˜•

๐Ÿค– ํ€€ํŠธ ํˆฌ์ž ์ž๋™ํ™” – ํŒŒ์ด์ฌ์œผ๋กœ ๋งค๋งค ์‹ ํ˜ธ ๋งŒ๋“ค๊ธฐ

ํ€€ํŠธ ์ „๋žต์„ ์ž˜ ์„ธ์›Œ๋„, ๊ฒฐ๊ตญ ๋งค์ผ ์•„์นจ HTS ์ผœ์„œ ์ข…๋ชฉ์„ ์ผ์ผ์ด ํ™•์ธํ•˜๋‹ค ๋ณด๋ฉด ์ง€์น˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
๊ทธ๋ž˜์„œ ํ€€ํŠธ ํˆฌ์ž์ž๋“ค์ด ๋งŽ์ด ํ•˜๋Š” ๊ฒŒ ๋ฐ”๋กœ ์ž๋™ํ™”์ž…๋‹ˆ๋‹ค.

์˜ค๋Š˜์€ ํŒŒ์ด์ฌ์„ ํ™œ์šฉํ•ด ๋งค๋งค ์‹ ํ˜ธ ์•Œ๋ฆผ์„ ์ž๋™์œผ๋กœ ๋ฐ›๋Š” ๋ฐฉ๋ฒ•์„ ์†Œ๊ฐœํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
(์ฝ”๋“œ๋Š” ์‹ค์ œ๋กœ ์‹คํ–‰ ๊ฐ€๋Šฅํ•˜๋„๋ก ๊ฒ€์ฆํ–ˆ์Šต๋‹ˆ๋‹ค โœ…)


1. ์ž๋™ํ™”์˜ ๊ธฐ๋ณธ ์•„์ด๋””์–ด

  1. ๋ฐ์ดํ„ฐ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ – ์•ผํ›„ ํŒŒ์ด๋‚ธ์Šค ๊ฐ™์€ API๋กœ ์ฃผ๊ฐ€ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
  2. ์กฐ๊ฑด ์ฒดํฌํ•˜๊ธฐ – PER, PBR, ์ด๋™ํ‰๊ท ์„  ๊ฐ™์€ ์ „๋žต ์กฐ๊ฑด ์ ์šฉ
  3. ์‹ ํ˜ธ ์ƒ์„ฑ – ์กฐ๊ฑด ์ถฉ์กฑ ์‹œ "๋งค์ˆ˜ ํ›„๋ณด" ๋˜๋Š” "๋งค๋„ ํ›„๋ณด"๋กœ ๋ถ„๋ฅ˜
  4. ์•Œ๋ฆผ ์ „์†ก – ์ด๋ฉ”์ผ, ํ…”๋ ˆ๊ทธ๋žจ, ์Šฌ๋ž™ ๋“ฑ์œผ๋กœ ๊ฒฐ๊ณผ ์ž๋™ ์ „์†ก

2. ํŒŒ์ด์ฌ ์‹ค์ „ ์˜ˆ์ œ

์˜ˆ์‹œ๋Š” ๊ฐ„๋‹จํžˆ 20์ผ ์ด๋™ํ‰๊ท ์„  ์œ„์— ์žˆ๋Š” ์ข…๋ชฉ๋งŒ ๋งค์ˆ˜ ํ›„๋ณด๋กœ ์žก๋Š” ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค.

import yfinance as yf
import smtplib
from email.mime.text import MIMEText

# ์ข…๋ชฉ ๋ฆฌ์ŠคํŠธ
tickers = ["AAPL", "MSFT", "TSLA"]

# ๋งค๋งค ํ›„๋ณด ์ €์žฅ
buy_candidates = []

for ticker in tickers:
    data = yf.download(ticker, period="3mo", interval="1d")
    data["MA20"] = data["Close"].rolling(20).mean()
    
    # ์กฐ๊ฑด: ์ข…๊ฐ€๊ฐ€ 20์ผ ์ด๋™ํ‰๊ท ์„  ์œ„
    if data["Close"].iloc[-1] > data["MA20"].iloc[-1]:
        buy_candidates.append(ticker)

# ์ด๋ฉ”์ผ๋กœ ๊ฒฐ๊ณผ ์ „์†ก
msg = MIMEText("์˜ค๋Š˜์˜ ๋งค์ˆ˜ ํ›„๋ณด: " + ", ".join(buy_candidates))
msg["Subject"] = "ํ€€ํŠธ ๋งค๋งค ์‹ ํ˜ธ ์•Œ๋ฆผ"

s = smtplib.SMTP("smtp.gmail.com", 587)
s.starttls()
s.login("your_email@gmail.com", "your_app_password")
s.sendmail("your_email@gmail.com", "receiver_email@gmail.com", msg.as_string())
s.quit()

โœ… ์‹คํ–‰ ๊ฒฐ๊ณผ:

  • ๋งค์ˆ˜ ํ›„๋ณด ์ข…๋ชฉ์ด ์ด๋ฉ”์ผ๋กœ ์ž๋™ ์ „์†ก๋ฉ๋‹ˆ๋‹ค.
  • Gmail ๋ณด์•ˆ ์„ค์ •์—์„œ “์•ฑ ๋น„๋ฐ€๋ฒˆํ˜ธ”๋ฅผ ๋ฐœ๊ธ‰๋ฐ›์•„ ๋„ฃ์œผ๋ฉด ์ •์ƒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

3. ํ™•์žฅ ์•„์ด๋””์–ด

๋ฐ˜์‘ํ˜•
  • ์กฐ๊ฑด ๋‹ค์–‘ํ™”: PER < 10, ROE > 15% ๊ฐ™์€ ์žฌ๋ฌด ํ•„ํ„ฐ ์ถ”๊ฐ€
  • ๋ฐ์ดํ„ฐ ์†Œ์Šค ํ™•์žฅ: ๋„ค์ด๋ฒ„ ์ฆ๊ถŒ ํฌ๋กค๋ง, FRED API, Quandl ๋“ฑ
  • ์‹ค์‹œ๊ฐ„ ์•Œ๋ฆผ: ํ…”๋ ˆ๊ทธ๋žจ ๋ด‡, ์Šฌ๋ž™ Webhook ์—ฐ๊ฒฐ
  • ์ž๋™ ๋งค๋งค: ์ฆ๊ถŒ์‚ฌ API(ํ‚ค์›€์ฆ๊ถŒ, ๋ฏธ๋ž˜์—์…‹ ๋“ฑ)์™€ ์—ฐ๋™ → ์ฃผ๋ฌธ ์ž๋™ ์‹คํ–‰

4. ์ฃผ์˜ํ•  ์ 

  • ์ž๋™ํ™”๋Š” ํŽธ๋ฆฌํ•˜์ง€๋งŒ, ์ „๋žต ์ž์ฒด๊ฐ€ ๊ฒ€์ฆ๋˜์ง€ ์•Š์•˜๋‹ค๋ฉด ์“ธ๋ชจ ์—†์Œ
  • ์•Œ๋ฆผ๋งŒ ์ž๋™ํ™”ํ•˜๊ณ , ์‹ค์ œ ๋งค์ˆ˜/๋งค๋„๋Š” ์‚ฌ๋žŒ์ด ์ง์ ‘ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒŒ ์•ˆ์ „
  • ์ฆ๊ถŒ์‚ฌ API๋Š” ์ข…์ข… ์ •์ฑ… ๋ณ€๊ฒฝ → ํ•ญ์ƒ ๋ฌธ์„œ ์ตœ์‹  ํ™•์ธ ํ•„์š”

5. ์ •๋ฆฌ

  • ํ€€ํŠธ ์ž๋™ํ™”๋Š” “๊ท€์ฐฎ์€ ๋ฐ˜๋ณต ์ž‘์—…”์„ ์ค„์—ฌ์คŒ
  • ํŒŒ์ด์ฌ์œผ๋กœ ๊ฐ„๋‹จํ•œ ์‹ ํ˜ธ ์‹œ์Šคํ…œ๋ถ€ํ„ฐ ์‹œ์ž‘ ๊ฐ€๋Šฅ
  • ํ™•์žฅํ•˜๋ฉด ์™„์ „ ์ž๋™ ๋งค๋งค๊นŒ์ง€ ์—ฐ๊ฒฐ ๊ฐ€๋Šฅ

๐Ÿ“Œ ๋‹ค์Œ ๊ธ€์—์„œ๋Š” **“ํ€€ํŠธ ํˆฌ์ž์ž์˜ ํ•˜๋ฃจ ๋ฃจํ‹ด – ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘๋ถ€ํ„ฐ ๋งค๋งค ๊ธฐ๋ก๊นŒ์ง€”**๋ฅผ ๋‹ค๋ค„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
์ฆ‰, ๋งค์ผ ๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•œ ์‹ค์ „ ๋ฃจํ‹ด์„ ๋งŒ๋“ค ๊ฑฐ์˜ˆ์š”.


 

ํ€€ํŠธ์ž๋™ํ™”,ํŒŒ์ด์ฌ์ฃผ์‹,๋งค๋งค์‹ ํ˜ธ,์ฃผ์‹์ž๋™ํ™”,ํ€€ํŠธํˆฌ์ž์ „๋žต,์ฃผ์‹์•Œ๋ฆผ,ํŒŒ์ด์ฌํˆฌ์ž,์ฃผ์‹๋ฐฑํ…Œ์ŠคํŠธ,ํ€€ํŠธํŠธ๋ ˆ์ด๋”ฉ,์ž๋™๋งค๋งค


 

โ€ป ์ด ํฌ์ŠคํŒ…์€ ์ฟ ํŒก ํŒŒํŠธ๋„ˆ์Šค ํ™œ๋™์˜ ์ผํ™˜์œผ๋กœ, ์ด์— ๋”ฐ๋ฅธ ์ผ์ •์•ก์˜ ์ˆ˜์ˆ˜๋ฃŒ๋ฅผ ์ œ๊ณต๋ฐ›์Šต๋‹ˆ๋‹ค.
๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
๋งํฌ
ยซ   2026/01   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
๊ธ€ ๋ณด๊ด€ํ•จ
๋ฐ˜์‘ํ˜•