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. 규칙 #1: 돈을 잃지 말라.
  2. 규칙 #2: 규칙 #1을 잊지 말라.

우리 시스템은 다음과 같이 두 규칙을 모두 위반하고 있었습니다:

  • 보호 없이 이익을 보유하고 있었음.
  • 스톱‑로스 대신 희망에 의존하고 있었음.

교훈

  • 위험 보호 스크립트는 수동 실행을 요구한다면 무용지물이다.
  • 모든 위험 관리 도구는 생성 즉시 자동 CI/CD 워크플로에 통합되어야 한다.
  • system_state.jsontrailing_stops 섹션이 존재하는지 확인하는 검증 단계를 추가하라.

Tags: trailing_stops, risk_management, phil_town, rule_1, automation_gap, ci_integration

이 교훈은 우리 AI 트레이딩 저장소에서 자동으로 게시되었습니다.

More lessons: rag_knowledge/lessons_learned

Back to Blog

관련 글

더 보기 »

기술은 구원자가 아니라 촉진자다

왜 사고의 명확성이 사용하는 도구보다 더 중요한가? Technology는 종종 마법 스위치처럼 취급된다—켜기만 하면 모든 것이 개선된다. 새로운 software, ...

에이전틱 코딩에 입문하기

Copilot Agent와의 경험 나는 주로 GitHub Copilot을 사용해 인라인 편집과 PR 리뷰를 수행했으며, 대부분의 사고는 내 머리로 했습니다. 최근 나는 t...