일반 트레이더에게 Polymarket 의 단기 마켓은 단순해 보입니다:
5분 후에 비트코인이 더 오를까요, 내릴까요?
하지만 트레이딩 봇은 완전히 다른 문제를 바라봅니다.
봇은 기초 자산 가격, 만기까지 남은 시간, 양쪽의 유동성, 관련 마켓, 그리고 자체 실시간 포지션을 동시에 추적합니다:
- 제 텔레그램 채널을 구독해주세요✍️🤫: https://t.me/+VDXq5wkZ2AIxMDBi

지갑 링크: https://polymarket.com/@bonereaper?via=dan-kwpx
사람이 아직 Up 을 살지 Down 을 살지 결정하는 동안, 봇은 이미 다음 작업을 마쳤을 수도 있습니다:
**> 새로운 가격 신호 수집 > 결과 재평가 > 계약 가격과 비교 > 인접 마켓 확인 > 여러 지정가 주문 제출 > 전체 포지션 재구성**
이런 방식으로 일부 시스템은 작은 가격 차이를 일일 수익 $1,000 이상으로 전환합니다.
저는 Polymarket 의 단기 암호화폐 Up/Down 마켓에서 1,000개 이상의 봇과 1,000만 건 이상의 실행 내역을 Claude를 통해 분석했습니다.
처음에는 트레이딩이 완전히 혼란스러워 보입니다. 동일한 지갑이 Up 을 매수하고, 몇 초 후에 Down 을 추가하며, 첫 번째 포지션의 일부를 매도하고, 마켓을 두 결과 모두 보유한 상태로 마감합니다.
하지만 전체 트레이딩 라이프사이클을 재구성하면, 노이즈가 이해되기 시작합니다. 그 아래에는 대개 매우 구체적인 시스템이 존재합니다.
전체 메커니즘은 이렇게 작동합니다 👇
1. Polymarket 에서 트레이딩 봇이 사용되는 이유
봇의 주요 장점은 완벽한 비트코인 예측에 있지 않습니다.
그 장점은 속도, 일관성, 그리고 사람이 현실적으로 동시에 모니터링할 수 있는 것보다 더 많은 정보를 처리하는 능력에서 비롯됩니다:

지갑 링크: https://polymarket.com/@0xb55fa1296e6ec55d0ce53d93b9237389f11764d4-1777575277609?via=dan-kwpx
단기 계약의 가격은 단순히 비트코인이 현재 Up 으로 움직이는지 Down 으로 움직이는지에 의해서만 결정되지 않습니다.
알고리즘은 다음 사항도 고려해야 합니다:
**> 시작 가격과의 거리 > 최근 움직임의 속도 > 남은 시간 > 현재 변동성 > 호가창 깊이 > Up 과 Down 의 가격 > 관련 마켓 전반의 행동 > 결산에 사용된 정확한 피드**
5분 마켓에서 실제 기회는 단 몇 초 동안만 존재할 수 있습니다.
사람이 여전히 차트 사이를 전환하는 동안, 다른 알고리즘은 이미 사용 가능한 유동성을 확보하고 주문을 교체하고 있을 수 있습니다.
대부분의 트레이딩 봇은 다섯 가지 핵심 구성 요소를 기반으로 구축됩니다:
- 데이터 레이어 - 외부 가격 및 호가창 업데이트 스트리밍
- 시그널 엔진 - 결과에 영향을 미칠 수 있는 변화 감지
- 확률 모델 - 독립적인 공정 확률 계산
- 실행 엔진 - 주문 제출, 취소 및 조정
- 리스크 관리자 - 포지션 크기 통제 및 사전 정의된 한도 초과 거래 차단
봇이 호가창에서 직접 계산할 수 있는 신호 중 하나는 매수자와 매도자 물량 간의 불균형입니다:
1def orderbook_imbalance(bids, asks):2 bid_volume = sum(size for price, size in bids)3 ask_volume = sum(size for price, size in asks)45 total_volume = bid_volume + ask_volume67 if total_volume == 0:8 return 0.0910 return (11 bid_volume - ask_volume12 ) / total_volume1314bids = [15 (0.48, 1_250),16 (0.47, 920),17 (0.46, 680)18]1920asks = [21 (0.49, 640),22 (0.50, 510),23 (0.51, 430)24]2526imbalance = orderbook_imbalance(bids, asks)2728print(f"Order-book imbalance: {imbalance:.2%}")
양수 값은 분석된 호가창 구간에 매수자 물량이 더 많다는 것을 의미합니다. 음수 값은 매도자 물량이 더 크다는 것을 의미합니다. 이 신호만으로는 가격이 움직일 것이라고 증명하지 않습니다.
대량 주문은 취소될 수 있으며, 최우선 호가에서 멀리 떨어진 유동성은 실행에 영향을 미치지 않을 수 있습니다.
하지만 비트코인의 움직임, 남은 시간, 외부 가격 피드와 결합하면, 더 강력한 신호의 일부가 됩니다.
봇이 유용한 이유는 모든 시장 움직임을 자동으로 거래하기 때문이 아닙니다. 강력한 시스템은 대부분의 설정을 포지션으로 전환하기 전에 거부함으로써 우위를 확보합니다.
2. 신호 수신 후, 봇은 베이즈 정리로 확률을 업데이트합니다 🧮
Up 이 41¢ 에 거래되고 있다고 가정해 보겠습니다.
비트코인이 갑자기 가속하고, 거래량이 증가하며, 호가창이 더 강한 매수 압력을 보이기 시작합니다.
사람은 이렇게 생각할 수 있습니다:
이 움직임은 강력해 보인다.
Up
이 저평가되었을 수도 있다
알고리즘은 더 정확한 답이 필요합니다:
이 신호가
Up
의 확률을 정확히 얼마나 변화시켰는가?
바로 여기에 베이즈 정리가 사용됩니다.

지갑 링크: https://polymarket.com/@0xce25e214d5cfe4f459cf67f08df581885aae7fdc-1777575398144?via=dan-kwpx
베이즈 정리는 모델이 기존 확률에서 시작하여 새로운 증거를 수신한 후 이를 업데이트할 수 있게 해줍니다.
공식은 다음과 같습니다:
P(Up | 신호) = P(신호 | Up) × P(Up) / [P(신호 | Up) × P(Up) + P(신호 | Down) × P(Down)]
여기서:
P(Up)
*은 새로운 신호 이전의 확률 *
P(신호 | Up)
*은 Up 결과 이전에 이 신호가 나타나는 빈도 *
P(신호 | Down)
*은 Down 결과 이전에 이 신호가 나타나는 빈도 *
P(Up | 신호)
는 업데이트된 확률
가정해 보겠습니다:
*의 원래 확률은 41% 이 신호는 역사적 *
Up
* 시나리오의 64%에서 나타남 동일한 신호는 *
Down
시나리오의 35%에서 나타남
1def bayes_update(2 prior_up,3 signal_given_up,4 signal_given_down5):6 numerator = signal_given_up * prior_up78 denominator = (9 numerator10 + signal_given_down * (1 - prior_up)11 )1213 return numerator / denominator1415prior = 0.411617posterior = bayes_update(18 prior_up=prior,19 signal_given_up=0.64,20 signal_given_down=0.3521)2223print(f"Previous probability: {prior:.2%}")24print(f"Updated probability: {posterior:.2%}")
업데이트된 추정치는 약 56%입니다. 계약이 여전히 41¢ 에 거래되고 있다면, 봇은 측정 가능한 차이를 봅니다:
*내부 공정 가치 - 56% 시장 가격 - 41¢ 이론적 우위 - 15% 포인트*
사람에게는 이것이 강력한 거래 아이디어처럼 보일 수 있습니다. 봇에게는 공정 가치와 현재 시장 가격 사이의 특정 차이일 뿐입니다.
하지만 베이즈 정리는 예측을 위한 지름길이 아닙니다.
모델이 약한 신호에 너무 많은 가중치를 부여하거나 동일한 정보를 여러 번 계산하면 결과는 지속적으로 왜곡됩니다.
가격 움직임, 거래량 증가, 호가창 불균형은 동일한 사건의 세 가지 효과일 뿐인데도 세 가지 별개의 확인처럼 보일 수 있습니다.
강력한 모델은 이러한 중복을 고려해야 합니다.
3. 잘못 가격이 책정된 계약이 자동으로 수익성 있는 거래가 되는 것은 아닙니다
모델이 Up 을 56%로 평가하더라도 41¢ 에 매수한다고 해서 자동으로 수익이 창출되는 것은 아닙니다.
실제 실행에는 다음이 포함됩니다:
*> 테이커 수수료 > 매수-매도 호가 스프레드 > 슬리피지 > 부분 체결 > 가격 악화 > 모델 불확실성*
따라서 봇은 순 우위 - 포지션이 실제로 실행된 후 남는 이점 - 를 계산합니다.
1def calculate_net_edge(2 model_probability,3 execution_price,4 fee,5 slippage,6 safety_buffer7):8 gross_edge = (9 model_probability - execution_price10 )1112 net_edge = (13 gross_edge14 - fee15 - slippage16 - safety_buffer17 )1819 return gross_edge, net_edge2021gross, net = calculate_net_edge(22 model_probability=0.56,23 execution_price=0.47,24 fee=0.017,25 slippage=0.005,26 safety_buffer=0.01027)2829print(f"Gross edge: {gross:.2%}")30print(f"Net edge: {net:.2%}")
원래 9% 포인트 차이는 비용을 고려한 후 약 6% 포인트로 줄어듭니다.
유동성이 제한적이라면, 봇은 47¢ 에서 포지션의 일부만 체결될 수 있습니다. 나머지 물량은 더 높은 가격에 매수해야 할 수도 있습니다.
전체 포지션이 구축되기 전에 우위가 사라질 수 있습니다. 동일한 논리가 바이너리 차익거래에도 적용됩니다.
모든 비용을 고려했을 때 동일한 수량의 Up 과 Down 을 $1 미만에 확보할 수 있다면, 한쪽은 결국 $1을 지급하게 됩니다.
하지만 시스템은 호가창 상단에 보이는 가장 매력적인 가격이 아닌, 실제 거래량 가중 평균 실행 가격을 사용해야 합니다.
이것이 바로 깔끔한 백테스트와 실시간 실행이 종종 매우 다른 결과를 내는 지점입니다. 사람은 비정상적인 가격을 알아차립니다. 봇은 시장 비용을 포함한 후에도 충분한 가치가 남아 있음을 증명해야 합니다.
4. 최고의 우위는 종종 관련 마켓 사이에 존재합니다 🕸
단기 계약은 독립적으로 움직이지 않습니다.
비트코인의 한 번 움직임은 다음 모든 항목에 영향을 미칠 수 있습니다:
> 현재
BTC
* 5분 윈도우 > 다음 5분 윈도우 > *
BTC
* 15분 > *
BTC
* 1시간 > 관련 *
ETH
및
SOL
마켓
하지만 이러한 마켓이 항상 동일한 속도로 업데이트되는 것은 아닙니다.
각 계약에는 고유한 호가창, 유동성, 시작 레벨 및 참여자가 있습니다.
예를 들어:
>
BTC
* 5분은 즉시 재평가될 수 있음 > *
BTC
* 15분은 예상보다 덜 반응할 수 있음 > 인접 윈도우는 이전 호가창 불균형을 유지할 수 있음 > 한 계약은 비싸질 수 있음 > 다른 계약은 구식 가정 하에 계속 거래될 수 있음*

지갑 링크: https://polymarket.com/@flippingsharks?via=dan-kwpx
봇은 관련 마켓 간의 차이가 정상 범위를 벗어났는지 측정합니다.
간단한 도구 중 하나는 z-점수입니다:
Z = (현재 스프레드 − 평균 스프레드) / 표준 편차
1def spread_zscore(2 current_spread,3 average_spread,4 spread_deviation5):6 return (7 current_spread - average_spread8 ) / spread_deviation910z = spread_zscore(11 current_spread=0.112,12 average_spread=0.036,13 spread_deviation=0.02514)1516print(f"Spread z-score: {z:.2f}")
3 이상의 수치는 현재 차이가 모델이 일반적으로 관찰하는 범위를 훨씬 벗어났음을 의미합니다.
그렇다고 해서 자동으로 거래가 생성되는 것은 아닙니다. 한 마켓이 진정으로 지연되고 있을 수 있습니다. 또는 먼저 움직인 마켓이 인접 계약이 아직 처리하지 못한 정보를 이미 통합했을 수도 있습니다.
봇은 또한 BTC 5분과 BTC 15분을 Up 가격만 보고 비교할 수 없습니다.
시작 레벨과 남은 시간이 다릅니다.
진지한 시스템은 각 계약이 자체 공정 가치 모델에서 얼마나 멀리 벗어났는지 비교합니다.
사람은 하나의 마켓을 관찰합니다. 봇은 연결된 확률 네트워크를 관찰하고 일시적으로 나머지와 멀어진 부분을 식별합니다.
5. 봇이 우위를 포지션으로 전환하는 다섯 가지 방법 🔄
신호가 확인되고, 확률이 업데이트되었으며, 순 우위가 여전히 양수로 남아 있으면, 가장 흥미로운 단계가 시작됩니다.
봇은 포지션을 구축하고 관리하는 방법을 결정해야 합니다.
개별 실행을 완전한 거래 주기로 그룹화한 후, 다섯 가지 반복적인 모델이 나타났습니다.
1️⃣ 동적 포지션 로테이션
이 시스템은 지속적으로 관점을 업데이트하며 동일한 계약 내에서 여러 번 방향을 바꿀 수 있습니다. 5분 마켓 시작 시 모델이 Up 이 저평가되었다고 판단한다고 가정해 보겠습니다.
지정가 주문을 통해 Up 을 축적하기 시작합니다.
그런 다음 상황이 바뀝니다:
비트코인
* 의 모멘텀이 상실됨 가격이 시작 레벨 쪽으로 되돌아감 호가창에서 매수자가 사라짐 모델의 *
Up
확률이 하락함
봇은 결산까지 원래 포지션을 보유할 필요가 없습니다. Up 의 일부를 매도하고, 나머지 주문을 취소하고, Down 을 축적하기 시작할 수 있습니다.
마켓이 다시 변하면 포지션을 다시 구축할 수 있습니다. 목표는 첫 번째 시도에서 최종 결과를 완벽하게 식별하는 것이 아닙니다.
목표는 모델의 업데이트된 추정치보다 현재 가격이 낮은 쪽에 더 많이 노출되는 것입니다.
이 접근 방식의 강점은 봇이 구식 관점을 즉시 포기할 수 있다는 것입니다.
주요 약점은 반복적인 잘못된 반전입니다.
변동성이 큰 윈도우 동안 시스템은 다음과 같이 행동할 수 있습니다:
상승 후
Up
* 매수 되돌림 후 축소 *
Down
* 으로 전환 다음 상승 후 *
Down
축소
실행 비용과 반복적인 포지션 변경은 원래의 이점을 점차적으로 제거할 수 있습니다.
따라서 로테이션 봇은 새로운 신호가 기존 포지션 청산, 재구축 및 잠재적 재실패 비용을 충당할 만큼 강력할 때만 방향을 전환해야 합니다:

지갑 링크: https://polymarket.com/@trinity42?via=dan-kwpx
2️⃣ 시간적 차익거래
전통적인 차익거래는 Up 과 Down 을 동시에 $1 미만에 매수할 수 있을 때 발생합니다.
시간적 차익거래는 두 측면을 서로 다른 시점에 구축합니다. 마켓 오픈 직후 비트코인이 급등한다고 상상해 보세요.
Down 이 26¢로 떨어지고, 봇은 평균 가격 27.4¢로 750계약을 점진적으로 축적합니다. 2분 후, 비트코인은 상승분의 대부분을 반납하고 시작 레벨에 가깝게 거래됩니다.
이제 Up 이 더 저렴해지고, 봇은 평균 가격 49.8¢ 로 750 Up 을 매수합니다.
최종 구조는 다음과 같습니다:
*750 Down at 27.4¢ 750 Up at 49.8¢ 완전한 쌍당 총 비용 - 77.2¢*
최종 결과에 관계없이, 각 쌍의 한 계약은 $1을 지급합니다. 이는 수수료와 실행 비용 전에 쌍당 22.8¢의 총 마진을 창출합니다. 핵심 세부 사항은 27.4¢의 Down 과 49.8¢의 Up 이 동시에 사용 가능한 적이 없었다는 점입니다.
봇은 두 가지 다른 시장 상태에서 차익거래를 창출했습니다. 그러나 첫 번째 매수는 여전히 방향성 리스크에 노출되어 있습니다.
비트코인이 계속 상승하면, 봇은 쌍을 완성할 만큼 매력적인 Up 가격을 결코 받지 못할 수 있습니다.
그러면 계속 가치가 하락하는 750 Down 계약을 보유하게 됩니다.
따라서 시스템은 다음을 추적합니다:
*각 측면에 보유한 수량 두 결과의 평균 비용 이미 보호된 인벤토리 비용 페어링되지 않은 방향성 포지션 규모 두 번째 측면을 기다릴 수 있는 최대 시간*
일부 봇은 더 작은 블록으로 구조를 구축합니다.
100 Down 을 매수하고, 100 Up 을 추가할 수 있을 때까지 기다렸다가 첫 번째 보호 쌍을 완성한 후에야 계속해서 규모를 늘릴 수 있습니다.
이는 최대 잠재 수익을 감소시키지만, 대규모 단방향 포지션에 갇힐 위험도 제한합니다.
시간적 차익거래는 양방향으로 의미 있는 움직임이 여러 번 있는 마켓에서 가장 잘 수행됩니다.
장기간의 단방향 움직임은 가장 어려운 환경입니다:

지갑 링크: https://polymarket.com/@garvy?via=dan-kwpx
3️⃣ 인벤토리 마켓 메이킹 봇
이 시스템은 단일 포지션을 관리하지 않습니다. 전체 계약 인벤토리를 관리합니다.
다음을 거래할 수 있습니다:
*BTC, ETH 및 SOL 5분, 15분, 1시간 및 4시간 마켓 여러 윈도우에 걸친 Up 및 Down 모두*
봇은 소량으로 매수 및 매도하면서 인벤토리의 총 비용을 지속적으로 추적합니다. 한 계약의 양쪽을 축적했다고 가정해 보겠습니다. 만기가 가까워지면 Down 이 확실한 선호가 되어 98¢로 이동합니다.
단순히 결산을 기다리는 대신, 봇은 다음을 수행할 수 있습니다:
*비싼 Down 인벤토리의 일부 매도 결제 전에 자본 확보 주 포지션의 나머지 유지 2¢에 소량의 Up 매수 사용 가능한 자본을 다른 마켓으로 이동*
저가 측면을 매수하는 것은 처음에는 이례적으로 보일 수 있습니다.
하지만 1~2¢의 소액 포지션은 갑작스러운 최종 움직임에 대한 저렴한 보호 장치 역할을 할 수 있습니다. 변화가 없으면 비용은 제한적입니다. 비트코인이 예상치 못하게 시작 레벨을 넘으면, 소액 Up 포지션이 다른 곳의 손실 일부를 상쇄할 수 있습니다.
인벤토리 봇은 또한 관련 마켓 간의 차이를 활용할 수 있습니다.
한 계약은 좋은 진입 가격을 제공할 수 있습니다. 다른 계약은 청산을 위한 더 깊은 유동성을 제공할 수 있습니다. 세 번째 계약은 반대 측면을 비정상적으로 낮은 가격에 제공할 수 있습니다.
주요 과제는 전체 인벤토리의 평균 비용입니다.
평균 Up 비용이 56¢이고 평균 Down 비용이 49¢라면, 하나의 보호 쌍 비용은 $1.05입니다.
결산은 $1만 지급합니다.
이 5센트 차이를 회수하려면 시스템은 비싼 인베토리 매도, 통제된 방향성 불균형 유지, 메이커 리베이트 획득 또는 마켓 간 자본을 더 효율적으로 이동하여 추가 이득이 필요합니다:

지갑 링크: https://polymarket.com/@polkadot-frog?via=dan-kwpx
4️⃣ 헤지드 방향성 봇
이 구조는 순수 차익거래와 완전 방향성 포지션 사이에 있습니다.
봇이 다음을 보유하고 있다고 가정해 보겠습니다:
*280 Up 257 Down*
처음 257 Up 과 257 Down 은 보호된 베이스를 형성합니다. 최종 결과에 관계없이, 이 블록의 한쪽은 $257을 지급합니다. 나머지 23 Up 계약은 방향성 편향을 만듭니다.
Up 이 최종 결과가 되면, 해당 추가 계약은 지급액을 증가시킵니다. Down 이 최종 결과가 되면, 반대 포지션이 대부분의 익스포저를 커버합니다.
시스템은 효과적으로 다음과 같이 말하고 있습니다:
내 모델은 현재 Up을 선호하지만, 전체 포지션을 하나의 결과에 의존시키고 싶지는 않다.
불균형의 크기는 마켓 전체에 걸쳐 변경될 수 있습니다. 신뢰도가 높아지면 봇은 더 많은 Up 을 추가합니다. 신호가 약해지면 Up 을 줄이거나 추가 Down 을 매수합니다.
양쪽을 모두 보유한다고 해서 자동으로 구조가 효율적인 것은 아닙니다.
보호된 쌍이 $1 이상에 구축된 경우, 보장된 마이너스 마진이 발생합니다.
평균 쌍 비용이 $1.04라고 가정해 보겠습니다. 추가 23 Up 계약은 먼저 보호된 베이스의 손실과 수수료 및 슬리피지를 회수해야 합니다.
그 후에야 전체 포지션이 수익성을 갖게 됩니다.
어떤 경우에는 값비싼 헤지가 더 작은 방향성 포지션을 유지하는 것보다 덜 효율적입니다:

지갑 링크: https://polymarket.com/@uuddlrlr?via=dan-kwpx
5️⃣ 후기 결산 캡처 봇
마지막 모델은 마켓의 마감 단계에 거의 전적으로 집중합니다.
하나의 결과가 결정에 가까워지면, 가능한 최종 측면은 여전히 98~99¢에 거래될 수 있습니다. 봇은 남은 사용 가능한 물량을 매수하고 $1 지급을 기다립니다.
예를 들어:
*진입가 98.6¢ 지급액 $1 계약당 총 이익 - 1.4¢*
각 작업의 수익은 작기 때문에 시스템은 많은 수의 마켓을 스캔하고 상당한 물량을 사용합니다.
이 전략은 매우 예측 가능해 보일 수 있지만, 수익 프로필은 매우 고르지 않습니다.
99번의 작업이 각각 1센트를 벌고 하나의 99¢ 포지션이 잘못 결산되면, 이전 이익이 사라질 수 있습니다.
그 한 번의 잘못된 실행은 다음으로 인해 발생할 수 있습니다:
*날카로운 마지막 순간의 움직임 가격 피드 간의 차이 잘못된 시작 레벨 지연된 결산 업데이트 마켓 규칙에 대한 오해 너무 오래 활성 상태로 남아 있는 주문*
따라서 후기 결산 시스템은 속도 이상의 것이 필요합니다.
어떤 피드가 결과를 결정하는지, 현재 가치가 계약 경계에서 얼마나 떨어져 있는지 정확히 알아야 합니다.
최종 포지션 구조는 프로그래밍 방식으로 분석될 수 있습니다.
1def inspect_position(2 up_quantity,3 down_quantity,4 up_average_price,5 down_average_price6):7 protected_pairs = min(8 up_quantity,9 down_quantity10 )1112 directional_up = max(13 up_quantity - down_quantity,14 015 )1617 directional_down = max(18 down_quantity - up_quantity,19 020 )2122 pair_cost = (23 up_average_price24 + down_average_price25 )2627 return {28 "protected_pairs": protected_pairs,29 "extra_up": directional_up,30 "extra_down": directional_down,31 "average_pair_cost": pair_cost,32 "pair_margin": 1 - pair_cost33 }3435position = inspect_position(36 up_quantity=280,37 down_quantity=257,38 up_average_price=0.51,39 down_average_price=0.4640)4142print(position)
하지만 최종 스냅샷만으로는 완전한 전략을 알 수 없습니다.
시스템을 이해하려면 포지션이 어떻게 구축되었는지, 어떤 부분이 매도되었는지, 평균 비용이 시간이 지남에 따라 어떻게 변했는지 알아야 합니다.
6. 잘못된 가격을 찾는 것만으로는 충분하지 않습니다 — 봇은 여전히 이를 포착해야 합니다 🎯
봇이 Up 과 Down 을 합쳐 94¢에 매수할 기회를 찾았다고 가정해 보겠습니다. 두 주문을 모두 제출합니다. Up 이 완전히 체결됩니다.
Down 이 체결되기 전에 마켓이 움직이고, 사용 가능한 유동성이 사라지며, 두 번째 측면이 더 비싸집니다.
차익거래는 더 이상 존재하지 않습니다.
봇은 이제 공개 방향성 Up 포지션을 보유하고 있습니다.
이것이 인벤토리 리스크입니다.
강력한 시스템은 단순히 비정상적인 가격을 식별할 수 없습니다. 전체 실행 프로세스를 관리해야 합니다.
다음을 결정해야 합니다:
*두 번째 측면을 얼마나 기다릴지 지정가 주문을 조정할 시기 어느 정도의 불균형이 허용 가능한지 메이커로 남을 시기와 테이커로 실행할 시기 우위가 사라진 후 첫 번째 측면을 줄일지 여부*
이를 처리하는 한 가지 방법은 Avellaneda–Stoikov 모델에서 영감을 받은 논리를 사용하는 것입니다.
핵심 아이디어는 간단합니다. 허용 가능한 호가는 이미 보유한 인벤토리에 따라 변경되어야 한다는 것입니다.
간소화된 공식은 다음과 같습니다:
유보 가격 = 공정 가격 − 인벤토리 × 리스크 × 변동성² × 시간
1def reservation_price(2 fair_price,3 inventory,4 risk_aversion,5 volatility,6 time_remaining7):8 inventory_adjustment = (9 inventory10 * risk_aversion11 * volatility ** 212 * time_remaining13 )1415 return fair_price - inventory_adjustment1617quote = reservation_price(18 fair_price=0.57,19 inventory=0.40,20 risk_aversion=0.80,21 volatility=0.18,22 time_remaining=0.2523)2425print(f"Inventory-adjusted quote: {quote:.3f}")
봇이 이미 너무 많은 Up 을 보유하고 있다면, 추가 Up 을 매수하려는 의지가 줄어들어야 합니다.
동시에 불균형을 줄이기 위해 Down 을 확보할 때는 더 공격적으로 변할 수 있습니다.
주문 유형도 중요합니다:
GTC
*는 체결되거나 취소될 때까지 활성 상태 유지 *
GTD
*는 지정된 시간에 만료 *
FOK
*는 완전히 체결되거나 취소됨 *
FAK
*는 사용 가능한 수량을 체결하고 나머지는 취소 *
Post-only
는 주문이 유동성을 추가하도록 보장
5분 마켓에서 실행 품질은 초기 예측보다 더 중요할 수 있습니다.
모델이 적정 가치를 정확하게 추정하더라도, 포지션이 너무 느리게 구축되거나 비효율적인 평균 가격에 체결되면 손실을 볼 수 있습니다.
7. 마지막 단계는 포지션 사이징과 자본 보호입니다 🛡
강력한 우위가 있다고 해서 사용 가능한 모든 자본을 하나의 시장에 할당해서는 안 됩니다.
다음과 같은 가능성이 항상 존재합니다:
*모델이 신호를 과대평가했거나 두 번째 호가가 체결되지 않거나 유동성이 사라지거나 평균 체결 가격이 예상보다 나쁘거나 여러 상관관계가 있는 포지션이 동시에 손실을 보는 경우*
포지션 사이징의 일반적인 출발점은 Kelly 기준입니다.
공식은 다음과 같습니다:
f = (b × p − q) ÷ b
\*
여기서:
p
*는 성공 확률 *
q = 1 − p
*는 실패 확률 *
b
*는 위험 금액 대비 순 지급액 비율 *
f
\는 전체 Kelly 자본 비율*
실제로 많은 시스템은 결과의 일부만 사용합니다.
1def fractional_kelly(2 win_probability,3 entry_price,4 fraction=0.255):6 lose_probability = 1 - win_probability78 net_odds = (9 1 - entry_price10 ) / entry_price1112 full_kelly = (13 net_odds * win_probability14 - lose_probability15 ) / net_odds1617 return max(18 full_kelly * fraction,19 020 )2122allocation = fractional_kelly(23 win_probability=0.61,24 entry_price=0.50,25 fraction=0.2526)2728print(f"Capital allocation: {allocation:.2%}")
분할 Kelly 기준은 하나의 부정확한 모델 추정치나 좋지 않은 체결로 인해 전략에 큰 손실이 발생할 가능성을 낮춥니다.
그런 다음 시스템은 엄격한 한도를 적용합니다:
*포지션당 최대 규모 자산당 최대 익스포저 헤지되지 않은 포지션 한도 일일 손실 한도 데이터 신뢰성 상실 시 비상 종료*
상관관계도 중요합니다.
BTC 5분, BTC 15분, ETH 5분, SOL 5분은 별개의 시장처럼 보일 수 있지만, 광범위한 암호화폐 움직임이 발생하면 동시에 가치가 하락할 수 있습니다.
리스크 관리자의 역할은 모든 매력적인 기회의 규모를 최대화하는 것이 아닙니다.
그 역할은 하나의 시나리오가 시스템의 지속적인 운영 능력을 상실시키지 않도록 하는 것입니다.
8. 완전한 봇 스택의 모습 ⚙️
현대적인 Polymarket 봇은 Binance 가격과 Up 가격을 비교하는 단일 Python 스크립트가 아닙니다.
일반적으로 여러 계층에 걸쳐 작동합니다.
계층 1 - 시장 데이터
외부 가격, 공식 해결 피드, 실시간 호가창, 최근 체결 내역, 봇 자체 주문 상태.
계층 2 - 신호
가격 움직임, 거래량, 변동성, 호가 불균형, 관련 시장 간의 괴리.
계층 3 - 확률
의미 있는 새로운 정보가 도착할 때마다 모델이 공정 확률을 업데이트합니다.
계층 4 - 포지션 로직
시스템은 로테이션, 시간적 차익거래, 포지션 관리, 방향성 헤지 또는 늦은 해결 체결 중에서 선택합니다.
계층 5 - 체결 및 리스크
주문이 제출, 취소 및 조정되는 동안 포지션과 규모는 사전 정의된 한도 내에 유지됩니다.
계층 6 - 연구
Claude를 사용하여 거래 내역을 분석하고, 반복되는 구조를 식별하고, 백테스트를 작성하고, 실패한 거래 사이클을 연구합니다.
고수준 루프는 다음과 같을 수 있습니다.
1async def run_bot():2 while True:3 state = await receive_market_update()45 signal = build_signal(state)6 probability = update_probability_model(7 state,8 signal9 )1011 edge = scan_for_edge(12 state,13 probability14 )1516 if not edge["tradable"]:17 continue1819 position_plan = choose_position_model(20 state,21 edge22 )2324 orders = build_execution_plan(25 state,26 position_plan27 )2829 if risk_manager_approves(30 orders,31 state32 ):33 await send_orders(orders)
Claude는 수백만 건의 과거 체결 데이터에서 어떤 구조가 반복되는지 식별하는 데 도움을 줄 수 있습니다.
하지만 저지연 거래 루프 자체는 결정론적으로 유지되어야 합니다: 데이터 수신, 규칙 적용, 한도 확인, 주문 제출.
결론: 수익성 있는 봇은 단순히 Up 또는 Down을 선택하는 것 이상을 수행합니다
단기 시장은 단순한 방향성 계약처럼 보입니다.
수익성 있는 시스템은 훨씬 더 긴 일련의 과정을 수행합니다:
*새로운 신호 수신 확률로 변환 순 우위 확인 관련 시장 비교 포지션 구조 선택 체결 관리 리스크 제한*
일부 봇은 동일한 기간 내에 Up과 Down을 여러 번 전환합니다. 다른 봇은 서로 다른 시점에 양쪽을 모두 축적합니다. 일부는 여러 시간대에 걸쳐 대규모 포지션을 관리합니다. 다른 봇은 소액의 방향성 편향과 함께 보호된 베이스를 유지합니다.
또 다른 그룹은 해결 직전에 남은 가격 차이를 포착하는 데 집중합니다.
하지만 핵심 공식은 일반적으로 유사합니다:
*신뢰할 수 있는 데이터 독립적인 확률 추정치 비용 차감 후 우위 올바른 포지션 구조 정밀한 체결 통제된 리스크*
이러한 봇은 5분 후에 비트코인이 어디에 있을지 알지 못합니다.
단지 각 가능한 결과가 현재 가치가 얼마인지 계산하는 데 더 빠를 뿐입니다.
제 글을 봐주셔서 감사합니다. 피드백을 주시면 감사하겠습니다!
X에서 팔로우해주세요✌️: https://x.com/Dan1ro0**
더 많은 정보를 위해 제 Telegram에 가입하세요**✍️: https://t.me/+VDXq5wkZ2AIxMDBi





