rss2.pub

PyTorchKR - 최신 글

@discuss_pytorch_kr_lat_4uf2xvk@beta.rss2.pub

Stonkfly: LLM 없이 초파리 커넥톰 16만 뉴런이 매매를 제안하는 실험 (수익성은 미검증)

Stonkfly 소개

자동 매매 도구는 판단을 만드는 자리가 대체로 정해져 있습니다. 가격과 거래량을 숫자로 받아 사람이 설계한 지표와 규칙으로 방향을 정하거나, 최근에는 그 숫자와 뉴스를 대규모 언어 모델(LLM)에 넘겨 매수와 매도를 고르게 합니다. 어느 쪽이든 판단의 출처는 사람이 쓴 규칙이거나 대규모 텍스트로 학습한 모델이고, 방금 낸 주문의 이유를 되짚으면 결국 사람이 적어 둔 조건이나 모델의 출력으로 돌아갑니다. 이번에 소개하는 Stonkfly는 그 자리에 전혀 다른 것을 끼워 넣어 본 실험으로, 초파리의 뇌 배선을 그대로 옮긴 스파이킹 신경망(Spiking Neural Network)이 매수와 매도, 관망 중 하나를 제안하고 그 제안이 실제 거래소 주문까지 이어지는 프로젝트입니다.

Stonkfly는 Coinbase Advanced의 공개 시세로 320x180 크기의 가격 차트를 로컬에서 직접 그린 뒤, 그 차트의 RGB 픽셀만 신경망에 넣습니다. 가격 숫자도, 이동평균 같은 지표도, 잔고와 손익도 들어가지 않습니다. 픽셀은 MaleCNS v1.0 커넥톰(Connectome)에서 가져온 166,700개 뉴런과 25,582,938개 연결 중 시각 수용체 자리를 자극하고, 스파이크는 그 그래프를 타고 퍼집니다. 마지막에 고정된 판독기가 좌우 DNp20 뉴런의 발화율 차이를 읽어 매수와 매도, 관망 중 하나를 고르며, 별도의 주문 가드가 한도와 시세 신선도를 검사한 뒤 Coinbase AgentKit ( Coinbase, AI 에이전트를 위한 블록체인 통합 프레임워크 AgentKit 공개 (Python & TypeScript))의 ActionProvider 인터페이스를 통해 현물 주문을 냅니다. AgentKit이 기본으로 제공하는 온체인 지갑 스왑은 쓰지 않고, 주문은 Coinbase Advanced 거래소 API로만 나갑니다. 저장소는 자금이 들어 있거나 누군가의 계정에 연결된 상태로 배포되지 않으며, 실거래에는 사용자가 직접 준비한 자격 증명과 명시적인 동의가 필요합니다.

Stonkfly는 Python 3.11과 C++17 컴파일러를 요구하는 파이썬 프로젝트로, 그래프 적분은 직접 작성한 네이티브 커널이 담당합니다. 개발자 nftechie가 같은 커넥톰으로 Doom을 플레이하게 만든 DOOMFLY에서 커넥톰 임포터와 스파이킹 커널, 가소성 구현을 가져왔고, 거래 환경과 주문 가드, AgentKit 연결을 새로 얹었습니다. Stonkfly는 수익이 나는 학습이 입증되지 않았다는 사실을 README 첫 문단에서 스스로 명시하고 있으며, 시냅스(Synapse) 효능이 변한다는 것이 곧 매매를 학습했다는 뜻은 아니라고 docs/model.md에서 반복해 적고 있습니다.

본 게시물은 초파리 커넥톰 시뮬레이션을 거래 환경에 연결한 실험 프로젝트의 구조와 안전장치를 소개하는 글로, PyTorchKR은 이번 글을 통해 인공지능 기술이 금융 분야에서 어떻게 활용될 수 있는지 가능성과 그 방법에 대한 소개를 하는 것을 목적으로 합니다. 즉, 어떠한 경우에도 PyTorchKR 및 이 게시물은 투자를 권유, 제안, 또는 추천하려는 목적으로 작성한 것이 아님을 알려드리며, 투자에 대한 조언을 구성하지 않습니다.

Stonkfly와 DOOMFLY 비교

Stonkfly의 위치를 가장 정확히 보여주는 비교 대상은 같은 개발자가 먼저 공개한 DOOMFLY입니다. 두 프로젝트는 같은 MaleCNS v1.0 그래프를 쓰고, 뉴런 수와 연결 수가 같으며, 감각 입력의 규모도 3,335개의 R1부터 R6까지의 밝기 입력과 811개의 R8 색 입력으로 동일합니다. 바뀐 것은 뇌가 무엇을 보고 무엇을 움직이는가, 그리고 무엇을 되먹임으로 받는가입니다:

프로젝트 감각 입력 출력 해석 강화 신호 가소성 대상 DOOMFLY ViZDoom 게임 프레임 DNp20 좌우 차이는 회전, DNpe017은 이동과 발사 치명상이 아닌 피해가 PPL101 2개에 200ms 혐오 입력 KC에서 MBON11로 가는 기존 연결 4,184개 Stonkfly 320x180 시세 차트의 RGB 픽셀 DNp20 좌우 차이는 매수와 매도, DNpe017은 게이트 평가액 증가는 PAM11 15개, 감소는 PPL101 2개에 200ms 입력 KC에서 MBON07과 MBON11로 가는 기존 연결 7,835개

가소성 대상이 4,184개에서 7,835개로 늘어난 것은 보상 구획이 하나 추가됐기 때문입니다. DOOMFLY는 피해라는 부정적 신호만 다루면 됐지만, 거래에는 이익과 손실이 모두 있어 Stonkfly는 보상 쪽 구획인 PAM11에서 MBON07로 가는 경로를 함께 씁니다. 프로젝트는 같은 규칙을 두 구획에 적용한 것이 검증되지 않은 자체 확장이라고 docs/model.md에 명시하고 있습니다.

LLM 기반 트레이딩 에이전트와의 차이는 더 단순합니다. TradingAgents나 Vibe-Trading처럼 언어 모델이 시장 정보를 읽고 판단을 내리는 구조와 달리, Stonkfly에서는 어떤 언어 모델도 거래를 고르지 않습니다. 매수와 매도를 정하는 것은 발화 수만 읽는 고정된 판독기 하나이고, 주문 가드는 제안을 거부할 수만 있을 뿐 다른 거래로 바꿔 놓을 수 없습니다.

Stonkfly를 사용하면 좋을 사용자

커넥톰 데이터로 대규모 스파이킹 신경망을 돌려 보고 싶거나, 신경 활동을 실제 외부 환경에 연결했을 때 무엇이 문제가 되는지 보고 싶은 연구자와 개발자에게 Stonkfly가 잘 맞습니다. Stonkfly가 모델 가정과 검증하지 못한 항목을 문서로 함께 공개해 두어서, 커넥톰 기반 시뮬레이션이 어디까지를 주장할 수 있고 어디부터가 공학적 선택인지를 구분해 읽는 연습 자료로도 쓸 수 있습니다. 감각 입력에서 가소성 규칙까지 각 단계가 별도 모듈로 분리돼 있어 한 부분만 바꿔 실험하기도 쉽습니다.

반대로 수익을 내는 자동 매매를 찾고 있는 분에게는 Stonkfly가 적절한 선택지가 아닙니다. Stonkfly가 공개한 검증 결과에는 수익이 난 전략도, 학습이 일어났다는 증거도 없습니다. 준비 단계에서 약 1.1GB의 커넥톰 데이터를 내려받고 여기에 의존성과 파생 데이터까지 더해 수 GB의 디스크와 16GB 정도의 메모리를 쓰는데, 그 비용으로 얻는 것은 거래 성과가 아니라 실행 가능한 실험 루프입니다. 지원 환경도 macOS와 Linux뿐이라 Windows 사용자는 별도 준비가 필요합니다.

Stonkfly의 동작 원리

관측 한 번은 차트를 그리는 데서 시작합니다. Stonkfly는 Coinbase의 공개 1분봉 종가로 가격 이력을 채우고 이후 관측의 중간값을 덧붙여 320x180 차트를 로컬에서 렌더링합니다. 이 차트에는 과거 가격을 꺾은선으로 이어 상승 구간과 하락 구간을 다른 색으로 칠하고, 위쪽 띠에 거래쌍 이름을, 아래쪽에 현재 호가를 적습니다. 잔고와 손익은 들어가지 않습니다. 로그인한 거래소 화면을 캡처한 것이 아니라는 뜻이기도 합니다. 초기 버전은 어두운 배경의 차트를 썼는데 KC 뉴런이 거의 반응하지 않아 밝은 배경으로 바꿨고, 프로젝트는 이때 신경 파라미터는 건드리지 않았으며 표시 방식에 대한 민감도가 검증이 필요한 큰 교란 요인으로 남아 있다고 적고 있습니다.

픽셀은 두 갈래로 들어갑니다. 3,335개의 R1부터 R6까지의 수용체가 선형 sRGB 휘도를 받고, 811개의 R8 수용체가 파랑과 초록 채널을 대리 신호로 받습니다. 수용체의 위치는 열(column) 주석이 붙은 시각 뉴런과의 접촉에서 역으로 추정한 것이며, 대응되는 수용체가 없는 자리에는 없는 입력을 지어내지 않습니다. 실제 초파리의 광수용체는 등급 전위(graded potential)로 반응하지만 Stonkfly는 스파이크를 쓰므로, 프로젝트는 이 부분을 검증된 망막 생리가 아니라 명시적인 표시 장치 어댑터라고 부릅니다.

Stonkfly가 자기 그래프를 두고 쓰는 전체 보존(full retained)이라는 말은 무엇을 남겼는가에 대한 표현입니다. 배정된 뉴런 상위분류를 불확실한 것까지 모두 남기고 명시적인 신경아교세포와 미해결 분할 객체만 제외했다는 뜻이지, 실제 초파리의 모든 시냅스가 재구성됐다는 뜻은 아니라고 프로젝트가 따로 적어 두었습니다. 약한 연결과 자기 연결도 그대로 둡니다.

네이티브 커널은 0.1ms 간격으로 누설 적분 발화(Leaky Integrate-and-Fire) 뉴런을 근사 적분합니다. 막전위 시정수 20ms, 시냅스 시정수 5ms, 발화 임계값 -45mV, 전달 지연 1.8ms, 불응기 2.2ms가 쓰이고, 아세틸콜린은 흥분성으로, GABA와 글루탐산과 히스타민은 억제성으로 배정됩니다. 시장 관측 한 번은 기본값으로 500ms의 신경 시간을 진행시키며, 실제 관측 간격은 최소 60초입니다. 프로젝트는 이 시간 압축이 실시간 초파리 생리가 아니라 의도적으로 압축한 시장 대 신경 시계라고 밝히고 있습니다.

주문 방향은 다음과 같이 결정됩니다:

신경 측정값 제안 우측 DNp20 평균 발화율에서 좌측 평균을 뺀 값이 2Hz 이상, DNpe017 스파이크가 1회 이상 매수 같은 차이가 -2Hz 이하, DNpe017 스파이크가 1회 이상 매도 그 외 관망

이 대응은 사람이 정한 인터페이스이지 매수 뉴런을 찾아낸 결과가 아닙니다. 프로젝트도 회전 방향으로 치우친 네트워크 편향이 그대로 한쪽 방향의 매수로 나타날 수 있다고 경고합니다. 판독기가 정하는 것은 방향뿐이고 어떤 자산을 볼지는 네트워크가 고르지 않습니다. 기본값은 BTC-USDC 하나이며 ETH-USDC와 SOL-USDC를 선택지로 더할 수 있는데, 여러 개를 켜면 정해진 순서대로 돌아가며 한 번에 하나씩 보여줍니다.

Stonkfly의 되먹임과 기억 규칙

거래가 체결되면 다음 관측에서 평가액이 다시 계산됩니다. 평가액은 현금에 보유 자산을 현재 매수 호가로 평가한 값을 더한 것이고, 직전 관측 대비 변화에는 체결 수수료와 미실현 손익이 모두 들어갑니다. 변화가 미국 달러에 연동된 스테이블코인인 USDC 기준으로 +0.01 이상이면 15개의 PAM11 도파민 세포에 200ms 길이의 20mV 상당 인공 전류가 들어가고, -0.01 이하면 같은 펄스가 2개의 PPL101 세포로 들어갑니다. 펄스의 크기는 이익 규모에 비례하지 않고 임계값을 넘었는지만 봅니다. 아래 그림은 관측 한 번마다 도는 이 순환을 정리한 것으로, 손익 계산에서 시작해 도파민 세포 자극과 시냅스 효능 갱신을 거쳐 다음 관측으로 돌아옵니다.

도파민 활동은 초파리의 기억 구획에 해당하는 KC에서 MBON07과 MBON11로 가는 기존 연결 7,835개의 효능을 바꿉니다. 규칙은 Huang, Luo et al., 2024의 기준선 중심 반헵 규칙을 가져온 것으로, KC 활동 뒤에 도파민이 따라오면 해당 연결이 약해지고 순서가 반대면 강해지는 쪽입니다. 가격이나 손익 값이 시냅스 가중치를 직접 고쳐 쓰는 경로는 없고, 실제 네트워크 스파이크에서 나온 발화율만 규칙에 들어갑니다. 1초짜리 적격 흔적, 1,800초 기억 감쇠, 50ms 효능 필터, 0.001 게인, 기준값 대비 0.1배에서 2배의 효능 상한은 모두 선언된 모델 선택이며 측정된 도파민 농도가 아닙니다. 파라미터와 구현은 stonkfly/neural/rule.py에 모여 있습니다.

평가액 변화는 포트폴리오 가치에 대한 피드백일 뿐, 직전 행동이 그 변화를 일으켰다는 증거가 아닙니다. 자산을 그냥 들고 있어도 양쪽 신호가 다 나올 수 있고 수수료는 손실로 계산되며, 외부 입금처럼 설명되지 않는 잔고 변화는 보상이 되는 대신 실행을 멈춥니다. 프로젝트는 통증 수용체나 주관적 고통, 쾌감, 의식은 모델링하지도 측정하지도 않는다고 명시합니다.

Stonkfly의 주문 한도와 정지 조건

Stonkfly는 실거래에서 사고를 막는 검사를 stonkfly/risk.py의 가드와 stonkfly/config.py의 설정값에 모아 두었습니다. 설정 클래스는 값 범위를 직접 검사해서, 한도를 넘는 값을 넣으면 실행 자체가 거부됩니다. 운영 절차 전반은 docs/operations.md에 정리돼 있습니다. 주요 한도는 다음과 같습니다:

  • 초기 자금과 주문 규모: 초기 자금은 최대 100 USDC, 매수 한 건은 2% 수수료 예비분을 포함해 최대 10 USDC입니다. 매도 수량은 보유량과 10 USDC 상당 중 작은 쪽으로 제한되고, 차입과 공매도, 레버리지, 출금 동작은 아예 노출되지 않습니다.

  • 빈도: UTC 하루 최대 24회 시도, 시도 사이 최소 60초입니다. 거부된 미리보기도 시도 횟수에 포함되고, 실패한 주문이 새로운 전략 선택으로 바뀌지 않습니다.

  • 가격과 시세: 가격 제한이 걸린 FOK(Fill-or-Kill) 주문을 쓰며 슬리피지는 최대 0.5%, 호가 스프레드도 0.5%까지만 허용합니다. 시세는 15초보다 오래되면 안 되고, 신경 적분이 끝난 뒤 호가를 다시 받아 관측 시점과 차이가 크면 거래를 취소합니다.

  • 손실 정지: 시작 평가액 대비 20 USDC가 줄면 새 주문을 멈춥니다. 다만 이것은 청산 명령이 아니며 보유 자산은 그대로 시장에 노출된 채로 남습니다. 프로젝트도 이 조건이 최대 손실을 보장하지 않는다고 적어 두었으니, 보유 자산을 어떻게 정리할지는 별도로 정해 두어야 합니다.

주문 식별자는 전송 전에 SQLite에 기록됩니다. 응답이 불확실하면 같은 식별자를 거래소에서 되찾아 조회하고 새 주문을 다시 보내지 않으며, 결과가 끝내 불분명하면 워커를 멈춰 사람이 확인하도록 합니다. 기본값은 모의 거래라서 키가 없어도 실제 공개 시세로 돌려볼 수 있고, 실거래는 View와 Trade 권한만 가진 포트폴리오 범위의 ECDSA 키와 환경 변수, 그리고 --live 플래그가 모두 갖춰져야 시작됩니다.

Stonkfly의 검증 결과와 한계

개발자 nftechie가 구현 시점에 기록해 docs/validation.md로 공개한 결과를 보면, 전체 커넥톰 테스트를 포함해 로컬 테스트 42개가 통과했습니다. 거래소 주문 테스트는 전부 인메모리 SDK 대역을 쓴 것이고 실제 주문이나 자금이 들어간 계정 검사는 수행되지 않았습니다. 확인된 것과 확인되지 않은 것은 항목마다 다음과 같이 나뉩니다:

검사 관측된 결과 입증하지 못하는 것 체크섬 검증된 공개 파일에서 그래프 재구축 뉴런 166,700개, 연결 25,582,938개, 접촉 124,177,617개가 잠금 파일과 일치 재구성의 완전성이나 생리학적 정확성 실행 및 단위 테스트 예산, 오래된 시세, 스프레드, 보유량, 권한, 수수료 미리보기, 정지, 쿨다운, 중복 정산, 불확실한 제출 검사 통과 특정 실계정과 지역, 수수료 등급에서의 실행 성공 전체 네트워크 감각 및 되먹임 테스트 흰색 RGB 입력이 KC를 활성화하고 보상과 혐오 펄스가 지정된 세포에서 스파이크를 일으킴 정확한 초파리 망막 반응이나 습득된 매매 연합 동일 체크포인트 대조군 보상이 있을 때와 없을 때 가중치 변화가 다르고, 기억을 고정하면 값이 그대로 유지됨 판단의 개선이나 유용한 전략의 유지 실제 공개 시세 6회 관측 모의 모드에서 매수 1건 체결, 이후 매수 제안 5건은 쿨다운으로 거부 현실적인 거래 수익이나 편향 없는 전략

마지막 행이 Stonkfly가 스스로 가장 중요한 한계로 꼽는 대목입니다. 6회 관측에서 첫 체결 이후 나온 제안이 모두 매수였고, 고정된 방향 판독기가 회로의 편향을 그대로 한쪽 노출로 바꿔 놓을 수 있다는 뜻이기 때문입니다. 같은 실행에서 KC는 관측당 11회에서 16회 발화했는데, 이는 흰 화면을 넣은 신경 테스트에서 활성화되는 KC보다 훨씬 적은 수라서 프로젝트는 시각 표현을 어떻게 만들 것인가가 아직 큰 숙제로 남아 있다고 적고 있습니다. 손실 펄스가 들어간 다음 관측에서는 2개의 PPL101 세포에서 55회의 스파이크가 관측됐습니다. 여기서 변한 후보 연결 5개는 외부 손실 펄스가 들어오기 전에 이미 바뀌어 있었고, 프로젝트는 이를 근거로 모든 가중치 변화를 손익 탓으로 돌리지 말라고 적고 있습니다.

Stonkfly는 학습을 주장하려면 무엇이 더 필요한지도 함께 적어 두었습니다. 시간 순서를 지킨 별도 구간의 시장 재현, 독립적인 시작점, 가중치를 고정한 대조군과 강화 신호를 섞은 대조군, 수수료와 슬리피지 반영, 동일한 예산, 기억 유지 확인, 학습된 가중치를 초기화했을 때 이득이 사라지는지 확인이 모두 필요합니다. 현금과 단순 보유 전략도 함께 비교해야 하는데, 가격이 오르는 구간에서는 누가 사도 잘한 것처럼 보이기 때문입니다.

Stonkfly 설치와 사용

Stonkfly 실행에는 Python 3.11과 C++17 컴파일러가 필요하며 macOS와 Linux를 지원합니다. 데이터셋과 의존성으로 수 GB의 공간이 필요하고 16GB 메모리를 권장합니다. 기본 실행은 모의 거래이므로 API 키 없이도 시작할 수 있습니다:

python3.11 -m venv .venv
source .venv/bin/activate
pip install -e '.[test]'
python -m stonkfly prepare
python -m stonkfly run

prepare 단계에서 약 1.1GB의 MaleCNS 파일을 내려받아 체크섬을 확인하고 전체 그래프를 만듭니다. 기본 실행은 실제 공개 BTC-USDC 시세를 쓰면서 체결만 100 USDC의 모의 잔고로 흉내 내며, 한쪽당 0.6%의 수수료를 적용합니다. 로그와 감각 이미지, 재개 가능한 신경 상태는 runs/paper/에 남고, Ctrl-C로 멈춘 뒤 같은 명령으로 이어서 실행할 수 있습니다.

실험으로 돌릴 때 쓰는 모드도 따로 있습니다. --fixture는 합성 시세로 오프라인 실행을 하고, --frozen은 기억 효능을 고정한 대조군을 돌립니다. 대조군은 항상 별도의 실행 디렉토리를 써야 합니다:

python -m stonkfly run --fixture --fast --frozen --steps 10 --out runs/frozen

실거래는 별도의 선택이 필요합니다. 최대 100 USDC만 넣은 전용 Coinbase Advanced 포트폴리오를 만들고, 그 포트폴리오로 범위를 제한한 ECDSA 키를 View와 Trade 권한만으로 발급한 뒤 출금 권한은 꺼 둡니다. .env.example을 .env로 복사해 키 경로와 포트폴리오 ID를 채우고 나면 다음 두 명령을 직접 실행하게 되어 있습니다:

python -m stonkfly run --live --preflight-only
python -m stonkfly run --live

앞 명령은 권한과 잔고, 주문 상태를 읽고 원장을 초기화할 뿐 주문을 넣지 않습니다. 상태 확인과 테스트 실행은 다음과 같습니다:

python -m stonkfly status
python -m pytest -q

Stonkfly의 라이선스

Stonkfly는 MIT 라이선스로 공개되어 있어 개인 및 상업적 목적으로 자유롭게 사용할 수 있습니다.

다만 함께 쓰는 구성 요소는 조건이 다릅니다. MaleCNS v1.0 데이터는 크리에이티브 커먼즈 저작자표시 4.0 조건으로 별도 배포되므로, 결과를 공개할 때는 데이터셋과 관련 논문을 인용해야 합니다. Coinbase AgentKit과 Coinbase Advanced Python SDK는 Apache-2.0으로 각 패키지의 라이선스를 그대로 따릅니다. 자세한 귀속 정보는 THIRD_PARTY.md에 정리돼 있으며, 프로젝트는 여기서 Stonkfly가 Coinbase의 공식 제품도, 보증을 받은 것도 아니라는 점을 함께 밝히고 있습니다.

Stonkfly 프로젝트 GitHub 저장소

Stonkfly: LLM 없이 초파리 커넥톰 16만 뉴런이 매매를 제안하는 실험 (수익성은 미검증)

Stonkfly 소개

자동 매매 도구는 판단을 만드는 자리가 대체로 정해져 있습니다. 가격과 거래량을 숫자로 받아 사람이 설계한 지표와 규칙으로 방향을 정하거나, 최근에는 그 숫자와 뉴스를 대규모 언어 모델(LLM)에 넘겨 매수와 매도를 고르게 합니다. 어느 쪽이든 판단의 출처는 사람이 쓴 규칙이거나 대규모 텍스트로 학습한 모델이고, 방금 낸 주문의 이유를 되짚으면 결국 사람이 적어 둔 조건이나 모델의 출력으로 돌아갑니다. 이번에 소개하는 Stonkfly는 그 자리에 전혀 다른 것을 끼워 넣어 본 실험으로, 초파리의 뇌 배선을 그대로 옮긴 스파이킹 신경망(Spiking Neural Network)이 매수와 매도, 관망 중 하나를 제안하고 그 제안이 실제 거래소 주문까지 이어지는 프로젝트입니다.

Stonkfly는 Coinbase Advanced의 공개 시세로 320x180 크기의 가격 차트를 로컬에서 직접 그린 뒤, 그 차트의 RGB 픽셀만 신경망에 넣습니다. 가격 숫자도, 이동평균 같은 지표도, 잔고와 손익도 들어가지 않습니다. 픽셀은 MaleCNS v1.0 커넥톰(Connectome)에서 가져온 166,700개 뉴런과 25,582,938개 연결 중 시각 수용체 자리를 자극하고, 스파이크는 그 그래프를 타고 퍼집니다. 마지막에 고정된 판독기가 좌우 DNp20 뉴런의 발화율 차이를 읽어 매수와 매도, 관망 중 하나를 고르며, 별도의 주문 가드가 한도와 시세 신선도를 검사한 뒤 Coinbase AgentKit ( Coinbase, AI 에이전트를 위한 블록체인 통합 프레임워크 AgentKit 공개 (Python & TypeScript))의 ActionProvider 인터페이스를 통해 현물 주문을 냅니다. AgentKit이 기본으로 제공하는 온체인 지갑 스왑은 쓰지 않고, 주문은 Coinbase Advanced 거래소 API로만 나갑니다. 저장소는 자금이 들어 있거나 누군가의 계정에 연결된 상태로 배포되지 않으며, 실거래에는 사용자가 직접 준비한 자격 증명과 명시적인 동의가 필요합니다.

Stonkfly는 Python 3.11과 C++17 컴파일러를 요구하는 파이썬 프로젝트로, 그래프 적분은 직접 작성한 네이티브 커널이 담당합니다. 개발자 nftechie가 같은 커넥톰으로 Doom을 플레이하게 만든 DOOMFLY에서 커넥톰 임포터와 스파이킹 커널, 가소성 구현을 가져왔고, 거래 환경과 주문 가드, AgentKit 연결을 새로 얹었습니다. Stonkfly는 수익이 나는 학습이 입증되지 않았다는 사실을 README 첫 문단에서 스스로 명시하고 있으며, 시냅스(Synapse) 효능이 변한다는 것이 곧 매매를 학습했다는 뜻은 아니라고 docs/model.md에서 반복해 적고 있습니다.

본 게시물은 초파리 커넥톰 시뮬레이션을 거래 환경에 연결한 실험 프로젝트의 구조와 안전장치를 소개하는 글로, PyTorchKR은 이번 글을 통해 인공지능 기술이 금융 분야에서 어떻게 활용될 수 있는지 가능성과 그 방법에 대한 소개를 하는 것을 목적으로 합니다. 즉, 어떠한 경우에도 PyTorchKR 및 이 게시물은 투자를 권유, 제안, 또는 추천하려는 목적으로 작성한 것이 아님을 알려드리며, 투자에 대한 조언을 구성하지 않습니다.

Stonkfly와 DOOMFLY 비교

Stonkfly의 위치를 가장 정확히 보여주는 비교 대상은 같은 개발자가 먼저 공개한 DOOMFLY입니다. 두 프로젝트는 같은 MaleCNS v1.0 그래프를 쓰고, 뉴런 수와 연결 수가 같으며, 감각 입력의 규모도 3,335개의 R1부터 R6까지의 밝기 입력과 811개의 R8 색 입력으로 동일합니다. 바뀐 것은 뇌가 무엇을 보고 무엇을 움직이는가, 그리고 무엇을 되먹임으로 받는가입니다:

프로젝트 감각 입력 출력 해석 강화 신호 가소성 대상 DOOMFLY ViZDoom 게임 프레임 DNp20 좌우 차이는 회전, DNpe017은 이동과 발사 치명상이 아닌 피해가 PPL101 2개에 200ms 혐오 입력 KC에서 MBON11로 가는 기존 연결 4,184개 Stonkfly 320x180 시세 차트의 RGB 픽셀 DNp20 좌우 차이는 매수와 매도, DNpe017은 게이트 평가액 증가는 PAM11 15개, 감소는 PPL101 2개에 200ms 입력 KC에서 MBON07과 MBON11로 가는 기존 연결 7,835개

가소성 대상이 4,184개에서 7,835개로 늘어난 것은 보상 구획이 하나 추가됐기 때문입니다. DOOMFLY는 피해라는 부정적 신호만 다루면 됐지만, 거래에는 이익과 손실이 모두 있어 Stonkfly는 보상 쪽 구획인 PAM11에서 MBON07로 가는 경로를 함께 씁니다. 프로젝트는 같은 규칙을 두 구획에 적용한 것이 검증되지 않은 자체 확장이라고 docs/model.md에 명시하고 있습니다.

LLM 기반 트레이딩 에이전트와의 차이는 더 단순합니다. TradingAgents나 Vibe-Trading처럼 언어 모델이 시장 정보를 읽고 판단을 내리는 구조와 달리, Stonkfly에서는 어떤 언어 모델도 거래를 고르지 않습니다. 매수와 매도를 정하는 것은 발화 수만 읽는 고정된 판독기 하나이고, 주문 가드는 제안을 거부할 수만 있을 뿐 다른 거래로 바꿔 놓을 수 없습니다.

Stonkfly를 사용하면 좋을 사용자

커넥톰 데이터로 대규모 스파이킹 신경망을 돌려 보고 싶거나, 신경 활동을 실제 외부 환경에 연결했을 때 무엇이 문제가 되는지 보고 싶은 연구자와 개발자에게 Stonkfly가 잘 맞습니다. Stonkfly가 모델 가정과 검증하지 못한 항목을 문서로 함께 공개해 두어서, 커넥톰 기반 시뮬레이션이 어디까지를 주장할 수 있고 어디부터가 공학적 선택인지를 구분해 읽는 연습 자료로도 쓸 수 있습니다. 감각 입력에서 가소성 규칙까지 각 단계가 별도 모듈로 분리돼 있어 한 부분만 바꿔 실험하기도 쉽습니다.

반대로 수익을 내는 자동 매매를 찾고 있는 분에게는 Stonkfly가 적절한 선택지가 아닙니다. Stonkfly가 공개한 검증 결과에는 수익이 난 전략도, 학습이 일어났다는 증거도 없습니다. 준비 단계에서 약 1.1GB의 커넥톰 데이터를 내려받고 여기에 의존성과 파생 데이터까지 더해 수 GB의 디스크와 16GB 정도의 메모리를 쓰는데, 그 비용으로 얻는 것은 거래 성과가 아니라 실행 가능한 실험 루프입니다. 지원 환경도 macOS와 Linux뿐이라 Windows 사용자는 별도 준비가 필요합니다.

Stonkfly의 동작 원리

관측 한 번은 차트를 그리는 데서 시작합니다. Stonkfly는 Coinbase의 공개 1분봉 종가로 가격 이력을 채우고 이후 관측의 중간값을 덧붙여 320x180 차트를 로컬에서 렌더링합니다. 이 차트에는 과거 가격을 꺾은선으로 이어 상승 구간과 하락 구간을 다른 색으로 칠하고, 위쪽 띠에 거래쌍 이름을, 아래쪽에 현재 호가를 적습니다. 잔고와 손익은 들어가지 않습니다. 로그인한 거래소 화면을 캡처한 것이 아니라는 뜻이기도 합니다. 초기 버전은 어두운 배경의 차트를 썼는데 KC 뉴런이 거의 반응하지 않아 밝은 배경으로 바꿨고, 프로젝트는 이때 신경 파라미터는 건드리지 않았으며 표시 방식에 대한 민감도가 검증이 필요한 큰 교란 요인으로 남아 있다고 적고 있습니다.

픽셀은 두 갈래로 들어갑니다. 3,335개의 R1부터 R6까지의 수용체가 선형 sRGB 휘도를 받고, 811개의 R8 수용체가 파랑과 초록 채널을 대리 신호로 받습니다. 수용체의 위치는 열(column) 주석이 붙은 시각 뉴런과의 접촉에서 역으로 추정한 것이며, 대응되는 수용체가 없는 자리에는 없는 입력을 지어내지 않습니다. 실제 초파리의 광수용체는 등급 전위(graded potential)로 반응하지만 Stonkfly는 스파이크를 쓰므로, 프로젝트는 이 부분을 검증된 망막 생리가 아니라 명시적인 표시 장치 어댑터라고 부릅니다.

Stonkfly가 자기 그래프를 두고 쓰는 전체 보존(full retained)이라는 말은 무엇을 남겼는가에 대한 표현입니다. 배정된 뉴런 상위분류를 불확실한 것까지 모두 남기고 명시적인 신경아교세포와 미해결 분할 객체만 제외했다는 뜻이지, 실제 초파리의 모든 시냅스가 재구성됐다는 뜻은 아니라고 프로젝트가 따로 적어 두었습니다. 약한 연결과 자기 연결도 그대로 둡니다.

네이티브 커널은 0.1ms 간격으로 누설 적분 발화(Leaky Integrate-and-Fire) 뉴런을 근사 적분합니다. 막전위 시정수 20ms, 시냅스 시정수 5ms, 발화 임계값 -45mV, 전달 지연 1.8ms, 불응기 2.2ms가 쓰이고, 아세틸콜린은 흥분성으로, GABA와 글루탐산과 히스타민은 억제성으로 배정됩니다. 시장 관측 한 번은 기본값으로 500ms의 신경 시간을 진행시키며, 실제 관측 간격은 최소 60초입니다. 프로젝트는 이 시간 압축이 실시간 초파리 생리가 아니라 의도적으로 압축한 시장 대 신경 시계라고 밝히고 있습니다.

주문 방향은 다음과 같이 결정됩니다:

신경 측정값 제안 우측 DNp20 평균 발화율에서 좌측 평균을 뺀 값이 2Hz 이상, DNpe017 스파이크가 1회 이상 매수 같은 차이가 -2Hz 이하, DNpe017 스파이크가 1회 이상 매도 그 외 관망

이 대응은 사람이 정한 인터페이스이지 매수 뉴런을 찾아낸 결과가 아닙니다. 프로젝트도 회전 방향으로 치우친 네트워크 편향이 그대로 한쪽 방향의 매수로 나타날 수 있다고 경고합니다. 판독기가 정하는 것은 방향뿐이고 어떤 자산을 볼지는 네트워크가 고르지 않습니다. 기본값은 BTC-USDC 하나이며 ETH-USDC와 SOL-USDC를 선택지로 더할 수 있는데, 여러 개를 켜면 정해진 순서대로 돌아가며 한 번에 하나씩 보여줍니다.

Stonkfly의 되먹임과 기억 규칙

거래가 체결되면 다음 관측에서 평가액이 다시 계산됩니다. 평가액은 현금에 보유 자산을 현재 매수 호가로 평가한 값을 더한 것이고, 직전 관측 대비 변화에는 체결 수수료와 미실현 손익이 모두 들어갑니다. 변화가 미국 달러에 연동된 스테이블코인인 USDC 기준으로 +0.01 이상이면 15개의 PAM11 도파민 세포에 200ms 길이의 20mV 상당 인공 전류가 들어가고, -0.01 이하면 같은 펄스가 2개의 PPL101 세포로 들어갑니다. 펄스의 크기는 이익 규모에 비례하지 않고 임계값을 넘었는지만 봅니다. 아래 그림은 관측 한 번마다 도는 이 순환을 정리한 것으로, 손익 계산에서 시작해 도파민 세포 자극과 시냅스 효능 갱신을 거쳐 다음 관측으로 돌아옵니다.

도파민 활동은 초파리의 기억 구획에 해당하는 KC에서 MBON07과 MBON11로 가는 기존 연결 7,835개의 효능을 바꿉니다. 규칙은 Huang, Luo et al., 2024의 기준선 중심 반헵 규칙을 가져온 것으로, KC 활동 뒤에 도파민이 따라오면 해당 연결이 약해지고 순서가 반대면 강해지는 쪽입니다. 가격이나 손익 값이 시냅스 가중치를 직접 고쳐 쓰는 경로는 없고, 실제 네트워크 스파이크에서 나온 발화율만 규칙에 들어갑니다. 1초짜리 적격 흔적, 1,800초 기억 감쇠, 50ms 효능 필터, 0.001 게인, 기준값 대비 0.1배에서 2배의 효능 상한은 모두 선언된 모델 선택이며 측정된 도파민 농도가 아닙니다. 파라미터와 구현은 stonkfly/neural/rule.py에 모여 있습니다.

평가액 변화는 포트폴리오 가치에 대한 피드백일 뿐, 직전 행동이 그 변화를 일으켰다는 증거가 아닙니다. 자산을 그냥 들고 있어도 양쪽 신호가 다 나올 수 있고 수수료는 손실로 계산되며, 외부 입금처럼 설명되지 않는 잔고 변화는 보상이 되는 대신 실행을 멈춥니다. 프로젝트는 통증 수용체나 주관적 고통, 쾌감, 의식은 모델링하지도 측정하지도 않는다고 명시합니다.

Stonkfly의 주문 한도와 정지 조건

Stonkfly는 실거래에서 사고를 막는 검사를 stonkfly/risk.py의 가드와 stonkfly/config.py의 설정값에 모아 두었습니다. 설정 클래스는 값 범위를 직접 검사해서, 한도를 넘는 값을 넣으면 실행 자체가 거부됩니다. 운영 절차 전반은 docs/operations.md에 정리돼 있습니다. 주요 한도는 다음과 같습니다:

  • 초기 자금과 주문 규모: 초기 자금은 최대 100 USDC, 매수 한 건은 2% 수수료 예비분을 포함해 최대 10 USDC입니다. 매도 수량은 보유량과 10 USDC 상당 중 작은 쪽으로 제한되고, 차입과 공매도, 레버리지, 출금 동작은 아예 노출되지 않습니다.

  • 빈도: UTC 하루 최대 24회 시도, 시도 사이 최소 60초입니다. 거부된 미리보기도 시도 횟수에 포함되고, 실패한 주문이 새로운 전략 선택으로 바뀌지 않습니다.

  • 가격과 시세: 가격 제한이 걸린 FOK(Fill-or-Kill) 주문을 쓰며 슬리피지는 최대 0.5%, 호가 스프레드도 0.5%까지만 허용합니다. 시세는 15초보다 오래되면 안 되고, 신경 적분이 끝난 뒤 호가를 다시 받아 관측 시점과 차이가 크면 거래를 취소합니다.

  • 손실 정지: 시작 평가액 대비 20 USDC가 줄면 새 주문을 멈춥니다. 다만 이것은 청산 명령이 아니며 보유 자산은 그대로 시장에 노출된 채로 남습니다. 프로젝트도 이 조건이 최대 손실을 보장하지 않는다고 적어 두었으니, 보유 자산을 어떻게 정리할지는 별도로 정해 두어야 합니다.

주문 식별자는 전송 전에 SQLite에 기록됩니다. 응답이 불확실하면 같은 식별자를 거래소에서 되찾아 조회하고 새 주문을 다시 보내지 않으며, 결과가 끝내 불분명하면 워커를 멈춰 사람이 확인하도록 합니다. 기본값은 모의 거래라서 키가 없어도 실제 공개 시세로 돌려볼 수 있고, 실거래는 View와 Trade 권한만 가진 포트폴리오 범위의 ECDSA 키와 환경 변수, 그리고 --live 플래그가 모두 갖춰져야 시작됩니다.

Stonkfly의 검증 결과와 한계

개발자 nftechie가 구현 시점에 기록해 docs/validation.md로 공개한 결과를 보면, 전체 커넥톰 테스트를 포함해 로컬 테스트 42개가 통과했습니다. 거래소 주문 테스트는 전부 인메모리 SDK 대역을 쓴 것이고 실제 주문이나 자금이 들어간 계정 검사는 수행되지 않았습니다. 확인된 것과 확인되지 않은 것은 항목마다 다음과 같이 나뉩니다:

검사 관측된 결과 입증하지 못하는 것 체크섬 검증된 공개 파일에서 그래프 재구축 뉴런 166,700개, 연결 25,582,938개, 접촉 124,177,617개가 잠금 파일과 일치 재구성의 완전성이나 생리학적 정확성 실행 및 단위 테스트 예산, 오래된 시세, 스프레드, 보유량, 권한, 수수료 미리보기, 정지, 쿨다운, 중복 정산, 불확실한 제출 검사 통과 특정 실계정과 지역, 수수료 등급에서의 실행 성공 전체 네트워크 감각 및 되먹임 테스트 흰색 RGB 입력이 KC를 활성화하고 보상과 혐오 펄스가 지정된 세포에서 스파이크를 일으킴 정확한 초파리 망막 반응이나 습득된 매매 연합 동일 체크포인트 대조군 보상이 있을 때와 없을 때 가중치 변화가 다르고, 기억을 고정하면 값이 그대로 유지됨 판단의 개선이나 유용한 전략의 유지 실제 공개 시세 6회 관측 모의 모드에서 매수 1건 체결, 이후 매수 제안 5건은 쿨다운으로 거부 현실적인 거래 수익이나 편향 없는 전략

마지막 행이 Stonkfly가 스스로 가장 중요한 한계로 꼽는 대목입니다. 6회 관측에서 첫 체결 이후 나온 제안이 모두 매수였고, 고정된 방향 판독기가 회로의 편향을 그대로 한쪽 노출로 바꿔 놓을 수 있다는 뜻이기 때문입니다. 같은 실행에서 KC는 관측당 11회에서 16회 발화했는데, 이는 흰 화면을 넣은 신경 테스트에서 활성화되는 KC보다 훨씬 적은 수라서 프로젝트는 시각 표현을 어떻게 만들 것인가가 아직 큰 숙제로 남아 있다고 적고 있습니다. 손실 펄스가 들어간 다음 관측에서는 2개의 PPL101 세포에서 55회의 스파이크가 관측됐습니다. 여기서 변한 후보 연결 5개는 외부 손실 펄스가 들어오기 전에 이미 바뀌어 있었고, 프로젝트는 이를 근거로 모든 가중치 변화를 손익 탓으로 돌리지 말라고 적고 있습니다.

Stonkfly는 학습을 주장하려면 무엇이 더 필요한지도 함께 적어 두었습니다. 시간 순서를 지킨 별도 구간의 시장 재현, 독립적인 시작점, 가중치를 고정한 대조군과 강화 신호를 섞은 대조군, 수수료와 슬리피지 반영, 동일한 예산, 기억 유지 확인, 학습된 가중치를 초기화했을 때 이득이 사라지는지 확인이 모두 필요합니다. 현금과 단순 보유 전략도 함께 비교해야 하는데, 가격이 오르는 구간에서는 누가 사도 잘한 것처럼 보이기 때문입니다.

Stonkfly 설치와 사용

Stonkfly 실행에는 Python 3.11과 C++17 컴파일러가 필요하며 macOS와 Linux를 지원합니다. 데이터셋과 의존성으로 수 GB의 공간이 필요하고 16GB 메모리를 권장합니다. 기본 실행은 모의 거래이므로 API 키 없이도 시작할 수 있습니다:

python3.11 -m venv .venv
source .venv/bin/activate
pip install -e '.[test]'
python -m stonkfly prepare
python -m stonkfly run

prepare 단계에서 약 1.1GB의 MaleCNS 파일을 내려받아 체크섬을 확인하고 전체 그래프를 만듭니다. 기본 실행은 실제 공개 BTC-USDC 시세를 쓰면서 체결만 100 USDC의 모의 잔고로 흉내 내며, 한쪽당 0.6%의 수수료를 적용합니다. 로그와 감각 이미지, 재개 가능한 신경 상태는 runs/paper/에 남고, Ctrl-C로 멈춘 뒤 같은 명령으로 이어서 실행할 수 있습니다.

실험으로 돌릴 때 쓰는 모드도 따로 있습니다. --fixture는 합성 시세로 오프라인 실행을 하고, --frozen은 기억 효능을 고정한 대조군을 돌립니다. 대조군은 항상 별도의 실행 디렉토리를 써야 합니다:

python -m stonkfly run --fixture --fast --frozen --steps 10 --out runs/frozen

실거래는 별도의 선택이 필요합니다. 최대 100 USDC만 넣은 전용 Coinbase Advanced 포트폴리오를 만들고, 그 포트폴리오로 범위를 제한한 ECDSA 키를 View와 Trade 권한만으로 발급한 뒤 출금 권한은 꺼 둡니다. .env.example을 .env로 복사해 키 경로와 포트폴리오 ID를 채우고 나면 다음 두 명령을 직접 실행하게 되어 있습니다:

python -m stonkfly run --live --preflight-only
python -m stonkfly run --live

앞 명령은 권한과 잔고, 주문 상태를 읽고 원장을 초기화할 뿐 주문을 넣지 않습니다. 상태 확인과 테스트 실행은 다음과 같습니다:

python -m stonkfly status
python -m pytest -q

Stonkfly의 라이선스

Stonkfly는 MIT 라이선스로 공개되어 있어 개인 및 상업적 목적으로 자유롭게 사용할 수 있습니다.

다만 함께 쓰는 구성 요소는 조건이 다릅니다. MaleCNS v1.0 데이터는 크리에이티브 커먼즈 저작자표시 4.0 조건으로 별도 배포되므로, 결과를 공개할 때는 데이터셋과 관련 논문을 인용해야 합니다. Coinbase AgentKit과 Coinbase Advanced Python SDK는 Apache-2.0으로 각 패키지의 라이선스를 그대로 따릅니다. 자세한 귀속 정보는 THIRD_PARTY.md에 정리돼 있으며, 프로젝트는 여기서 Stonkfly가 Coinbase의 공식 제품도, 보증을 받은 것도 아니라는 점을 함께 밝히고 있습니다.

Stonkfly 프로젝트 GitHub 저장소

github.com

GitHub - nftechie/stonkfly: A full retained fly-connectome simulation with...

A full retained fly-connectome simulation with experimental memory and guarded Coinbase AgentKit trading actions.

더 읽어보기



이 글은 GPT 모델로 정리한 초안을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 댓글로 알려주시기를 부탁드립니다.

파이토치 한국 사용자 모임은 이런 글들을 한국어로 정리해 나누고 있습니다. 회원으로 가입하시면 주요 글들을 이메일로 보내드리고, 텔레그램(Telegram)과 Slack/Discord/Teams/Dooray/GoogleChat 등으로도 새 글 알림을 받으실 수 있습니다.

아래쪽에 좋아요를 눌러주시면 다음 글을 정리하는 데 힘이 됩니다~

1개의 게시물 - 1명의 참여자

전체 주제 읽기

https://discuss.pytorch.kr/t/stonkfly-llm-16/11967

Origineel bekijken