선생님, 안녕하세요! 메수 실행 시점 관련 문의 드립니다. 1. 이해했던 내용 이론 강의에서는 매수가 미장 시작 1시간 후인 11시반(23:30 KST) 실행된다고(주된 매수 실행시점) 설명하신 걸로 이해했습니다. 2. 실제 코드/로그 확인 결과 하루에 매수 시도가 2번있었는데요 (모의투자) 9시 (KST 21:00) : 무조건 실행 : 뉴욕 장 시작 전(장은 22:30 KST 오픈)이라 "모의투자 장시작전" 에러로 전부 실패 11시반 (KST 23:30경) : NY 10:30~10:35에만 실행 : 매수 체결 성공 3. 같은 날 LLM 판정이 달랐음 9시 실패 → 11시반 재시도되면서, 같은 후보 종목인데 LLM 호출 시점에 따라 결과가 달라졌습니다. 9시 : NVDA + META → BUY / AMZN → HOLD 11시반 : NVDA + AMZN → BUY /META→ HOLD 제가 여쭤보고 싶은건.. 1) 9시에 무조건 실행되는것이 주된 로직이고 11시반이 보조 실행 인건가요? 아니면 원래 11시반만 매수 시점이고 9시 건 다른 용도(데이터 준비 등)인 건지 헷갈립니다. 원래 설계 의도가 궁금합니다. 1-2) 제가 아직 운영장에서 돌려보진않았는데,, 선생님의 운영장 매수 시점은 언제인가요? 2) 같은 데이터인데도LLM 호출 타이밍에 따라 실제 매수 종목이 바뀌고, 이게 수익률에 영향을 줄 수 있겠다는 생각이 듭니다. 이 현상을 선생님은 어떻게 다루고 계신지 궁금합니다.
선생님, LLM검토 관련 문의드립니다. 최근 며칠간 자동매매 파이프라인에서 LLM(Claude API) 호출 단계가 계속 실패해서 원인을 찾아보고 있었습니다. 배경 원래 claude-opus-4-8 / claude-sonnet-4-6 을 쓰고 있었는데, 웹페이지에서 가격을 확인해보니 최신 버전인 claude-opus-5 / claude-sonnet-5 도 가격이 동일해서 제가 직접 최신 버전으로 업그레이드하였습니다. 증상 버전부분만 수정하였더니, 'ThinkingBlock' object has no attribute 'text' 에러로 6회(Opus 3회 + Sonnet 3회) 전부 실패 → 매수 후보 전부 차단 윗부분관려하여 수정하였더니, Opus는 Unterminated string (JSON 응답이 중간에 끊김), Sonnet은 content types: ['thinking'] (텍스트 응답 없이 사고 블록만 옴) 에러로 역시 전부 실패 원인 분석 claude-opus-5 / claude-sonnet-5 는 명시적으로 설정 안 해도 기본적으로 thinking(사고 과정)을 생성하는데, 기존 max_tokens=2000 설정이 이걸 감안 못 한 값이었습니다. thinking + 실제 답변(JSON)을 합친 길이가 2000을 넘어 응답이 잘리거나, 심하면 사고만 하다 텍스트 응답 없이 끝나버렸습니다. 제가 한 조치 content 블록 중 type == "text" 인 것만 골라 파싱하도록 방어 코드 추가 (에러를 재시도로 넘기기 위함) max_tokens 를 2000 → 16000으로 상향 (근본 원인 해결) (thinking depth를 낮추는 effort 파라미터 조정은 판단 품질 저하 우려로 일단 보류) 제가 여쭤보고 싶은건.. 선생님께서는 Opus,Sonnet 버전을 어떤 걸로 쓰고 계신지 궁금합니다. 저처럼 최신 버전(opus-5/sonnet-5)으로 올려서 쓰고 계신지, 아니면 다른 버전을 쓰시는지, 그리고 이런 thinking/max_tokens 이슈를 겪으신 적 있으신지도 여쭤보고 싶습니다. 토큰을 낮추기위해 effort 파라미터를 조정해볼까도 생각중인데 어떻게 해야할지 모르겠네요~
http://localhost:8000/docs#/ 여기는 python run.py 실행할 때만 접속할 수 있는건가요? 접속은 되는데 run.py 하면 " ⚠ SUPABASE_SERVICE_ROLE_KEY 미설정 - anon 키 사용 중. RLS가 켜져 있으면 쓰기가 차단될 수 있습니다. " 이게 계속 떠요. https://supabase.com/ 에서 SQL Editor에 마지막줄 DISABLE도 추가했는데도 계속 뜨네요 ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON TABLES TO anon, authenticated, service_role; ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON SEQUENCES TO anon, authenticated, service_role; ALTER TABLE economic_and_stock_data DISABLE ROW LEVEL SECURITY; 그리고 강의에선 함수에서 Ctrl + 클릭하면 이동된다는데 전 이동이 안돼요...ㅠ
강의 내용에 보면 클라이언트 수만큼 pub/sub 연결을 하면 안된다. redis 구독을 소수의 연결로 유지하고 클라이언트들에게 브로드캐스트 하는 구조로 사용한다. 애플리케션 시작 시 생성하고 서버 종료될 때 구독을 해제한다. 이렇게 설명을 주시는데 이해가 잘 되지 않아 질문을 드립니다. 1번 2번에 대해 대부분 채팅과 관련하여 메시지가 소실되도 무방한 구조에서 pub/sub의 브로드캐스팅 방법을 사용하는 것으로 알고 있습니다. 이전에 언급하신 Redis Lock에서 사용하는 경우는 애초 접근하는 서버가 수십~ 수백대일 가능성이 있습니다. 채팅의 경우도 유투브 라이브의 경우 수천 수만명의 접속일 가능성이 있습니다. 서버의 가용 능력에 따라 분산 설계가 있을 수 있겠지만 기본적으로 이러한 요구에서는 1:N이 됩니다. 어떤 목적과 이유로 1번과 관련하여 말씀을 하신건지 알고 싶습니다. 하나의 pub/sub 연결을 여러 채널이 공유해서 사용하는 것이기에 pool에 대한 이야기는 아닐 것이라 생각 합니다. 혹시 예제는 스웨거에서 요청할 때마다 pub/sub을 생성해서 사용하는 것이기에 애초에 하나의 pub/sub 연결로 사용하는 방안으로 코드를 설계해야 한다는 의미일까요? 하지만 그럼에도 클라이언트 수나 구독을 소수로 유지해야 하는 의미는 pool을 의미하시는 건지 서버 자원 때문인지 어떤 이유에서인지에 대한 이해가 잘 되지 않습니다. 3. 3번에서 하는 말이 하나의 pub/sub 연결을 시작시 생성하여 모든 채널에 대해 공유 사용하고 종료시 구독을 해제하도록 하라는 의미로 보면 될런지요
선생님 안녕하세요! Kaggle 노트북(predict.ipynb) 관련해서 문의 드립니다. 강의에서와 같이 Supabase URL/Key를 Kaggle의 Secrets 기능에 등록했는데요, 막상 노트북이 실행될 때마다 Kaggle 웹사이트에서 소스를 열어보면 Secrets가 아니라 실제 키 값이 노트북 코드에 그대로 박혀서 올라가는 현상을 발견했습니다. 클로드 한테 확인했더니 아래와 같이 설명해주었는데요. - app/services/ml_trigger_ service.py 의 push_kernel()이 Kaggle에 push할 때마다, predict.py 원본 코드를 읽어서 .env의 실제 SUPABASE_URL / SUPABASE_KEY(또는 SUPABASE_SERVICE_ROLE_KEY) 값을 노트북 첫 셀에 os.environ[...] = '실제값' 형태로 직접 주입한 뒤, 그렇게 만들어진 predict.ipynb를 push합니다. - 코드 주석에 따르면, 이렇게 우회한 이유는 "Kaggle Secrets(UserSecretsClient)가 API(kaggle kernels push)로 만든 커널에서는 'Connection error'로 실패한다" 는 걸 실측 확인했기 때문이라고 되어 있습니다. 즉 Kaggle 웹 UI에서 직접 만든 커널이 아니라 API로 push한 커널에서는 Secrets 기능 자체가 안 먹혀서, 그 대안으로 값을 직접 박아 넣는 방식을 쓰고 있는 구조였습니다. - 실제로 predict.py 에도 1순위로 os.environ에서 값을 읽고(=주입된 값), 값이 없을 때만 2순위로 Kaggle Secrets(user_secrets.get_secret(...))를 시도하도록 되어 있어서, 제가 등록한 Secrets는 지금 구조에서는 거의 항상 안 쓰이고 있는 상태였습니다. - 제가 Kaggle Secrets 등록 자체는 Kaggle 노트북 편집 화면의 Add-ons → Secrets 메뉴로 등록했고, 이름도 SUPABASE_URL / SUPABASE_KEY(및 SUPABASE_SERVICE_ROLE_KEY)로 코드와 동일하게 맞췄습니다. 제가 여쭤보고 싶은 건: 1. 혹시 제가 Secrets 등록 과정이나 코드 설정(.env, kernel-metadata.json 등)에서 뭔가 빠뜨리거나 잘못한 부분이 있어서 이런 현상이 생긴 걸까요? ㅠㅠ 2. 이게 강의에서 의도하신 정상적인 설계(=Kaggle Secrets는 폴백용이고, 실제로는 매번 키를 직접 주입하는 방식)가 맞는지 확인 부탁드립니다. 감사합니다. 참고 1 : 캐글 실행시 마다 재생성된 predict.ipynb 파일 참고 2 : 캐글 노트북 참고 3 : 캐글 시크릿키 등록
선생님 안녕하세요! 알파벤티지 api 호출 관련 문의드립니다. 강의 내용만 듣고 문의드립니다.(알파벤티지 호출 실행 안해본 상황) 알파벤티지 무료플랜이 분당 5회 제한으로 알고있는데, sleep을 5초로 하는 경우 분당 최대 10~12회 호출이 될것으로 예상이되는데요, sleep을 최소 12 이상으로 설정하는게 맞지 않나 싶어서 문의드립니다.
지난 한달 동안 모의 계좌에서 테스트를 했습니다. 기대한만큼의 성과를 확인하긴 했는데, 막상 실계좌로 테스트를 하려니 두려움과 망설임이 있네요. 등락이 있긴 합니다만, 최근 한달 간 비교적 상승 구간에 있었기도 했고요. 아무래도 상승장 보다는 하락장에서 얼마만큼 대처해줄 수 있을지가 궁금한데, 미국 주식이다보니 테스트에 들어가는 비용이 커 조심스럽습니다. 먼저 운영해 보신 선배님들의 경험담 있으시면 부탁드려 봅니다.
pip install -r requirements.txt 라고 터미널에 적었는데 이렇게 떠요 pip : 'pip' 용어가 cmdlet, 함수, 스크립트 파일 또는 실행할 수 있는 프로 그램 이름으로 인식되지 않습니다. 이름이 정확한지 확인하고 경로가 포함된 경우 경로가 올바른지 검증한 다음 다시 시도하십시오. 위치 줄:1 문자:1 + pip install -r requirements.txt + ~~~ + CategoryInfo : ObjectNotFound: (pip:String) [], Command NotFoundException + FullyQualifiedErrorId : CommandNotFoundException
C:\Users\USER>git clone https://gitlab.com/banbu3/banbu-stocktrading-final.git 'git'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는 배치 파일이 아닙니다. C:\Users\USER> 처음부터 소스코드 복사해서 다운받으려고 하는데 저렇게 뜨는데 어떻게 해야 되나요
안녕하세요 강사님! 항상 수업 잘 듣고 있습니다. 저는 그간 데이터 분석가를 꿈꾸며, 강사님의 "머신러닝 완벽가이드", "tensorflow cnn", "pytorch cnn", "transformer 구현 ~", "fastapi 완벽가이드", "kaggle ~" 강의를 몇번이고 들으며 익혀왔습니다. "내가 만든 인공지능 모델이 과연 어떻게 쓰일까"에 대해서 고민하다가 fastapi까지 공부했는데요. 이제는 Data Engineering이나 MLOps Engineering 쪽으로 취업하고 싶다고 결정하여 어떻게 어디서부터 공부할지 막막합니다. 찾아보니 사실상 Data Scientist가 하는 업무를 제외하고 배포가 되는 과정까지를 다 할줄 알아야 하고, 요구하는 기술적 요건도 많아보였습니다.(docker, fastapi, vllm, kafka, airflow 등등..) 이에 강사님께서 제가 앞으로 MLOps쪽으로 간다면 어떤 것을 공부하면 좋을 것 같은지, 대학원을 생각해보는게 좋을지 등을 추천해주셨으면 좋겠습니다.. 강사님 강의만 거의 들어온 상태라서 저 강의에 나온 내용을 제외하면 아무것도 모른다고 가정해주시면 감사하겠습니다 !
강사님 답변처럼 SUPABASE_SERVICE_ROLE_KEY 복사하고 붙인 후 실행 했는데도 아래처럼 나오네요. 무시하고 계속 수업 진도를 나갈려고 하는데 내가 워낙 쌩 초보라 13번째 강의에서도 또 언급되길래 계속 무시하고 수업을 끝까지 들으면 해결 할 수 있는지 의심스럽습니다. 그리고 localhost:8000/docs 가 강사님 처럼 열리지 않네요... ㅠㅠ "사이트에 연결할 수 없음. localhost에서 연결을 거부했습니다"라고 하네요 PS C:\박영준\banbu-stocktrading-final> python run.py ⚠ SUPABASE_SERVICE_ROLE_KEY 미설정 - anon 키 사용 중. RLS가 켜져 있으면 쓰기가 차단될 수 있 습니다. Supabase URL: https://fohjixoviclcuwdtadxf.supabase.co INFO: Started server process [23136] INFO: Waiting for application startup. 서비스 시작 시 경제 데이터 수집을 즉시 실행합니다... 경제 지표 및 주가 데이터 업데이트 작업 시작... 2026-07-27 16:39:01,751 - httpx - INFO - HTTP Request: GET https://fohjixoviclcuwdtadxf.supabase.co/rest/v1/economic_and_stock_data?select=%EB%82%A0%EC%A7%9C&order=%EB%82%A0%EC%A7%9C.desc&limit=1 "HTTP/2 403 Forbidden" 마지막 수집 날짜 조회 중 오류 발생: {'message': 'permission denied for table economic_and_stock_data', 'code': '42501', 'hint': 'Grant the required privileges to the current role with: GRANT SELECT ON public.economic_and_stock_data TO service_role;', 'details': None} 2026-07-27 16:39:01,798 - httpx - INFO - HTTP Request: GET https://fohjixoviclcuwdtadxf.supabase.co/rest/v1/economic_and_stock_data?select=%2A&%EB%82%A0%EC%A7%9C=eq.2005-12-31 "HTTP/2 403 Forbidden" 경제 데이터 업데이트 중 오류 발생: {'message': 'permission denied for table economic_and_stock_data', 'code': '42501', 'hint': 'Grant the required privileges to the current role with: GRANT SELECT ON public.economic_and_stock_data TO service_role;', 'details': None} Traceback (most recent call last): File "C:\박영준\banbu-stocktrading-final\app\services\economic_ service.py ", line 134, in update_economic_data_in_background prev_data_response = supabase.table("economic_and_stock_data").select("*").eq("날짜", previous_date).execute() ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^ File "C:\Users\박종한\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\postgrest\_sync\request_ builder.py ", line 96, in execute raise APIError(dict(json_obj)) postgrest.exceptions.APIError: {'message': 'permission denied for table economic_and_stock_data', 'code': '42501', 'hint': 'Grant the required privileges to the current role with: GRANT SELECT ON public.economic_and_stock_data TO service_role;', 'details': None} ERROR: Traceback (most recent call last): File "C:\박영준\banbu-stocktrading-final\app\services\economic_ service.py ", line 134, in update_economic_data_in_background prev_data_response = supabase.table("economic_and_stock_data").select("*").eq("날짜", previous_date).execute() ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^ File "C:\Users\박종한\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\postgrest\_sync\request_ builder.py ", line 96, in execute raise APIError(dict(json_obj)) postgrest.exceptions.APIError: {'message': 'permission denied for table economic_and_stock_data', 'code': '42501', 'hint': 'Grant the required privileges to the current role with: GRANT SELECT ON public.economic_and_stock_data TO service_role;', 'details': None} During handling of the above exception, another exception occurred: Traceback (most recent call last): File "C:\Users\박종한\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\starlette\ routing.py ", line 638, in lifespan async with self.lifespan_context(app) as maybe_state: ~~~~~~~~~~~~~~~~~~~~~^^^^^ File "C:\Users\박종한\AppData\Local\Python\pythoncore-3.14-64\Lib\ contextlib.py ", line 214, in aenter return await anext(self.gen) ^^^^^^^^^^^^^^^^^^^^^ async with original_context(app) as maybe_original_state: async with original_context(app) as maybe_original_state: ~~~~~~~~~~~~~~~~^^^^^ async with original_context(app) as maybe_original_state: ~~~~~~~~~~~~~~~~^^^^^ File "C:\Users\박종한\AppData\Local\Python\pythoncore-3.14-64\Lib\ contextlib.py ", line 214, in aenter return await anext(self.gen) ^^^^^^^^^^^^^^^^^^^^^ File "C:\박영준\banbu-stocktrading-final\app\ main.py ", line 18, in lifespan await startup() File "C:\박영준\banbu-stocktrading-final\app\ main.py ", line 48, in startup await update_economic_data_in_background() File "C:\박영준\banbu-stocktrading-final\app\services\economic_ service.py ", line 251, in update_economic_data_in_background raise Exception(f"경제 데이터 업데이트 중 오류: {str(e)}") Exception: 경제 데이터 업데이트 중 오류: {'message': 'permission denied for table economic_and_stock_data', 'code': '42501', 'hint': 'Grant the required privileges to the current role with: GRANT SELECT ON public.economic_and_stock_data TO service_role;', 'details': None}
제목 처럼 실행 했을때 아래 사진 처럼 나오네요. 그리고 cursor의 터미널에서 표출된 에러 내용을 복사해서 클로드에 붙여넣기 하는 방법이 ctrl+c, ctrl+v 인가요? 잘 안되어서 질문합니다. 아니면 시간 지체가 있나요? 왜 물어보냐면 노트북을 켜고 커서를 실행하면 시간이 좀 소요되어서 그럽니다. 아직 답변이 없어서 지난 강의를 다시 들으면서 다시 해봐도 같은 결과네요... 강의 내용대로 supabase_key를 복사해 붙였는데도요. 인프런 AI 인턴 답변 처럼 해야 하나요?