AI 트레이딩: 배운 교훈 #110: 트레일링 스톱 스크립트는 존재했지만 실행되지 않음
발행: (2026년 1월 8일 오전 07:03 GMT+9)
3 min read
원문: Dev.to
Source: Dev.to
Problem
종이 계좌에 $1,113의 실현되지 않은 이익이 있었으며, 이는 보호되지 않은 상태였습니다. 그 이유는 트레일링‑스톱 스크립트가 한 번도 실행되지 않았기 때문입니다.
scripts/set_trailing_stops.py는 2026년 1월 7일에 생성되었지만 전혀 실행되지 않았습니다.daily-trading.yml워크플로에는 트레일링 스톱을 설정하는 단계가 전혀 포함되어 있지 않았습니다.
보호되지 않은 포지션 ( data/system_state.json 발췌)
{
"symbol": "INTC260109P00035000",
"unrealized_pl": 151.0
},
{
"symbol": "SOFI260123P00024000",
"unrealized_pl": 56.0
},
{
"symbol": "AMD260116P00200000",
"unrealized_pl": 457.0
},
{
"symbol": "SPY260123P00660000",
"unrealized_pl": 449.0
}
위험에 노출된 총액: $1,113의 이익.
왜 스크립트가 사용되지 않았는가
- 스크립트는 독립 파일(
scripts/set_trailing_stops.py) 형태로 존재했습니다. claude-agent-utility.yml에서만 수동 트리거로 참조되었습니다.daily-trading.yml워크플로에 포함되지 않았으므로:- 포지션이 자동으로 보호되지 않았습니다.
- 매 실행마다 수동으로 실행해야 했습니다.
- 단 한 번의 시장 격차로 모든 이익이 사라질 수 있었습니다.
구현된 수정 사항
daily-trading.yml에 자동 단계 추가:
- name: Set Trailing Stop-Loss Orders (Phil Town Rule 1)
if: success()
env:
ALPACA_API_KEY: ${{ secrets.ALPACA_PAPER_KEY }}
ALPACA_SECRET_KEY: ${{ secrets.ALPACA_PAPER_SECRET }}
run: |
python3 scripts/set_trailing_stops.py
강화된 핵심 규칙
- 규칙 #1: 돈을 잃지 말라.
- 규칙 #2: 규칙 #1을 잊지 말라.
우리 시스템은 다음과 같이 두 규칙을 모두 위반하고 있었습니다:
- 보호 없이 이익을 보유하고 있었음.
- 스톱‑로스 대신 희망에 의존하고 있었음.
교훈
- 위험 보호 스크립트는 수동 실행을 요구한다면 무용지물이다.
- 모든 위험 관리 도구는 생성 즉시 자동 CI/CD 워크플로에 통합되어야 한다.
system_state.json에trailing_stops섹션이 존재하는지 확인하는 검증 단계를 추가하라.
Tags: trailing_stops, risk_management, phil_town, rule_1, automation_gap, ci_integration
이 교훈은 우리 AI 트레이딩 저장소에서 자동으로 게시되었습니다.
More lessons: rag_knowledge/lessons_learned