6. AI 매수의견 판정
조건검색식은 숫자 조건만 봅니다. "거래대금 100억 이상, 등락률 3% 이상" 같은 조건에는 맞지만 이미 꼭대기까지 올라 버린 종목도 똑같이 편입됩니다. AI 매수의견 판정은 그 사이에 판단을 한 번 더 넣는 기능입니다.
이 장은 선택 기능을 다룹니다. 기본값은 꺼짐이며, 켜지 않으면 프로그램 동작은 이전과 완전히 같습니다.
6.1 기능 개요
조건검색식에 편입된 종목을 최초매수하기 직전에, 사용자가 작성한 프롬프트로 AI에게 매수 의견을 물어보고 그 답변으로 매수 여부를 결정합니다.
동작 흐름
조건검색식 편입 신호
↓
기존 조건 검사 (기존과 동일)
↓
AI 판정 요청 ──→ (AI 응답 대기 — 다른 종목의 매매는 그대로 진행)
↓
승인 → 매수 진행
기각 → 매수하지 않음, 매매작업은 남겨 둠
📌 참고: 판정을 기다리는 동안 다른 종목의 매매는 멈추지 않습니다. AI 호출은 매매 처리와 분리된 별도 작업으로 실행되며, 판정이 도착하면 그 종목만 다시 평가합니다.
적용 범위
| 조건 타입 | 지원 |
|---|---|
| 키움 조건검색식 준비조건 | ✅ |
| 키움 조건검색식 실행조건 | ✅ |
| 시스템조건식 | ✗ |
| 사용자 정의 (외부 전략) | ✗ |
조건검색식이 아닌 조건에서는 AI 설정 항목이 화면에 나타나지 않습니다. 시스템조건식은 실시간 시세를 받을 때마다 초당 수십 번 재계산되므로, 수 초가 걸리는 AI 판정과 맞지 않습니다.
지원 AI
| 제공자 | 기본 모델 | 실측 응답 시간 |
|---|---|---|
| ChatGPT (OpenAI) | gpt-4.1-mini | — |
| Gemini (Google) | gemini-2.5-flash | 약 1.6초 |
둘 중 하나를 골라 사용합니다. 양쪽 키를 모두 등록해 두고 필요할 때 바꿔도 됩니다.
6.2 사용 전 확인 사항
이 기능은 기본적으로 꺼져 있습니다
프로그램을 새로 설치하거나 업데이트해도 아무것도 달라지지 않습니다. 기존 매매전략은 그대로 동작합니다. 아래 세 가지를 모두 켜야 판정이 시작됩니다.
| 단계 | 위치 | 절 |
|---|---|---|
| 1. AI API KEY 등록 | [설정 → AI API KEY 등록] | 6.4 |
| 2. 전역 설정 켜기 | [설정 → AI 매수의견 판정 설정] | 6.5 |
| 3. 주문전략에서 켜기 | 주문전략상세 편집 → 준비조건 또는 실행조건 | 6.6 |
하나라도 빠지면 판정하지 않고, API 호출도 발생하지 않습니다.
비용은 사용자 본인의 API 계정에서 나갑니다
AI API는 호출할 때마다 요금이 부과되며, 부엉이 트레이더 프로가 아니라 사용자의 OpenAI / Google 계정에서 결제됩니다.
| 항목 | 내용 |
|---|---|
| 과금 주체 | 사용자의 OpenAI / Google 계정 |
| 호출 시점 | 조건검색식 편입 + 기존 조건을 모두 통과했을 때만 |
| 호출 횟수 | 같은 종목·같은 단계는 판정이 끝날 때까지 1회만 |
| 비용 절감 장치 | 일일 호출 한도, 요청 큐 상한, 오래된 요청 자동 폐기 |
⚠️ 주의: ChatGPT Plus(월 구독)와 OpenAI API는 별개의 서비스입니다. Plus를 쓰고 계셔도 API용 크레딧은 따로 충전해야 합니다.
💡 팁: 편입 신호가 잦은 조건검색식을 쓰신다면 전역 설정에서 일일 호출 한도부터 지정하시기 바랍니다(6.5).
매수 판단의 최종 책임은 사용자에게 있습니다
⚠️ 투자 위험 고지: AI의 답변은 참고 자료이며 수익을 보장하지 않습니다. 이 기능은 조건검색식만으로 걸러지지 않는 종목을 한 번 더 검토하기 위한 보조 장치입니다. 정식 적용 전에 Shadow 모드(6.10)로 충분히 관찰하시기를 권합니다.
6.3 API KEY 발급 방법
ChatGPT와 Gemini 중 사용할 쪽만 발급하면 됩니다.
6.3.1 ChatGPT (OpenAI)
- platform.openai.com 에 로그인합니다.
- 우측 상단 프로필 → Your profile → User API keys 로 이동합니다.
- Create new secret key 를 누르고 이름을 입력합니다. (예:
OwlTrader) - 생성된 키(
sk-로 시작)를 복사합니다. - 좌측 메뉴 Billing 에서 결제 수단을 등록하고 크레딧을 충전합니다.
⚠️ 주의: 생성 화면을 벗어나면 키를 다시 볼 수 없습니다. 생성 직후에 복사해 두십시오. 또한 크레딧이 없으면 판정 시 사용 가능한 크레딧이 없습니다 오류가 발생합니다.
6.3.2 Gemini (Google)
- aistudio.google.com/apikey 에 Google 계정으로 로그인합니다.
- API 키 만들기 를 누릅니다.
- 프로젝트를 선택하거나 새로 만듭니다.
- 생성된 키를 복사합니다.
⚠️ 주의: API KEY는 비밀번호와 같습니다. 채팅·메일·화면 캡처 등으로 다른 사람에게 노출되지 않도록 주의하십시오. 노출되었다면 발급처에서 해당 키를 즉시 삭제하고 새로 발급받으십시오.
6.4 1단계 — AI API KEY 등록
메뉴에서 [설정 → AI API KEY 등록] 을 선택합니다. 한 화면에서 ChatGPT와 Gemini 키를 모두 관리합니다.

| 항목 | 설명 |
|---|---|
| ChatGPT(OPENAI) API KEY | 6.3.1에서 발급받은 키를 붙여넣습니다. |
| Gemini API KEY | 6.3.2에서 발급받은 키를 붙여넣습니다. |
| [연결 테스트] | 키가 실제로 동작하는지 확인합니다. 저장 전에 눌러 보십시오. |
| [저장] | 변경한 키만 검증 후 저장합니다. |
사용할 제공자 한 쪽만 등록해도 됩니다.
📌 참고: 등록한 키는 Windows 자격 증명 관리자에 저장됩니다. 설정 파일이나 데이터베이스에는 저장되지 않으며, 로그에는 앞뒤 4자리만 남습니다.
연결 테스트가 실패할 때
| 메시지 | 원인과 조치 |
|---|---|
| 인증에 실패했습니다 | 키가 잘못되었거나 삭제되었습니다. 발급처에서 다시 확인하십시오. |
| 사용 가능한 크레딧이 없습니다 | OpenAI 결제 설정에서 크레딧을 충전하십시오. |
| 요청이 많아 일시적으로 거부되었습니다 | 잠시 후 다시 시도하십시오. |
| 네트워크 오류 | 방화벽·프록시 설정을 확인하십시오. |
6.5 2단계 — 전역 설정 켜기
메뉴에서 [설정 → AI 매수의견 판정 설정] 을 선택합니다. 프로그램 전체에 적용되는 설정입니다.

| 항목 | 기본값 | 설명 |
|---|---|---|
| AI 매수의견 사용 | 꺼짐 | 전체 스위치입니다. 끄면 모든 주문전략의 AI 판정이 멈춥니다. |
| 사용하지 않을 때 AI조건 처리 | 매수 보류 | 아래 설명을 참고하십시오. |
| AI 제공자 | ChatGPT(OPENAI) | ChatGPT(OPENAI) / Gemini 중 선택합니다. |
| 기본 모델 | 제공자별 기본값 | 직접 입력하거나 [목록 불러오기] 로 선택합니다. |
| 요청 큐 상한 | 50 | 대기열 최대 길이입니다. 초과분은 버립니다. |
| 요청 폐기 시간 | 3분 | 이 시간을 넘긴 요청은 호출하지 않고 버립니다. |
| 재시도 횟수 | 2 | 서버가 붐벼서(503) 실패했을 때 자동으로 다시 물어보는 횟수입니다. (5초 → 15초 간격) |
| 일일 호출 한도 | 무제한 | 하루 최대 호출 횟수입니다. 비용 상한을 두려면 설정하십시오. |
| [판정 테스트] | — | 가상 종목으로 실제 판정을 한 번 호출해 봅니다. |
"사용하지 않을 때 AI조건 처리" — 무엇을 고를지
전역 스위치를 껐거나 API KEY가 없을 때, AI 조건이 걸린 주문전략을 어떻게 할지 정하는 항목입니다.
| 선택 | 동작 | 어떤 경우에 |
|---|---|---|
| 매수 보류 (기본) | AI 조건이 걸린 명세는 매수하지 않습니다. | AI 필터를 믿고 조건검색식을 느슨하게 짠 전략 |
| 조건 통과 | AI 조건이 없는 것처럼 그냥 통과합니다. | 조건검색식만으로도 충분히 걸러지는 전략 |
⚠️ 주의: 조건검색식을 "거래대금 100억 이상"만으로 아주 느슨하게 짜고 나머지는 AI가 거르도록 구성했다고 합시다. 이때 조건 통과로 두면, API 크레딧이 떨어진 순간부터 아무 필터 없이 매수하게 됩니다. 그래서 기본값이 매수 보류입니다. 반대로 조건검색식이 이미 촘촘하고 AI는 추가 안전장치일 뿐이라면 조건 통과가 편합니다.
판정은 한 번에 한 종목씩 (v2.2.2)
판정 동시 실행 수는 1로 고정되어 있으며 설정할 수 없습니다. 동시에 여러 건을 물으면 분당 호출 수가 그만큼 늘어 무료 한도에 걸리고(장 시작 직후 실제로 한도 초과가 발생했습니다), 판정이 먼저 끝난 종목부터 매수되어 신호 순서와 매수 순서가 어긋나기 때문입니다.
한 번에 하나씩 처리하면 대기열이 길어지므로, 요청 폐기 시간의 기본값도 3분으로 늘렸습니다. 짧게 잡으면 앞선 판정 한 건 때문에 뒤에 들어온 신호가 줄줄이 버려집니다.
재시도 — 일시적인 서버 오류에서 회복하기
AI 서버가 붐벼서(503) 한 번 실패하면 그 종목은 그날 내내 매수되지 않았습니다. 이제 자동으로 2회까지 재시도합니다(5초 → 15초 간격).
다만 응답이 아예 오지 않은 경우는 재시도하지 않습니다. 앞선 요청이 아직 서버에서 처리 중일 수 있어, 같은 요청을 또 보내면 부하만 겹치기 때문입니다.
⚠️ 기존 사용자 주의: 이미 저장된 설정 파일의 값이 그대로 남아 있습니다. 요청 폐기 시간은 이 화면에서 직접 180 초(3분)로 바꾸어 주십시오. 판정 동시 실행 수는 저장된 값과 무관하게 항상 1로 동작합니다.
6.6 3단계 — 주문전략에 AI 조건 붙이기
[자동매매] → 편집기 → 주문 전략 상세 → [추가]/[수정] 으로 주문전략상세 편집 창을 엽니다.
준비조건 또는 실행조건에서 조건 타입을 "키움 조건검색식"으로 선택하면, 그 아래에 AI 항목이 나타납니다.

- AI 매수의견 사용 체크박스를 켭니다.
- 옆의 [설정...] 버튼을 누르면 상세 설정 창이 열립니다.

⚠️ 주의: 준비조건과 실행조건은 완전히 독립된 설정입니다. 양쪽 모두 켜면 판정을 두 번 하므로 비용도 두 배가 됩니다.
준비조건과 실행조건 중 어디에 둘까
| 배치 | 특징 |
|---|---|
| 준비조건 | 편입 시점에 한 번 판정합니다. 이후 실행조건은 조건식만으로 빠르게 통과합니다. |
| 실행조건 | 실제 매수 직전에 판정합니다. 준비 후 시간이 흐른 뒤의 상황을 반영합니다. |
준비 → 실행 사이에 시간 간격을 두는 전략이라면 실행조건이 더 최신 상황을 봅니다. 편입 직후 바로 매수하는 전략이라면 어느 쪽이든 큰 차이가 없습니다.
6.7 프롬프트 프리셋과 변수
6.7.1 프롬프트 프리셋 5종
설정 창의 프리셋 콤보에서 바로 쓸 수 있는 프롬프트 5종을 제공합니다. 고른 뒤 자유롭게 고칠 수 있고, 처음부터 직접 써도 됩니다.
| 프리셋 | 내용 |
|---|---|
| 단기 모멘텀 점검 | 편입 직후 상승 초기 국면인지, 이미 진행된 국면인지 판단합니다. |
| 과열·고점 추격 회피 | 이미 크게 오른 종목을 꼭대기에서 잡는 것을 막습니다. |
| 수급·유동성 점검 | 거래대금과 호가 상태를 보고 들어갔다 못 나오는 종목을 거릅니다. |
| 눌림목·재상승 점검 | 당일 고가에서 조정을 받은 뒤 다시 오르려는 자리인지 판단합니다. |
| 종합 보수 판정 | 모든 지표를 검토하되 애매하면 사지 않는 쪽으로 판단합니다. 기각률이 높습니다. |
프리셋 5종은 모두 준비조건·실행조건 어느 쪽에서든 쓸 수 있습니다.
📌 참고: 프리셋을 고르면 그 내용이 전략에 복사되어 저장됩니다. 나중에 프로그램 업데이트로 프리셋 내용이 바뀌어도 이미 저장한 전략의 판정 기준은 변하지 않습니다. 프리셋 내용을 한 글자라도 고치면 "사용자 수정됨" 배지가 표시됩니다.
📌 참고 (v2.3.4): 프리셋 과열·고점 추격 회피와 눌림목·재상승 점검이 새 가격위치 변수(6.7.2)를 쓰도록 개선되었습니다. 위 설명대로 이미 저장한 전략에는 반영되지 않으므로, 개선된 내용을 쓰려면 AI 설정 창에서 프리셋을 다시 고르십시오.
6.7.2 프롬프트에 쓸 수 있는 변수
프롬프트에 {종목명} 처럼 중괄호로 감싼 변수를 넣으면, 판정 시점의 실제 값으로 바뀝니다. 설정 창의 변수 버튼을 누르면 커서 위치에 삽입됩니다.
| 분류 | 변수 |
|---|---|
| 종목 | {종목코드} {종목명} |
| 신호 | {조건검색식명} {전략명} {현재시각} |
| 시세 | {현재가} {시가} {고가} {저가} {기준가} {전일종가} {등락률} {상한가} {하한가} |
| 체결 | {체결강도} {누적거래량} {누적거래대금} |
| 호가 | {최우선매도호가} {최우선매수호가} {호가스프레드} {호가스프레드율} |
| 가격위치 (v2.3.4) | {고점대비하락률} {저점대비상승률} {당일위치} {시가대비등락률} |
가격위치 변수 (v2.3.4)
고가·저가와 현재가를 따로 넘기면 AI는 "고가가 현재가보다 높다"처럼 늘 참인 사실을 근거로 삼고, 그 차이가 1%인지 8%인지는 판단에 반영하지 못했습니다. 이 네 변수는 프로그램이 직접 계산해서 넘깁니다.
| 변수 | 의미 |
|---|---|
{고점대비하락률} | 당일 고가 대비 현재가가 몇 % 내려와 있는지. 0이면 현재가가 당일 고가 |
{저점대비상승률} | 당일 저가 대비 현재가가 몇 % 올라와 있는지. 0이면 현재가가 당일 저가 |
{당일위치} | 당일 저가~고가 구간에서 현재가의 위치(%). 0이면 저가, 100이면 고가 |
{시가대비등락률} | 시가 대비 현재가의 등락률(%). 음수면 시가보다 밀린 상태 |
💡 팁: {등락률} 은 전일종가 기준이라 갭 상승 후 계속 밀리는 종목도 플러스로 보입니다. 등락률이 +5%인데 {시가대비등락률} 이 −2%라면 시초가가 그날의 고점이었다는 뜻입니다. 추격 매수를 거를 때 특히 유용합니다.
⚠️ 주의: 새 변수는 이미 저장한 전략에 자동으로 들어가지 않습니다. 프리셋은 고르는 순간 전략에 복사되기 때문입니다. 쓰시려면 AI 설정 창에서 프리셋을 다시 고르거나 프롬프트에 변수를 직접 넣으십시오.
📌 참고 (v2.3.4) — 시세를 받지 못했으면 판정을 요청하지 않습니다. 시세가 아직 들어오지 않아 가격 변수가 비어 있거나 0 이면 AI를 호출하지 않고 보류합니다. 종전에는 이런 상태로 물어 AI가 종목과 무관하게 Hold를 돌려주고, 요금과 일일 호출 한도만 소모되었습니다. 시세가 들어온 뒤 신호가 다시 오면 판정합니다. 단, 보합이면 {등락률} 이, 첫 체결 전이면 {체결강도} 가 0 인 것처럼 0이 정상인 변수는 막지 않습니다.
📌 참고: 이전 문서에 적혀 있던 준비 계열 변수({준비완료가} {준비완료시각} {준비후고가} {준비후저가})는 제공되지 않습니다. 준비조건을 쓰지 않는 전략에서는 값이 비거나 엉뚱한 시각이 들어가기 때문에 변수 자체를 두지 않습니다.
쓸 수 없는 변수
{ATR} {일목균형표_전환선} {Pivot저항1} 같은 보조지표·캔들·지수 계열 변수는 사용할 수 없습니다. 저장할 때 오류로 안내합니다.
이 값들은 별도 조회나 계산이 필요해서, 매매 처리를 붙잡은 채 수집하면 다른 종목의 매매가 지연됩니다. 조건검색식 경로에서는 계산 결과 자체가 존재하지 않기도 합니다.
계좌 정보는 들어가지 않습니다
계좌번호·잔고·예수금은 변수 목록에 아예 없습니다. AI에게 보내는 프롬프트에 계좌 정보가 섞여 나갈 수 없는 구조입니다.
6.8 세부 옵션
설정 창의 항목들입니다. 기본값 그대로 써도 무방합니다.
| 항목 | 기본값 | 설명 |
|---|---|---|
| 최소 신뢰도 | 70 | AI가 이 값 이상의 확신으로 매수를 권해야 통과합니다. 높일수록 덜 삽니다. (0~100) |
| 슬리피지(%) | 1.0 | 판정을 기다리는 사이 이 비율을 넘게 오르면 승인을 무효로 봅니다. |
| 판정 유효(초) | 120 | 판정이 난 뒤 이 시간이 지나면 오래된 판단으로 보고 무효 처리합니다. |
| 판정 실패 시 | 매수 중단 (고정) | 호출 실패·타임아웃 시 매수하지 않습니다. |
| Shadow 모드 | 꺼짐 | 판정을 기록만 하고 매수는 그대로 진행합니다 (6.10). |
📌 참고 (v2.2.2): 판정 타임아웃 설정 항목이 없어졌습니다. 내부적으로 30초 상한이 걸려 있어 그보다 크게 잡아도 30초에 끊기던 문제를 고치면서, 사용자가 정할 이유가 없다고 판단해 항목 자체를 제거했습니다.
- 짧게 끊어도 AI 서버는 계속 답을 만들고 있어 요금은 이미 나간 뒤입니다.
- 거기서 다시 요청하면 같은 종목 요청이 겹쳐 상황을 악화시킵니다.
- 늦게 온 답은 슬리피지 가드가 이미 걸러 줍니다.
이제 응답이 올 때까지 기다립니다(최대 120초).
슬리피지가 하는 일
AI에게 물어보는 데 2초가 걸렸다고 합시다. 그 사이 종목이 3% 급등했다면, AI가 "1,000원에 살 만하다"고 답한 것을 1,030원에 사게 됩니다. AI가 본 상황과 실제 매수 상황이 다릅니다.
슬리피지 1.0%는 "요청 시점보다 1%를 넘게 올랐으면 그 승인은 버린다" 는 뜻입니다. 급등한 종목을 뒤늦게 추격 매수하지 않기 위한 장치입니다.
판정 실패 시 동작이 고정인 이유
"실패해도 매수 진행"을 고를 수 있게 하면, API 장애가 났을 때 AI 판정이 없는 것과 똑같이 동작합니다. 평소에는 걸러 주다가 장애 순간에만 무방비가 되는데, 사용자는 그 순간을 알아채기 어렵습니다. 그래서 선택지로 두지 않았습니다.
판정만 기록하고 매수는 진행하고 싶다면 Shadow 모드를 쓰십시오.
6.9 AI가 기각한 매매작업 처리
기각되면 어떻게 되나
| 대상 | 처리 |
|---|---|
| 최초매수 조건이 기각 | 매수하지 않습니다. 매매작업은 사용중지 상태로 남습니다. |
| 추가매수 조건이 기각 | 해당 명세만 보류합니다. 매매작업은 정상 유지되어 매도 로직은 살아 있습니다. |
| 매매작업 완료·삭제 | 자동으로 하지 않습니다. 사용자가 결정합니다. |
기각 사유는 매매작업의 사용중지 사유에 AI 매수의견 기각(준비|실행): {사유} (신뢰도 {n}) 형식으로 기록됩니다.
⚠️ 기각된 작업은 보유종목 한도를 계속 차지합니다
기각된 매매작업은 완료되지 않은 상태로 남습니다. 매매전략의 보유 종목수 제한은 미완료 작업 수로 판단하므로, 기각 작업이 쌓이면 한도에 도달해 새 신호를 받지 못합니다.
이것은 의도된 동작입니다. 자동으로 정리하면 사용자가 모르는 사이에 결정이 내려지기 때문입니다. 대신 눈에 잘 띄게 만들었습니다.
처리 방법
진행 중 매매작업 목록(3.5.1) 또는 자동매매 현황 창(7.4)에서 확인하고 정리합니다.
| 표시 | 의미 |
|---|---|
| 🟠 AI 기각 배지 (주황) | AI 판정으로 기각되었거나, AI 응답을 받지 못해 매수가 보류된 작업 |
| 🔵 AI Shadow 배지 (파랑) | Shadow 모드로 동작 중인 작업 |
| 경고 배너 | 미처리 기각 건수 안내. [선택] 버튼으로 곧바로 선택할 수 있습니다. |
📌 참고 (v2.2.2): AI가 판단해서 기각한 경우와 응답을 받지 못한 경우는 사유가 다릅니다. 배지에 마우스를 올리면 어느 쪽인지 확인할 수 있습니다.
| 사유 문구 | 의미 |
|---|---|
AI 매수의견 기각 | AI가 판단해서 사지 말라고 한 경우 |
AI 판정 실패로 매수 보류 | AI 응답을 받지 못한 경우 (서버 오류 등) |
종전에는 응답을 받지 못한 종목에 아무 표시가 없어, 매수는 되지 않는데 목록에서는 멀쩡해 보였습니다. 이제 두 경우 모두 표시되고 [일괄 선택 ▾] → [AI 기각 작업] 의 정리 대상에 포함됩니다.
- 목록 아래의 [일괄 선택 ▾] → [AI 기각 작업] 을 누르면 기각된 작업만 한 번에 선택됩니다.
- [완료] 또는 [삭제] 를 실행합니다.
- 삭제하면 그 종목에 다시 기회가 열립니다. (같은 종목의 미완료 작업이 있으면 새 작업이 생기지 않습니다.)
알림
| 시점 | 알림 |
|---|---|
| 기각 발생 즉시 | 트레이 알림 + 로그 (종목명·사유·신뢰도) |
| 매일 20:05 | 미처리 기각 작업이 남아 있으면 요약 알림 |
📌 참고 (v2.5.0): 요약 알림 시각이 15:40 → 20:05 로 옮겨졌습니다. 정규장 마감 직후에 알리면 애프터마켓(16:00~20:00)에서 아직 처리할 수 있는 건까지 재촉하게 되기 때문입니다. 자동 종료 기본 시각(20:10)보다 앞이라 알림이 뜨기 전에 프로그램이 꺼지지 않습니다. 단, 스케줄러 종료 시각을 20:05 이전으로 두었다면 이 알림은 받지 못합니다(10.3).
6.10 Shadow 모드 — 먼저 이렇게 써 보세요
Shadow 모드는 판정을 기록만 하고 매수는 그대로 진행합니다.
처음부터 AI에게 매수 결정권을 주는 것은 권하지 않습니다. 프롬프트가 의도대로 동작하는지, AI 판단이 실제로 쓸 만한지 실거래 위험 없이 먼저 확인하십시오.
권장 순서
- Shadow 모드로 1~2주 운영합니다.
- 매매는 평소와 똑같이 진행됩니다.
- 판정 결과는 전부 기록됩니다.
- [자동매매 → AI 판정 이력](6.11)에서 기록을 보고 판단합니다.
- AI가 기각했는데 실제로는 올랐다 → 프롬프트나 최소 신뢰도가 너무 빡빡합니다.
- AI가 승인했는데 물렸다 → 프롬프트를 다듬거나 다른 프리셋을 시도합니다.
- 납득이 되면 Shadow 모드를 끄고 정식 적용합니다.
⚠️ 주의: Shadow 모드를 켠 것을 잊지 마십시오. 켜져 있으면 AI가 걸러 주고 있다고 착각하기 쉽습니다. 그래서 대시보드에 파란색 AI Shadow 배지를 표시합니다.
6.11 AI 판정 이력 (v2.3.4)
AI가 어떤 판단을 했는지, 그리고 그 판단이 맞았는지를 확인하는 화면입니다. 메뉴 [자동매매 → AI 판정 이력] 을 선택하면 별도 창이 열립니다.
프로그램은 판정 이후 3 · 5 · 10 · 20 · 30 · 60분 시점의 등락률(판정 요청 시점 가격 대비)과 그 사이의 최고·최저 등락률을 자동으로 기록하며, 판정 60분 뒤에 추적을 마치고 성과를 확정합니다.
기각한 종목도 똑같이 추적합니다. 사지 않은 종목은 매매 내역에 아무것도 남지 않아, 이 기록이 없으면 "안 사길 잘했는지"를 확인할 방법이 없습니다. Shadow 모드(6.10)로 관찰할 때 특히 쓸모가 있습니다.
📌 참고: 성과 기록은 v2.3.4 이후의 판정부터 남습니다. 그 전 판정 이력에는 성과 값이 비어 있습니다.
조회 조건
| 항목 | 설명 |
|---|---|
| 기간 | 시작일~종료일을 고르거나 [오늘] · [1주] · [1개월] 버튼을 누릅니다. |
| 전략 | 특정 매매전략의 판정만 봅니다. (기본 전체) |
| 판정 | 전체 / 승인 / 기각 / 실패 중에서 고릅니다. 실패는 AI 응답을 받지 못한 건입니다. |
| 추적 완료만 | 60분 추적이 끝나 성과가 확정된 건만 봅니다. |
| [조회] · [CSV 내보내기] | 목록을 불러오거나 CSV 파일로 저장합니다. |
판정 목록 탭
판정 한 건이 한 줄입니다. 주요 컬럼은 다음과 같습니다.
| 컬럼 | 설명 |
|---|---|
| 판정일시 · 전략 · 종목 · 코드 | 언제, 어느 전략에서, 어떤 종목을 판정했는지 |
| 단계 | 준비조건 / 실행조건 중 어디에서 판정했는지 |
| 판정 · 신뢰도 · 기준 | AI 응답의 판정과 신뢰도, 그리고 적용된 최소 신뢰도(6.8) |
| 승인여부 | 승인 / 기각 / 실패. Shadow 모드였다면 승인(Shadow) 처럼 표시 |
| 조치 · 프리셋 | 실제로 취한 조치와 사용한 프롬프트 프리셋 |
| 요청가 | 판정을 요청한 시점의 가격 (등락률의 기준) |
| 10분 · 30분 · 60분 · 최고 · 최저 | 요청가 대비 등락률(%) |
| 적중 | 적중 / 빗나감. 추적이 끝나지 않았으면 추적중 |
행을 선택하면 아래쪽에 판정 근거 · 위험 요소 · 실패 사유와 함께, AI에게 보낸 프롬프트와 응답 원문이 그대로 표시됩니다. 프롬프트가 의도대로 채워졌는지 확인할 때 사용합니다.
적중의 기준
승인과 기각은 정답이 반대입니다. 판정 후 30분 안에 요청가 대비 +1% 이상 오른 적이 있으면 "매수 기회가 있었다"고 봅니다.
| 판정 | 적중 | 빗나감 |
|---|---|---|
| 승인 | 30분 안에 +1% 이상 오른 적이 있음 (샀으면 벌 기회가 있었음) | 그렇지 않음 |
| 기각 | 30분 안에 +1% 이상 오른 적이 없음 (안 사길 잘했음) | 그렇지 않음 |
📌 참고: 이 기준은 단타를 전제로 한 값입니다. 보유 기간이 긴 전략이라면 적중 여부보다 30분·60분 등락률을 직접 보고 판단하십시오.
성적 집계 탭
추적이 끝난 판정만 모아 프리셋별, 신뢰도 구간별로 나누어 보여 줍니다. 승인과 기각은 정답이 반대이므로 따로 집계합니다.
| 컬럼 | 설명 |
|---|---|
| 프리셋 / 신뢰도 · 판정 · 건수 | 묶음 기준과 승인·기각 구분, 표본 수 |
| 10분 평균 · 30분 평균 | 해당 묶음의 평균 등락률(%) |
| 최고 평균 · 최저 평균 | 추적 기간 중 최고·최저 등락률의 평균(%) |
| 적중률(%) | 적중한 판정의 비율 |
⚠️ 주의: 표본이 30건 미만인 줄은 흐리게 표시됩니다. 그 숫자는 우연일 수 있으니, 프롬프트나 최소 신뢰도를 바꾸는 근거로 삼기 전에 충분히 쌓일 때까지 기다리십시오.
6.12 기능 끄기
상황에 맞게 세 가지 중 하나를 끄면 됩니다.
| 방법 | 범위 | 용도 |
|---|---|---|
| 전역 설정의 AI 매수의견 사용 끄기 | 프로그램 전체 | 긴급 차단. API 장애·비용 초과 시 |
| 주문전략의 AI 매수의견 사용 체크 해제 | 해당 조건만 | 특정 전략만 제외 |
| API KEY 삭제 | 프로그램 전체 | 기능을 완전히 그만 쓸 때 |
⚠️ 주의: 전역 스위치를 끌 때는 6.5의 "사용하지 않을 때 AI조건 처리" 설정이 함께 적용됩니다. 매수 보류로 두었다면 AI 조건이 걸린 전략은 매수를 멈춥니다. 조건식만으로 계속 매매하려면 조건 통과로 바꾸십시오.
이미 기각된 매매작업과 확정된 판정 기록은 스위치를 꺼도 그대로 남습니다.
6.13 자주 묻는 질문 (FAQ)
Q. 업데이트하면 기존 매매전략이 영향을 받나요? 아니요. 기능이 기본적으로 꺼져 있어 아무것도 달라지지 않습니다. 켜기 전까지 API 호출도 0건입니다.
Q. AI가 판정하는 동안 다른 종목 매매가 멈추나요? 멈추지 않습니다. AI 호출은 매매 처리와 분리된 별도 작업으로 실행됩니다. 판정을 기다리는 종목만 대기하고, 나머지 매수·매도는 평소대로 진행됩니다.
Q. 판정 대기 중에 같은 종목 신호가 또 들어오면 두 번 호출되나요? 아니요. 같은 명세·같은 단계는 판정이 끝날 때까지 요청이 한 번만 나갑니다.
Q. 하루에 비용이 얼마나 나오나요? 편입 신호가 얼마나 자주 발생하는지에 달려 있습니다. 기존 조건을 모두 통과한 경우에만 호출하므로 편입 건수보다 적습니다. 일일 호출 한도(6.5)를 설정해 상한을 두십시오.
Q. ChatGPT Plus를 구독 중인데 왜 크레딧이 없다고 하나요? ChatGPT Plus(월 구독)와 OpenAI API는 별개의 서비스입니다. platform.openai.com 의 Billing에서 API용 크레딧을 따로 충전해야 합니다.
Q. 어느 제공자가 나은가요?
Gemini의 gemini-2.5-flash 는 실측 약 1.6초로 빠르고 저렴합니다. 판정 지연이 신경 쓰인다면 Gemini부터 시도해 보십시오.
Q. 시스템조건식에도 쓸 수 있나요? 지원하지 않습니다. 시스템조건식은 실시간 시세를 받을 때마다 초당 수십 번 재계산되므로, 수 초가 걸리는 AI 판정과 맞지 않습니다.
Q. 매도에도 AI 판정을 넣을 수 있나요? 현재는 최초매수 계열만 지원합니다.
Q. 기각된 작업을 자동으로 정리해 주지 않나요? 하지 않습니다. 완료할지 삭제할지는 사용자가 결정할 사항이라고 보았습니다. 대신 배지·경고 배너·일괄 선택 메뉴·20:05 리마인더로 놓치지 않게 했습니다.
Q. API KEY는 어디에 저장되나요? Windows 자격 증명 관리자에 저장됩니다. 설정 파일이나 데이터베이스에는 저장되지 않고, 로그에는 앞뒤 4자리만 남습니다.
Q. AI에게 제 계좌 정보가 넘어가나요? 넘어가지 않습니다. 계좌번호·잔고·예수금은 프롬프트 변수 목록에 아예 없습니다. 전송되는 것은 종목 시세와 사용자가 작성한 프롬프트뿐입니다.
Q. 프리셋을 고쳐 쓰고 싶은데 나중에 프로그램이 업데이트되면 덮어써지나요? 아니요. 프리셋을 고르는 순간 그 내용이 전략에 복사되어 저장됩니다. 업데이트로 프리셋 정의가 바뀌어도 이미 저장한 전략의 판정 기준은 변하지 않습니다.
Q. AI 판단이 실제로 맞았는지 어떻게 확인하나요? [자동매매 → AI 판정 이력] 에서 판정 이후 3~60분 동안의 등락률과 적중 여부를 볼 수 있습니다. 기각한 종목도 함께 추적하므로 "안 사길 잘했는지"도 확인할 수 있습니다(6.11).
Q. AI 판정으로 손실이 났습니다. 이 기능은 참고용 보조 장치이며 수익을 보장하지 않습니다. 매수 판단의 최종 책임은 사용자에게 있습니다. 정식 적용 전 Shadow 모드(6.10)로 충분히 관찰하시기를 권합니다.
