vccs
Vue 3용 차트 컴포넌트 모음, Recharts에서 포팅
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기quant trading
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Personal quantitative trading system for BTC/ETH. Read BUILD_PLAN.md for the full plan. Current phase: 0 — Data Foundation (candle data flowing into Supabase hourly, with full historical backfill from 2021-01-01).
Everything runs on free tiers: Binance public market data (no API key), Supabase free tier, GitHub Actions cron.
In the Supabase SQL editor (the dedicated quant-bot project), paste and run, in order:
db/migrations/001_candles.sql — candles table, index, RLS with anon readdb/migrations/002_registry.sql — strategies/signals/trades, RLS deny-by-defaultLocal: copy .env.example to .env and fill in both values from
Supabase → Project Settings → API. .env is gitignored; the service role key
must never be committed or exposed to a client.
GitHub Actions (required before the hourly sync can run): in the repo, Settings → Secrets and variables → Actions → New repository secret, add:
SUPABASE_URLSUPABASE_SERVICE_ROLE_KEYpython -m venv .venv
.venv/Scripts/activate # Windows; on WSL2/Linux: source .venv/bin/activate
pip install -r requirements.txt
python scripts/backfill.py
Pulls 1h and 1d candles for BTCUSDT and ETHUSDT from 2021-01-01 to now (~50,000 rows per symbol on 1h). Takes a few minutes. Idempotent and resumable: if interrupted, re-run it — it continues from the newest stored candle and never duplicates rows.
The workflow .github/workflows/sync-candles.yml runs at 7 and 37 minutes
past each hour (two slots, because GitHub occasionally drops scheduled runs
under load — whichever slot fires self-heals any backlog) once the repo is
pushed to GitHub and the secrets from step 2 are set.
Trigger it once manually (Actions → sync-candles → Run workflow) to confirm
it's green.
python scripts/verify.py
Prints, per symbol/timeframe: row count, earliest/latest candle, and any gaps
(missing candles between consecutive rows). Each gap includes the exact
backfill.py command to re-fetch that range. Binance has rare legitimate
gaps from exchange maintenance — if a re-fetch returns nothing, the gap is on
Binance's side and is fine to leave.
tsmom_v1 runs every 4h via .github/workflows/signal-engine.yml (the job
syncs candles first, then evaluates the last closed 4h bar). ETH is the
primary book — you log fills manually at the dashboard /log page. BTC is
observational — the engine auto-fills hypothetical trades at next-bar-open
and they never touch equity or the kill switch.
db/migrations/003_paper_trading.sql in the Supabase SQL editor./newbot → name it (e.g.
quantbot_signals_bot) → copy the token. Then send any message to
your new bot, and open
https://api.telegram.org/bot<TOKEN>/getUpdates in a browser — your
chat id is at result[0].message.chat.id.TELEGRAM_BOT_TOKEN and TELEGRAM_CHAT_ID.NEXT_PUBLIC_): add
SUPABASE_SERVICE_ROLE_KEY and LOG_PIN (a 6-digit PIN you choose) —
these power the PIN-gated /api/log write route. Redeploy.Equity $230, risk 1% = $2.30. ETH at $1,650 with ATR(14) = $38 → stop = 1650 − 2×38 = $1,574 (distance $76). Units = 2.30 / 76 = 0.030263 ETH = $49.93 (21.7% of equity — under the 95% cap). If ATR were tiny (say $4 → distance $8), the uncapped size would be ~287% of equity; the cap clamps it to $218.50 (95%), accepting less than 1% realized risk rather than leverage. Spot only, always.
10% peak-to-trough on paper equity halts new entries (exits still managed) and alerts via Telegram. Manual reset, deliberately — run in the Supabase SQL editor after you have reviewed the drawdown:
update engine_state
set value = '{"active": false}'::jsonb, updated_at = now()
where key = 'kill_switch';
08:00 MYT heartbeat on Telegram (equity, open positions, engine alive). Silence at other times means "no signal", never "engine broken" — a broken run shows red in GitHub Actions and skips the heartbeat.
data-api.binance.vision — Binance's official
public market-data host (same /api/v3/klines, no API key). This is the
default instead of api.binance.com because the latter is ISP-blocked in
Malaysia, where the backfill runs locally. Override with BINANCE_BASE_URL
if ever needed.(symbol, timeframe, open_time).