본문 바로가기

320x100

전체 글

(46)
주식 추천 MCP 프로젝트 - 공시·내부자 거래·백테스트 도구 확장 지난 편들에서 주말마다 지난주 픽을 채점하고 규칙을 넣고 빼는 복기 루프를 만들고, 거기에 놓친 급등주를 되짚는 미스 분석까지 붙였다.루프 자체는 잘 돌았지만 돌려 보니 한계가 보였다. 한 주에 나오는 픽은 5개에서 10개 정도라 규칙 하나를 채택할지 말지가 운에 크게 흔들린다. 재료는 뉴스로만 확인하다 보니 뉴스보다 먼저 나오는 공시를 놓쳤고, 미국장 수급은 최대 45일 늦은 13F로만 보고 있었다.이번 편은 다른 퀀트 도구들을 둘러보고 필요한 것만 골라 MCP를 확장한 기록이다. 참고한 프로젝트먼저 많이 쓰이는 오픈소스와 서비스를 훑었다. 대부분은 자동매매 엔진이거나 기관용 유료 데이터라 그대로 가져다 쓸 수는 없었다. 대신 설계 아이디어는 여럿 가져왔다.프로젝트성격가져온 것Anthropic 금융 플..
AWS Lambda와 AWS Batch Lambda로 대량 데이터를 처리하다 보면 언젠가 15분 제한에 부딪힌다. 이 글에서는 Lambda의 기본 개념과 할당량, 동시성을 먼저 정리하고, 15분을 넘기는 작업을 처리하는 방법으로 셀프 인보크와 AWS Batch를 차례로 살펴본다. 마지막에는 두 서비스를 비교해서 어떤 작업에 무엇을 쓸지 기준을 잡아본다.AWS Lambda란AWS Lambda는 서버를 직접 띄우지 않고 코드만 올려 두면, 이벤트가 발생할 때 AWS가 실행 환경을 만들어 코드를 돌려 주는 서버리스 컴퓨팅 서비스다. 요청이 없으면 비용이 0이고, 요청이 몰리면 실행 환경을 자동으로 늘린다. 과금은 호출 횟수와 실행 시간(ms 단위) × 할당 메모리로 계산된다.먼저 자주 나오는 용어부터 정리한다.용어뜻함수(Function)배포 단위...
분산 트랜잭션과 외부 호출 개발하다 보면 저장 하나에도 외부 시스템이 여러 개 엮인다. 예를들어 이력서를 저장할때, 인적성검사 솔루션에 응시자를 등록하고, 지원 완료 메일이나 문자를 보내고, 전형 결과를 다른 서비스에 넘기는 식이다. DB 트랜잭션 하나로 묶어두면 안전할 것 같지만 실제로는 그렇지 않다. 이 글에서는 채용 도메인을 예시로 트랜잭션 롤백의 한계와 이를 보완하는 패턴들을 정리한다. 트랜잭션 안의 외부 호출지원자가 지원서를 제출하는 로직을 단순하게 작성하면 이런 모습이 된다.@Transactionalpublic void apply(ApplyRequest request) { applicationRepository.save(application); // DB 쓰기 aptitudeTestClient.reg..
주식 추천 mcp 프로젝트 - 미스 분석과 일별 스냅샷 아카이빙 픽봇에는 매주 일요일 지난 한 주의 픽을 채점하고, 그 결과로 학습 규칙을 갱신해 데일리 프롬프트에 주입하는 주간 튜닝 세션이 있다. 몇 주 돌려 보니 규칙이 실제로 쌓이고 반증되면서 제법 그럴듯하게 동작했는데, 구조적인 문제가 하나 보였다.내가 낸 픽만 채점한다는 것이다. 전형적인 생존 편향이다. 픽한 종목이 어떻게 됐는지는 알 수 있지만, 픽하지 않은 종목 중 무엇이 급등했는지, 왜 우리 프로세스가 그걸 걸렀는지는 아무도 묻지 않는다. 필터가 과하게 조여져 있어도 성적표에는 드러나지 않는다. 걸러진 종목은 채점 대상에 아예 없기 때문이다.그래서 이번 편은 주간 튜닝에 미스 분석을 붙인 기록이다. 결론만 보면 간단한 기능인데, "지난 주 급등주 목록"이라는 데이터를 확보하는 과정에서 시행착오를 꽤 겪었..
OpenSearch에 대해 알아보자 RDB에서 LIKE '%개발%'로 검색하면 인덱스를 쓰지 못한다. B-tree 인덱스는 값 전체나 그 앞부분을 기준으로 만들어져 있어서, 문장 중간에 있는 단어로는 탐색이 안 되고 전체를 스캔하게 된다. 데이터가 쌓일수록 감당하기 어려워진다.OpenSearch는 이 문제를 색인 시점에 해결한다. 문자열을 단어 단위로 미리 쪼개두고, 그 단어에서 도큐먼트를 역으로 찾아간다. 검색과 데이터 분석에 최적화된 저장소다.Elasticsearch에서 갈라져 나온 제품이라 색인 구조와 쿼리 문법이 거의 같다. 이 글은 OpenSearch 기준으로 쓰지만 대부분 Elasticsearch에도 그대로 적용된다. 저장 구조OpenSearch에 없는 RDB 기능RDB를 대체하는 저장소가 아니라서 없는 기능이 있다.트랜잭션이 ..
자바에서 코드를 조작하는 방법: 바이트코드, 리플렉션, 프록시, 애노테이션 프로세서 스프링이 어떻게 @Transactional이 붙은 메서드만 트랜잭션으로 감싸는지, 롬복은 어떻게 내가 쓰지도 않은 getter를 만들어 주는지, 하이버네이트는 어떻게 아직 조회하지 않은 엔티티를 필드에 넣어 두는지. 전부 "내가 쓴 코드"만 봐서는 설명이 되지 않는 동작이다.이런 일들은 자바가 코드를 조작할 수 있는 지점을 열어 두었기 때문에 가능하다. 조작할 수 있는 지점은 크게 네 군데이고, 각각 개입하는 시점이 다르다. 컴파일 타임, 클래스 로딩 시점, 그리고 런타임이다. 이 글은 그 네 가지를 노트 순서대로 정리한다.JVM과 바이트코드먼저 조작 대상이 되는 바이트코드가 어디에 있는지부터 짚는다.자바 개발 환경은 JDK 안에 JRE가 있고, JRE 안에 JVM이 있는 구조다. JDK는 컴파일러(ja..
카프카 핵심 개념 정리 카프카를 공부하면서 정리한 내용이다. 메시지 큐의 기본 동작부터 토픽, 컨슈머 그룹, 파티션, 레플리케이션까지 핵심 개념을 순서대로 짚고, 공부하면서 생겼던 의문("메시지는 언제 삭제되나", "컨슈머는 왜 그룹으로 묶나")도 함께 풀어본다. 카프카와 메시지 큐카프카는 대규모 데이터 처리를 할 수 있는 메시지 큐이다.메시지 큐는 큐 형태로 데이터를 일시적으로 저장하는 임시 저장소다. 요청을 받는 쪽과 실제로 처리하는 쪽을 분리해서, 데이터를 비동기적으로 처리할 수 있게 해준다.카프카를 사용했을 때의 처리 흐름은 이렇다.요청 수신 → Producer가 메시지 큐에 메시지 전달 → 카프카가 메시지 보관 → 메시지를 넣자마자 사용자에게는 성공 응답 → Consumer 서버가 큐에서 메시지를 꺼내 실제 작..
주식 추천 MCP 프로젝트 - 주말 자동 복기와 규칙 갱신 루프 지난 편에서 리포트를 GitHub private repo에 자동으로 쌓는 파이프라인까지 만들었다. 픽봇은 국장 장전과 장후, 미장 장전과 장후로 하루 네 번 돌면서 리포트를 남기고, 나는 폰으로 그걸 확인한다.그런데 여기에도 빈 구멍이 있었다. 리포트가 쌓이기만 한다는 것이다. "지난주 픽이 실제로 맞았나"를 아무도 보지 않았다. 데이터는 있는데 피드백이 없으니 픽봇은 같은 실수를 계속 반복할 수 있는 구조였다.이번 편은 쌓인 리포트로 주말에 자동으로 성적을 매기고, 그 결과를 다음 주 픽에 반영하는 작업이다. 닫힌 루프 설계목표는 사람 손을 거치지 않고 한 바퀴가 도는 것이다.일요일 → 지난주 픽 채점 → 규칙 도출 → 데일리 픽봇에 자동 주입 → 다음 주 반영 → (반복)이 루프를 ..

728x90