createDataSet / README.md
ykjung
feat: implement chunked Parquet uploads to Hugging Face for memory efficiency and improved data handling
dd5d980

A newer version of the Gradio SDK is available: 6.10.0

Upgrade
metadata
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) ๊ธฐ์ค€์œผ๋กœ ์ €์žฅ๋˜๋ฏ€๋กœ, ์‹คํŒจ ์‹œ ์ตœ๊ทผ ์ฒดํฌํฌ์ธํŠธ ์ดํ›„ ๊ตฌ๊ฐ„๋งŒ ์žฌ์ˆ˜์ง‘๋ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ