설정
Richfolio는 모든 포트폴리오 데이터를 하나의 JSON 설정으로 관리합니다 — 포트폴리오 정보는 비공개로 유지됩니다.
설정 방법
Fork한 저장소의 Settings → Secrets and variables → Actions → Variables 탭으로 이동 → 아래 JSON 내용을 담은 CONFIG_JSON 이라는 변수를 생성하세요.
예시
{
"targetPortfolio": {
"VOO": 20,
"QQQ": 15,
"GLD": 10,
"BSV": 20,
"SMH": 5,
"BTC": 1.5
},
"currentHoldings": {
"AAPL": 30,
"VOO": 1,
"BTC": 0.0002
},
"watching": ["MSFT", "NVDA", "AMD"],
"totalPortfolioValue": 50000,
"defaultCurrency": "USD",
"intradayAlerts": {
"enabled": true,
"confidenceIncreaseThreshold": 10
}
}
필드 참고
| 필드 | 필수 | 설명 |
|---|---|---|
targetPortfolio | 예 | 목표 배분 비율(%). 키는 티커 심볼이고, 값은 합계가 약 100%가 되어야 하는 비율입니다. |
currentHoldings | 예 | 현재 보유한 주식 수. 목표 포트폴리오에 없는 종목도 포함할 수 있습니다 (예: ETF 중첩 감지를 위한 AAPL). |
watching | 아니오 | 목표 포트폴리오에는 포함하지 않지만 추적하고 싶은 티커 배열입니다. 데이터를 가져와 AI 점수를 매기고, 배분 계산에 영향을 주지 않으면서 별도의 “Watch List” 섹션에 노출됩니다. 아래 Watch List를 참고하세요. |
totalPortfolioValue | 예 | 추정 포트폴리오 총 가치(defaultCurrency 단위). 실제 보유 자산이 목표보다 작을 때 배분 계산에 사용됩니다. |
defaultCurrency | 아니오 | ISO 4217 통화 코드 (예: "USD", "GBP", "AUD"). 기본값: "USD". 이메일/Telegram의 모든 금액이 이 통화로 표시되며, 일치하지 않는 티커는 Yahoo Finance의 실시간 환율로 FX 변환됩니다. |
intradayAlerts | 아니오 | 장중 알림 설정 (아래 참고). 생략 시 기본값이 적용됩니다. |
장중 알림
intradayAlerts 섹션은 장중 체크가 알림을 보낼 시점을 제어합니다. 모든 필드는 선택 사항이며 — 합리적인 기본값이 적용됩니다.
알림은 STRONG BUY와 관련된 변화에 한해서만 트리거됩니다:
- STRONG BUY로 격상 — 다른 등급 → STRONG BUY
- STRONG BUY에서 강등 — STRONG BUY → 다른 등급
- 신뢰도 변화 — STRONG BUY를 유지한 채 신뢰도가 임계값 이상 변화
| 필드 | 기본값 | 설명 |
|---|---|---|
enabled | true | 마스터 토글. false로 설정하면 장중 알림을 완전히 비활성화. |
confidenceIncreaseThreshold | 10 | STRONG BUY 종목에 대해 알림을 트리거하기 위한 최소 신뢰도 변화량 (절대값, 퍼센티지 포인트). |
분석 새로 고침
단일 종목을 최신 가격(애프터 아워/프리 마켓 포함)으로 다시 분석합니다. 새 분석 URL이 포함된 이메일 + Telegram이 전송됩니다.
Actions → Portfolio Monitor → Run workflow → mode: refresh, ticker: SMH.
가능한 경우 Yahoo Finance의 postMarketPrice와 preMarketPrice가 사용됩니다. 시간 외 데이터가 없으면 정규장 가격으로 폴백합니다.
Watch List
선택 사항인 watching 배열은 점수를 매기고 신호로 노출하고 싶지만 목표 포트폴리오에는 포함하고 싶지 않은 티커를 추적합니다. 포트폴리오 티커와 함께 데이터가 수집·프롬프트되고 점수가 매겨지지만, 배분 기반 규칙은 모두 우회합니다.
사용하면 좋은 경우:
- 목표 비중을 정하기 전에 종목을 리서치하는 단계일 때
- 현재 보유하지 않은 종목에 대한 추천이 필요할 때 (예: “지금이 NVDA에 신규 진입하기 좋은 타이밍인가?”)
- 포트폴리오 합계를 100% 이상으로 부풀리지 않고 티커 신호만 받고 싶을 때
워치 티커와 포트폴리오 티커의 차이
| 동작 | 포트폴리오 티커 | 워치 티커 |
|---|---|---|
| 배분 % 합산에 포함 | 예 | 아니오 |
| 배분 격차 계산 | 예 | 아니오 |
STRONG BUY에 gap ≥ 2% 필요 | 예 | 아니오 — 대신 신호 합치(confluence)가 필요 |
| 비중 과다 포지션 가드 적용 | 예 | 아니오 |
| 최대 2개 STRONG BUY 상한에 포함 | 예 | 아니오 — 조건을 만족하는 워치 STRONG BUY는 모두 노출 |
suggestedBuyValue 채워짐 | 예 (격차 기반) | 항상 0 — 직접 사이징 |
| 메인 “AI Buy Recommendations” 섹션에 렌더링 | 예 | 아니오 — 별도 “Watch List” 섹션 |
| 지정가 추천 | 예 | 예 (동일 로직) |
| STRONG BUY 상세 분석 페이지 | 예 | 예 |
워치 STRONG BUY 기준
배분 격차에 기댈 수 없기 때문에 워치 티커는 STRONG BUY를 받으려면 더 강한 신호 합치가 필요합니다:
- 가격대 신호 ≥ 1개 (과거 평균 대비 P/E 하회, 52주 위치 < 30%, 또는 200일선 이하)
- 가격대 신호를 확인해 주는 모멘텀 신호 ≥ 2개 (RSI < 35, 강세 MACD 크로스, 볼린저 %B < 0.15, 스토캐스틱 %K < 20, OBV 상승)
- 주요 리스크 플래그 없음
- 신호 합치만으로 신뢰도 ≥ 80%
- 밸류 등급 A 또는 B (주식에만 해당; ETF와 암호화폐는 건너뜀)
예시
{
"targetPortfolio": { "VOO": 20, "GLD": 10, ... },
"currentHoldings": { "VOO": 5, "AAPL": 30 },
"watching": ["MSFT", "NVDA", "AMD", "AVGO"]
}
이 포트폴리오는 AAPL + VOO를 보유하고, MSFT/NVDA/AMD/AVGO는 순수 리서치 신호로만 추적합니다. 워치 티커는 이메일/Telegram의 별도 섹션에 표시되며, 포트폴리오 합계를 100% 이상으로 밀어 올리지 않고, 포트폴리오 STRONG BUY 슬롯을 잠식하지도 않습니다.
티커 형식
| 유형 | 형식 | 예시 |
|---|---|---|
| 미국 주식/ETF | 표준 심볼 | AAPL, VOO, QQQ, SMH |
| 암호화폐 | 단축 이름 | BTC, ETH (BTC-USD, ETH-USD로 자동 변환) |
| 해외 시장 | Yahoo Finance 심볼 | 0700.HK (텐센트), TM (도요타) |
팁
-
목표 비율의 합은 100%가 되어야 합니다. 그렇지 않더라도 격차 계산은 동작하지만 추천 매수 금액이 더 크거나 작게 나올 수 있습니다.
-
목표 외 보유 종목도 ETF 중첩 감지를 위해 추적됩니다. 예를 들어 AAPL을 보유하면 AAPL을 포함하는 ETF(VOO나 QQQ 등)의 매수 우선순위가 낮아집니다.
-
소수점 주식도 지원됩니다 — 암호화폐(
"BTC": 0.000188)나 소수점 주식 매수를 지원하는 증권사에 유용합니다. -
포트폴리오 가치는 실제 보유 자산 가치와 설정된 추정치 중 더 큰 값을 사용합니다. 현재 보유 자산이 아직 목표 배분을 향해 쌓이고 있는 중일 때도 격차 계산이 의미 있게 유지됩니다.
티커는 몇 개까지 추가할 수 있나요?
Richfolio는 집중된 포트폴리오에서 가장 잘 동작합니다. 하드코딩된 제한은 없지만, 무료 플랜 API 할당량과 다이제스트의 가독성이 실질적인 경계를 만듭니다. **권장 범위:** | 범위 | 평가 | |------|------| | **10–20** | 스위트 스폿 — 집중적이고 실행 가능하며 모든 무료 플랜이 여유로움 | | **20–30** | 여전히 좋음 — 관리 가능한 다이제스트, 제한 안에서 충분 | | **30–50** | 기술적으로는 동작하지만 일일 다이제스트가 시끄러워짐 | | **50+** | 권장하지 않음 (아래 참고) | **왜 50개 이상은 권장하지 않는가:** - **NewsAPI (1일 100건)** — 뉴스는 5개 티커 단위 배치로 가져옵니다. 50개 티커로 일일 + 장중을 실행하면 약 22건 사용; 100개 티커면 약 42건으로, refresh를 위한 여유가 거의 없습니다. - **AI 분석 품질** — Gemini는 한 번에 너무 많은 선택지를 평가할 때 추천이 희석됩니다. - **다이제스트 가독성** — 이메일이 길어지고 Telegram은 4,096자에서 잘립니다. 신호 대 잡음 비율이 급격히 떨어집니다. - **실행 시간** — 각 티커는 가격, 기술적 지표, 펀더멘털을 위한 Yahoo Finance 호출이 필요하므로 GitHub Actions 실행이 느려집니다. Gemini 무료 플랜(1일 250건 요청, 분당 25만 토큰)은 넉넉하며 병목이 될 가능성이 거의 없습니다 — 100개 티커도 실행당 약 5.3만 토큰만 사용합니다. 실제 제약은 NewsAPI 할당량과 정보 과부하입니다. **TL;DR — 모든 무료 플랜에서 최고의 경험을 위해 ≤30개 티커를 목표로 하세요.**
업데이트
보유 종목이 변경될 때는 새로운 JSON 내용으로 CONFIG_JSON 변수를 업데이트하세요 (Settings → Secrets and variables → Actions → Variables 탭).