--- title: CreateDataSet emoji: ๐Ÿ  colorFrom: gray colorTo: green sdk: gradio sdk_version: 6.6.0 app_file: app.py pinned: false --- # CreateDataSet ๋‚˜์Šค๋‹ฅ/๋‰ด์š•์ฆ๊ถŒ๊ฑฐ๋ž˜์†Œ(US) ํ‹ฐ์ปค์˜ ์ผ๋ด‰ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•ด Hugging Face Dataset์œผ๋กœ ์—…๋กœ๋“œํ•˜๋Š” Gradio ์•ฑ์ž…๋‹ˆ๋‹ค. ## ๋ฒ„ํŠผ ๋กœ์ง ์„ค๋ช… ์ด ์•ฑ์˜ ํ•ต์‹ฌ ๋™์ž‘์€ ์•„๋ž˜ 2๊ฐœ ๋ฒ„ํŠผ์œผ๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. --- ## 1) `๐Ÿ‘€ ํ‹ฐ์ปค ๋ชฉ๋ก ๋ฏธ๋ฆฌ๋ณด๊ธฐ` UI ์—ฐ๊ฒฐ: - `preview_btn.click(fn=preview_tickers, inputs=[], outputs=[output_log])` ์‹คํ–‰ ํ•จ์ˆ˜: - `preview_tickers()` ๋‚ด๋ถ€ ๋กœ์ง: 1. `get_all_us_tickers()` ํ˜ธ์ถœ 2. ์•ผํ›„ ์Šคํฌ๋ฆฌ๋„ˆ(`yf.screen`)๋กœ ๊ฑฐ๋ž˜์†Œ๋ณ„ ํ‹ฐ์ปค ์ˆ˜์ง‘ - NASDAQ: `NMS`, `NGM`, `NCM` - NYSE: `NYQ` 3. ํ‹ฐ์ปค ํ•„ํ„ฐ ์ ์šฉ - `-`, `.`, `$` ํฌํ•จ ํ‹ฐ์ปค ์ œ์™ธ - 5๊ธ€์ž์ด๋ฉฐ ๋งˆ์ง€๋ง‰์ด `W`, `R`, `U`์ธ ํŒŒ์ƒ์„ฑ ํ‹ฐ์ปค ์ œ์™ธ 4. ์ค‘๋ณต ์ œ๊ฑฐ + ์ •๋ ฌ 5. ๋กœ๊ทธ ํ…์ŠคํŠธ ๋ฐ˜ํ™˜ - ๋‚˜์Šค๋‹ฅ ๊ฐœ์ˆ˜ - ๋‰ด์š•์ฆ๊ถŒ๊ฑฐ๋ž˜์†Œ ๊ฐœ์ˆ˜ - ์ „์ฒด ๊ฐœ์ˆ˜ - ๊ฐ ๊ฑฐ๋ž˜์†Œ ์•ž 20๊ฐœ ์ƒ˜ํ”Œ ํ‹ฐ์ปค ํŠน์ง•: - ์‹ค์ œ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘/์—…๋กœ๋“œ๋Š” ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๊ณ , ์ˆ˜์ง‘ ๋Œ€์ƒ ํ‹ฐ์ปค ๋ชฉ๋ก๋งŒ ๋น ๋ฅด๊ฒŒ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. - ๊ฒฐ๊ณผ๋Š” ์˜ค๋ฅธ์ชฝ `๋กœ๊ทธ ์ถœ๋ ฅ` ํ…์ŠคํŠธ๋ฐ•์Šค์— ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. --- ## 2) `๐Ÿš€ ํŒŒ์ดํ”„๋ผ์ธ ์‹œ์ž‘` UI ์—ฐ๊ฒฐ: - `start_btn.click(fn=run_pipeline, inputs=[hf_token_input, all_dataset_input, recent_dataset_input, batch_size_input, period_input, checkpoint_batch_input], outputs=[output_log])` ์‹คํ–‰ ํ•จ์ˆ˜: - `run_pipeline(hf_token, all_dataset_name, recent_dataset_name, batch_size, period, checkpoint_batch_size, progress=gr.Progress())` ์‚ฌ์ „ ์กฐ๊ฑด: - `HF_TOKEN`์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. - ํ† ํฐ์ด ์—†์œผ๋ฉด ์ฆ‰์‹œ ์‹คํŒจ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ  ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค. ๋‹จ๊ณ„๋ณ„ ๋กœ์ง: 1. **ํ‹ฐ์ปค ๋ชฉ๋ก ์ˆ˜์ง‘** - `get_all_us_tickers()` ํ˜ธ์ถœ - ์ „์ฒด ๋Œ€์ƒ ํ‹ฐ์ปค ๊ฐœ์ˆ˜ ๊ณ„์‚ฐ 2. **๊ธฐ์กด ๋ฐ์ดํ„ฐ์…‹ ๋กœ๋“œ + ์žฌ๊ฐœ ๋Œ€์ƒ ๊ณ„์‚ฐ** - ๊ธฐ์กด `all`, `30d` ๋ฐ์ดํ„ฐ์…‹ ๋กœ๋“œ ์‹œ๋„ - ์ด๋ฏธ ์ˆ˜์ง‘๋œ ํ‹ฐ์ปค๋ฅผ ์ œ์™ธํ•˜๊ณ  ์ด๋ฒˆ ์‹คํ–‰ ๋Œ€์ƒ ํ‹ฐ์ปค๋งŒ ๊ณ„์‚ฐ 3. **ํ‹ฐ์ปค๋ณ„ ๊ฐ€๊ฒฉ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘** - ๊ฐ ํ‹ฐ์ปค์— ๋Œ€ํ•ด `fetch_ticker_data(ticker)` ์‹คํ–‰ - `yf.Ticker(ticker).history(period=period, interval="1d")` ํ˜ธ์ถœ - ์ปฌ๋Ÿผ ์ •๋ฆฌ: `Ticker`, `Date`, `Open`, `High`, `Low`, `Close`, `Volume` - ์ˆซ์ž ์ปฌ๋Ÿผ ๋ฐ˜์˜ฌ๋ฆผ(์†Œ์ˆ˜์  4์ž๋ฆฌ) - ์žฅ์ค‘ ๋ฏธํ™•์ • ์ข…๊ฐ€ ์ œ์™ธ ๋กœ์ง ์ ์šฉ - ๋‰ด์š• ์‹œ๊ฐ„ ๊ธฐ์ค€ - ๋งˆ๊ฐ ํ™•์ • ์ „(today) ๋ฐ์ดํ„ฐ๋Š” ์ œ์™ธ - ์‹คํŒจ ์‹œ ์ตœ๋Œ€ 3ํšŒ ์žฌ์‹œ๋„ - 10ํ‹ฐ์ปค๋งˆ๋‹ค 0.5์ดˆ ๋Œ€๊ธฐ(ํ˜ธ์ถœ ์ฐจ๋‹จ ์™„ํ™”) - ์„ค์ •ํ•œ ๊ฐ„๊ฒฉ(`checkpoint_batch_size`)๋งˆ๋‹ค ์ˆ˜์ง‘ ๋ฒ„ํผ๋ฅผ Parquet ์ฒญํฌ๋กœ ์—…๋กœ๋“œ - ์ฒญํฌ ์—…๋กœ๋“œ ํ›„ ๋ฉ”๋ชจ๋ฆฌ ๋ฒ„ํผ๋ฅผ ์ฆ‰์‹œ ๋น„์›Œ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ ์ œํ•œ 4. **์ตœ์ข… ๋ณ‘ํ•ฉ ๋ฐ˜์˜** - ๋งˆ์ง€๋ง‰ ๋ฏธ๋ฐ˜์˜ ๋ฒ„ํผ๋ฅผ ์ฒญํฌ ์—…๋กœ๋“œ๋กœ ๋ฐ˜์˜ 5. **์ตœ๊ทผ 30์ผ ๋ฐ์ดํ„ฐ์…‹ ๊ฐฑ์‹ ** - ํ‹ฐ์ปค๋ณ„ ์ตœ๊ทผ 30์ผ ๋ฐ์ดํ„ฐ ์ฒญํฌ๋ฅผ ํ•จ๊ป˜ ์—…๋กœ๋“œ 6. **Hugging Face ์—…๋กœ๋“œ** - ๋‚ด๋ถ€์ ์œผ๋กœ `HfApi.upload_file(..., path_in_repo="data/chunks/...parquet")` ๋ฐฉ์‹ ์‚ฌ์šฉ - ๋Œ€์šฉ๋Ÿ‰ ์ „์ฒด ๋ฐ์ดํ„ฐํ”„๋ ˆ์ž„ ์žฌ์—…๋กœ๋“œ๋ฅผ ํ”ผํ•ด์„œ ๋ฉ”๋ชจ๋ฆฌ ํ”ผํฌ๋ฅผ ๋‚ฎ์ถค 7. **์™„๋ฃŒ ๋กœ๊ทธ ๋ฐ˜ํ™˜** - ์‹œ์ž‘/์ข…๋ฃŒ ์‹œ๊ฐ„, ์„ฑ๊ณต/์‹คํŒจ ๊ฐœ์ˆ˜, ์—…๋กœ๋“œ ๊ฒฐ๊ณผ๋ฅผ ํ…์ŠคํŠธ๋กœ ๋ฐ˜ํ™˜ ์ง„ํ–‰๋ฅ (Progress Bar): - ์ˆ˜์ง‘ ์‹œ์ž‘: `0` - ๋ฐ์ดํ„ฐ ๋ณ‘ํ•ฉ: `0.9` - 30์ผ ํ•„ํ„ฐ๋ง: `0.93` - ์—…๋กœ๋“œ: `0.95` - ์™„๋ฃŒ: `1.0` --- ## 3) `โšก ์‹ค์‹œ๊ฐ„ ์‹œ์ž‘` UI ์—ฐ๊ฒฐ: - `realtime_btn.click(fn=run_realtime_update, inputs=[hf_token_input, all_dataset_input, recent_dataset_input], outputs=[output_log])` ์‹คํ–‰ ํ•จ์ˆ˜: - `run_realtime_update(hf_token, all_dataset_name, recent_dataset_name, progress=gr.Progress())` ํ•ต์‹ฌ ๋ชฉ์ : - ๋ฐ์ดํ„ฐ์…‹์— ์ด๋ฏธ ๋“ฑ๋ก๋œ ํ‹ฐ์ปค๋“ค์„ ๊ธฐ์ค€์œผ๋กœ TradingView Screener์—์„œ ์˜ค๋Š˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ผ๊ด„ ์กฐํšŒ - `all` ๋ฐ์ดํ„ฐ์…‹: ์˜ค๋Š˜ ๋ฐ์ดํ„ฐ **์ถ”๊ฐ€๋งŒ(append-only)** - `30d` ๋ฐ์ดํ„ฐ์…‹: ์˜ค๋ž˜๋œ ๋ฐ์ดํ„ฐ ์ œ๊ฑฐ ํ›„ ์˜ค๋Š˜ ๋ฐ์ดํ„ฐ ๋ฐ˜์˜ ๋‹จ๊ณ„๋ณ„ ๋กœ์ง: 1. **์žฅ์ค‘ ์—ฌ๋ถ€ ํ™•์ธ (์ธ๋จธํƒ€์ž„ ์ž๋™ ๋ฐ˜์˜)** - `America/New_York` ๊ธฐ์ค€ ์‹œ๊ฐ„์œผ๋กœ ์ •๊ทœ์žฅ(09:30~16:00) ์—ฌ๋ถ€ ํŒ๋‹จ - ์žฅ์ค‘์ด๋ฉด ๋กœ๊ทธ์— **`์žฅ์ค‘์ž…๋‹ˆ๋‹ค.`** ์ถœ๋ ฅ 2. **๊ธฐ์กด ๋ฐ์ดํ„ฐ์…‹ ๋กœ๋“œ** - HF Hub์—์„œ `all`, `30d` ๋ฐ์ดํ„ฐ์…‹ ๋กœ๋“œ - ์กฐํšŒ ํ‹ฐ์ปค๋Š” ์šฐ์„  `30d`์˜ `Ticker` ๋ชฉ๋ก ์‚ฌ์šฉ (์—†์œผ๋ฉด `all` ์‚ฌ์šฉ) 3. **์˜ค๋Š˜ ๋ฐ์ดํ„ฐ ์ค‘๋ณต ์ˆ˜์ง‘ ์ฒดํฌ** - `all` ๋ฐ์ดํ„ฐ์…‹์—์„œ ์˜ค๋Š˜ ๋‚ ์งœ(๋‰ด์š• ๊ธฐ์ค€) ํ–‰ ํ™•์ธ - ๋Œ€์ƒ ํ‹ฐ์ปค๊ฐ€ ๋ชจ๋‘ ์˜ค๋Š˜ ๋‚ ์งœ๋กœ ์ด๋ฏธ ์กด์žฌํ•˜๋ฉด **`์ด๋ฏธ ์ˆ˜์ง‘ํ–ˆ์Šต๋‹ˆ๋‹ค`** ์ถœ๋ ฅ ํ›„ ์ข…๋ฃŒ 4. **TradingView ์ผ๊ด„ ์กฐํšŒ** - Yahoo๊ฐ€ ์•„๋‹Œ `https://scanner.tradingview.com/america/scan` ์‚ฌ์šฉ - ํ‹ฐ์ปค๋ณ„ `NASDAQ/NYSE/AMEX` ์‹ฌ๋ณผ์„ ํ•จ๊ป˜ ์กฐํšŒ - ์ˆ˜์‹  ์ปฌ๋Ÿผ: `close/open/high/low/volume` 5. **`all` ์—…๋ฐ์ดํŠธ (์ถ”๊ฐ€๋งŒ)** - ์˜ค๋Š˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์—†๋Š” ํ‹ฐ์ปค๋งŒ ์‹ ๊ทœ ํ–‰์œผ๋กœ ์ถ”๊ฐ€ 6. **`30d` ์—…๋ฐ์ดํŠธ (๊ต์ฒด+์ •๋ฆฌ)** - ๊ฐ™์€ ํ‹ฐ์ปค์˜ ์˜ค๋Š˜ ํ–‰์€ ์ตœ์‹  ๊ฐ’์œผ๋กœ ๊ต์ฒด - ํ‹ฐ์ปค๋ณ„ ์ตœ๊ทผ 30์ผ๋งŒ ์œ ์ง€ํ•˜๋„๋ก ํ•„ํ„ฐ๋ง 7. **HF ์—…๋กœ๋“œ** - `all`, `30d` ๋‘ ๋ฐ์ดํ„ฐ์…‹์„ ๊ฐ๊ฐ push --- ## ์ž…๋ ฅ๊ฐ’ ์„ค๋ช… - `ํ—ˆ๊น…ํŽ˜์ด์Šค ํ† ํฐ (HF_TOKEN)` - ๋ฐ์ดํ„ฐ์…‹ ์—…๋กœ๋“œ ์ธ์ฆ์šฉ - `์ „์ฒด๊ธฐ๊ฐ„ ๋ฐ์ดํ„ฐ์…‹ ์ด๋ฆ„ (all)` - ์˜ˆ: `username/us-stocks-daily-all` - `์ตœ๊ทผ 30์ผ ๋ฐ์ดํ„ฐ์…‹ ์ด๋ฆ„ (30d)` - ์˜ˆ: `username/us-stocks-daily-30d` - `๋กœ๊ทธ ์ถœ๋ ฅ ๋ฐฐ์น˜ ํฌ๊ธฐ` - ๋ช‡ ๊ฐœ ํ‹ฐ์ปค๋งˆ๋‹ค ์ค‘๊ฐ„ ์ง„ํ–‰ ๋กœ๊ทธ๋ฅผ ๋‚จ๊ธธ์ง€ ์„ค์ • - `์กฐํšŒ ๊ธฐ๊ฐ„ (Yahoo period)` - ์˜ˆ: `max`, `10y`, `5y`, `2y`, `1y`, `6mo`, `3mo`, `1mo` - ํŒŒ์ดํ”„๋ผ์ธ ์‹คํ–‰ ์‹œ๊ฐ„์„ ์ค„์ด๊ณ  ์‹ถ๋‹ค๋ฉด `max` ๋Œ€์‹  ๋” ์งง์€ ๊ธฐ๊ฐ„์„ ์„ ํƒ - `์ค‘๊ฐ„ ์—…๋กœ๋“œ ๊ฐ„๊ฒฉ (ํ‹ฐ์ปค ์ˆ˜)` - ์˜ˆ: `100`์ด๋ฉด 100๊ฐœ ํ‹ฐ์ปค ์ฒ˜๋ฆฌ๋งˆ๋‹ค ์ค‘๊ฐ„ ์—…๋กœ๋“œ - `0`์ด๋ฉด ์ค‘๊ฐ„ ์—…๋กœ๋“œ ์—†์ด ๋งˆ์ง€๋ง‰์— ํ•œ ๋ฒˆ๋งŒ ์—…๋กœ๋“œ ์žฌ์‹คํ–‰(Resume) ๋™์ž‘: - ์ด๋ฏธ ๋ฐ์ดํ„ฐ์…‹์— ์กด์žฌํ•˜๋Š” ํ‹ฐ์ปค๋Š” ์ž๋™์œผ๋กœ ์Šคํ‚ตํ•ฉ๋‹ˆ๋‹ค. - ์ด์ „ ์‹คํ–‰์—์„œ ์ค‘๊ฐ„์— ์‹คํŒจํ•ด๋„, ๋‹ค์Œ ์‹คํ–‰ ์‹œ ๋‚จ์€ ํ‹ฐ์ปค ์œ„์ฃผ๋กœ ์ด์–ด์„œ ์ˆ˜์ง‘ํ•ฉ๋‹ˆ๋‹ค. - ์ฒดํฌํฌ์ธํŠธ ๊ฐ„๊ฒฉ(์˜ˆ: 100) ๊ธฐ์ค€์œผ๋กœ ์ €์žฅ๋˜๋ฏ€๋กœ, ์‹คํŒจ ์‹œ ์ตœ๊ทผ ์ฒดํฌํฌ์ธํŠธ ์ดํ›„ ๊ตฌ๊ฐ„๋งŒ ์žฌ์ˆ˜์ง‘๋ฉ๋‹ˆ๋‹ค. --- ## ์ฐธ๊ณ  - Hugging Face Spaces ์„ค์ • ๋ ˆํผ๋Ÿฐ์Šค: - https://huggingface.co/docs/hub/spaces-config-reference