Spaces:
Sleeping
Sleeping
ykjung commited on
Commit ยท
b1a801d
1
Parent(s): 86f67c9
feat: update fetch_ticker_data to accept period parameter and enhance pipeline with period input
Browse files- README.md +6 -3
- __pycache__/app.cpython-313.pyc +0 -0
- app.py +18 -8
README.md
CHANGED
|
@@ -56,11 +56,11 @@ UI ์ฐ๊ฒฐ:
|
|
| 56 |
|
| 57 |
UI ์ฐ๊ฒฐ:
|
| 58 |
|
| 59 |
-
- `start_btn.click(fn=run_pipeline, inputs=[hf_token_input, all_dataset_input, recent_dataset_input, batch_size_input], outputs=[output_log])`
|
| 60 |
|
| 61 |
์คํ ํจ์:
|
| 62 |
|
| 63 |
-
- `run_pipeline(hf_token, all_dataset_name, recent_dataset_name, batch_size, progress=gr.Progress())`
|
| 64 |
|
| 65 |
์ฌ์ ์กฐ๊ฑด:
|
| 66 |
|
|
@@ -74,7 +74,7 @@ UI ์ฐ๊ฒฐ:
|
|
| 74 |
- ์ ์ฒด ๋์ ํฐ์ปค ๊ฐ์ ๊ณ์ฐ
|
| 75 |
2. **ํฐ์ปค๋ณ ๊ฐ๊ฒฉ ๋ฐ์ดํฐ ์์ง**
|
| 76 |
- ๊ฐ ํฐ์ปค์ ๋ํด `fetch_ticker_data(ticker)` ์คํ
|
| 77 |
-
- `yf.Ticker(ticker).history(period=
|
| 78 |
- ์ปฌ๋ผ ์ ๋ฆฌ: `Ticker`, `Date`, `Open`, `High`, `Low`, `Close`, `Volume`
|
| 79 |
- ์ซ์ ์ปฌ๋ผ ๋ฐ์ฌ๋ฆผ(์์์ 4์๋ฆฌ)
|
| 80 |
- ์ฅ์ค ๋ฏธํ์ ์ข
๊ฐ ์ ์ธ ๋ก์ง ์ ์ฉ
|
|
@@ -155,6 +155,9 @@ UI ์ฐ๊ฒฐ:
|
|
| 155 |
- ์: `username/us-stocks-daily-30d`
|
| 156 |
- `๋ก๊ทธ ์ถ๋ ฅ ๋ฐฐ์น ํฌ๊ธฐ`
|
| 157 |
- ๋ช ๊ฐ ํฐ์ปค๋ง๋ค ์ค๊ฐ ์งํ ๋ก๊ทธ๋ฅผ ๋จ๊ธธ์ง ์ค์
|
|
|
|
|
|
|
|
|
|
| 158 |
|
| 159 |
---
|
| 160 |
|
|
|
|
| 56 |
|
| 57 |
UI ์ฐ๊ฒฐ:
|
| 58 |
|
| 59 |
+
- `start_btn.click(fn=run_pipeline, inputs=[hf_token_input, all_dataset_input, recent_dataset_input, batch_size_input, period_input], outputs=[output_log])`
|
| 60 |
|
| 61 |
์คํ ํจ์:
|
| 62 |
|
| 63 |
+
- `run_pipeline(hf_token, all_dataset_name, recent_dataset_name, batch_size, period, progress=gr.Progress())`
|
| 64 |
|
| 65 |
์ฌ์ ์กฐ๊ฑด:
|
| 66 |
|
|
|
|
| 74 |
- ์ ์ฒด ๋์ ํฐ์ปค ๊ฐ์ ๊ณ์ฐ
|
| 75 |
2. **ํฐ์ปค๋ณ ๊ฐ๊ฒฉ ๋ฐ์ดํฐ ์์ง**
|
| 76 |
- ๊ฐ ํฐ์ปค์ ๋ํด `fetch_ticker_data(ticker)` ์คํ
|
| 77 |
+
- `yf.Ticker(ticker).history(period=period, interval="1d")` ํธ์ถ
|
| 78 |
- ์ปฌ๋ผ ์ ๋ฆฌ: `Ticker`, `Date`, `Open`, `High`, `Low`, `Close`, `Volume`
|
| 79 |
- ์ซ์ ์ปฌ๋ผ ๋ฐ์ฌ๋ฆผ(์์์ 4์๋ฆฌ)
|
| 80 |
- ์ฅ์ค ๋ฏธํ์ ์ข
๊ฐ ์ ์ธ ๋ก์ง ์ ์ฉ
|
|
|
|
| 155 |
- ์: `username/us-stocks-daily-30d`
|
| 156 |
- `๋ก๊ทธ ์ถ๋ ฅ ๋ฐฐ์น ํฌ๊ธฐ`
|
| 157 |
- ๋ช ๊ฐ ํฐ์ปค๋ง๋ค ์ค๊ฐ ์งํ ๋ก๊ทธ๋ฅผ ๋จ๊ธธ์ง ์ค์
|
| 158 |
+
- `์กฐํ ๊ธฐ๊ฐ (Yahoo period)`
|
| 159 |
+
- ์: `max`, `10y`, `5y`, `2y`, `1y`, `6mo`, `3mo`, `1mo`
|
| 160 |
+
- ํ์ดํ๋ผ์ธ ์คํ ์๊ฐ์ ์ค์ด๊ณ ์ถ๋ค๋ฉด `max` ๋์ ๋ ์งง์ ๊ธฐ๊ฐ์ ์ ํ
|
| 161 |
|
| 162 |
---
|
| 163 |
|
__pycache__/app.cpython-313.pyc
CHANGED
|
Binary files a/__pycache__/app.cpython-313.pyc and b/__pycache__/app.cpython-313.pyc differ
|
|
|
app.py
CHANGED
|
@@ -313,17 +313,17 @@ def get_all_us_tickers():
|
|
| 313 |
return [], [], []
|
| 314 |
|
| 315 |
|
| 316 |
-
def fetch_ticker_data(ticker, max_retries=3):
|
| 317 |
"""
|
| 318 |
-
๊ฐ๋ณ ํฐ์ปค์
|
| 319 |
-
- period
|
| 320 |
- interval="1d" : ์ผ๋ณ ๋ฐ์ดํฐ
|
| 321 |
"""
|
| 322 |
for attempt in range(max_retries):
|
| 323 |
try:
|
| 324 |
stock = yf.Ticker(ticker)
|
| 325 |
-
#
|
| 326 |
-
hist = stock.history(period=
|
| 327 |
|
| 328 |
if hist.empty:
|
| 329 |
logger.warning(f"[{ticker}] ๋ฐ์ดํฐ ์์ (๋น ๊ฒฐ๊ณผ)")
|
|
@@ -432,6 +432,7 @@ def run_pipeline(
|
|
| 432 |
all_dataset_name,
|
| 433 |
recent_dataset_name,
|
| 434 |
batch_size,
|
|
|
|
| 435 |
progress=gr.Progress()
|
| 436 |
):
|
| 437 |
"""
|
|
@@ -466,6 +467,7 @@ def run_pipeline(
|
|
| 466 |
# ========== 2๋จ๊ณ: ์ผํ ํ์ด๋ธ์ค ๋ฐ์ดํฐ ์์ง ==========
|
| 467 |
logs.append(f"\n๐ฅ [2๋จ๊ณ] ์ผํ ํ์ด๋ธ์ค ๋ฐ์ดํฐ ์์ง ์์ (์ด {len(all_tickers)}๊ฐ ํฐ์ปค)")
|
| 468 |
logs.append(f" - ๋ฐฐ์น ํฌ๊ธฐ: {batch_size}")
|
|
|
|
| 469 |
logs.append(f" โ ๏ธ ๋ฐ๋ณต๋ฌธ์ด๋ผ ์ค๋ ๊ฑธ๋ฆฝ๋๋ค. ์ ์ฒด ํฐ์ปค ์์ ๋ฐ๋ผ ์ ์๊ฐ ์์๋ ์ ์์ต๋๋ค.")
|
| 470 |
|
| 471 |
all_data_frames = []
|
|
@@ -478,7 +480,7 @@ def run_pipeline(
|
|
| 478 |
progress_pct = (i + 1) / total
|
| 479 |
progress(progress_pct, desc=f"์์ง ์ค: {ticker} ({i + 1}/{total})")
|
| 480 |
|
| 481 |
-
ticker_df = fetch_ticker_data(ticker)
|
| 482 |
|
| 483 |
if ticker_df is not None and not ticker_df.empty:
|
| 484 |
all_data_frames.append(ticker_df)
|
|
@@ -564,7 +566,7 @@ with gr.Blocks(
|
|
| 564 |
|
| 565 |
### ํ์ดํ๋ผ์ธ ํ๋ฆ
|
| 566 |
1. ๐ ๋์ค๋ฅ & ๋ด์์ฆ๊ถ๊ฑฐ๋์ ์ ์ฒด ํฐ์ปค ๋ชฉ๋ก ์์ง
|
| 567 |
-
2. ๐ฅ ํฐ์ปค๋ณ ์ผํ ํ์ด๋ธ์ค ์ผ๋ณ ๋ฐ์ดํฐ ์กฐํ (
|
| 568 |
3. ๐ฆ **all ๋ฐ์ดํฐ์
** ์์ฑ (์ ์ฒด๊ธฐ๊ฐ ๋ฐ์ดํฐ)
|
| 569 |
4. ๐๏ธ ํฐ์ปค๋ณ ์ต๊ทผ 30์ผ ํํฐ๋ง โ **30์ผ ๋ฐ์ดํฐ์
** ์์ฑ
|
| 570 |
5. ๐ ํ๊น
ํ์ด์ค ํ๋ธ์ ์
๋ก๋
|
|
@@ -607,6 +609,13 @@ with gr.Blocks(
|
|
| 607 |
info="๋ช ๊ฐ ํฐ์ปค๋ง๋ค ๋ก๊ทธ๋ฅผ ์ถ๋ ฅํ ์ง ์ค์ "
|
| 608 |
)
|
| 609 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 610 |
with gr.Row():
|
| 611 |
preview_btn = gr.Button("๐ ํฐ์ปค ๋ชฉ๋ก ๋ฏธ๋ฆฌ๋ณด๊ธฐ", variant="secondary")
|
| 612 |
start_btn = gr.Button("๐ ํ์ดํ๋ผ์ธ ์์", variant="primary")
|
|
@@ -634,7 +643,8 @@ with gr.Blocks(
|
|
| 634 |
hf_token_input,
|
| 635 |
all_dataset_input,
|
| 636 |
recent_dataset_input,
|
| 637 |
-
batch_size_input
|
|
|
|
| 638 |
],
|
| 639 |
outputs=[output_log]
|
| 640 |
)
|
|
|
|
| 313 |
return [], [], []
|
| 314 |
|
| 315 |
|
| 316 |
+
def fetch_ticker_data(ticker, period="max", max_retries=3):
|
| 317 |
"""
|
| 318 |
+
๊ฐ๋ณ ํฐ์ปค์ ๊ธฐ๊ฐ๋ณ ์ผ๋ณ ๋ฐ์ดํฐ๋ฅผ ์ผํ ํ์ด๋ธ์ค์์ ์กฐํ
|
| 319 |
+
- period: yfinance history ๊ธฐ๊ฐ ํ๋ผ๋ฏธํฐ (์: max, 10y, 5y, 1y, 6mo, 3mo)
|
| 320 |
- interval="1d" : ์ผ๋ณ ๋ฐ์ดํฐ
|
| 321 |
"""
|
| 322 |
for attempt in range(max_retries):
|
| 323 |
try:
|
| 324 |
stock = yf.Ticker(ticker)
|
| 325 |
+
# ๊ธฐ๊ฐ๋ณ, ์ผ๋ณ ๋ฐ์ดํฐ ์กฐํ
|
| 326 |
+
hist = stock.history(period=period, interval="1d")
|
| 327 |
|
| 328 |
if hist.empty:
|
| 329 |
logger.warning(f"[{ticker}] ๋ฐ์ดํฐ ์์ (๋น ๊ฒฐ๊ณผ)")
|
|
|
|
| 432 |
all_dataset_name,
|
| 433 |
recent_dataset_name,
|
| 434 |
batch_size,
|
| 435 |
+
period,
|
| 436 |
progress=gr.Progress()
|
| 437 |
):
|
| 438 |
"""
|
|
|
|
| 467 |
# ========== 2๋จ๊ณ: ์ผํ ํ์ด๋ธ์ค ๋ฐ์ดํฐ ์์ง ==========
|
| 468 |
logs.append(f"\n๐ฅ [2๋จ๊ณ] ์ผํ ํ์ด๋ธ์ค ๋ฐ์ดํฐ ์์ง ์์ (์ด {len(all_tickers)}๊ฐ ํฐ์ปค)")
|
| 469 |
logs.append(f" - ๋ฐฐ์น ํฌ๊ธฐ: {batch_size}")
|
| 470 |
+
logs.append(f" - ์กฐํ ๊ธฐ๊ฐ(period): {period}")
|
| 471 |
logs.append(f" โ ๏ธ ๋ฐ๋ณต๋ฌธ์ด๋ผ ์ค๋ ๊ฑธ๋ฆฝ๋๋ค. ์ ์ฒด ํฐ์ปค ์์ ๋ฐ๋ผ ์ ์๊ฐ ์์๋ ์ ์์ต๋๋ค.")
|
| 472 |
|
| 473 |
all_data_frames = []
|
|
|
|
| 480 |
progress_pct = (i + 1) / total
|
| 481 |
progress(progress_pct, desc=f"์์ง ์ค: {ticker} ({i + 1}/{total})")
|
| 482 |
|
| 483 |
+
ticker_df = fetch_ticker_data(ticker, period=period)
|
| 484 |
|
| 485 |
if ticker_df is not None and not ticker_df.empty:
|
| 486 |
all_data_frames.append(ticker_df)
|
|
|
|
| 566 |
|
| 567 |
### ํ์ดํ๋ผ์ธ ํ๋ฆ
|
| 568 |
1. ๐ ๋์ค๋ฅ & ๋ด์์ฆ๊ถ๊ฑฐ๋์ ์ ์ฒด ํฐ์ปค ๋ชฉ๋ก ์์ง
|
| 569 |
+
2. ๐ฅ ํฐ์ปค๋ณ ์ผํ ํ์ด๋ธ์ค ์ผ๋ณ ๋ฐ์ดํฐ ์กฐํ (`period` ์ค์ ๊ฐ๋ฅ)
|
| 570 |
3. ๐ฆ **all ๋ฐ์ดํฐ์
** ์์ฑ (์ ์ฒด๊ธฐ๊ฐ ๋ฐ์ดํฐ)
|
| 571 |
4. ๐๏ธ ํฐ์ปค๋ณ ์ต๊ทผ 30์ผ ํํฐ๋ง โ **30์ผ ๋ฐ์ดํฐ์
** ์์ฑ
|
| 572 |
5. ๐ ํ๊น
ํ์ด์ค ํ๋ธ์ ์
๋ก๋
|
|
|
|
| 609 |
info="๋ช ๊ฐ ํฐ์ปค๋ง๋ค ๋ก๊ทธ๋ฅผ ์ถ๋ ฅํ ์ง ์ค์ "
|
| 610 |
)
|
| 611 |
|
| 612 |
+
period_input = gr.Dropdown(
|
| 613 |
+
label="์กฐํ ๊ธฐ๊ฐ (Yahoo period)",
|
| 614 |
+
choices=["max", "10y", "5y", "2y", "1y", "6mo", "3mo", "1mo"],
|
| 615 |
+
value="max",
|
| 616 |
+
info="์ ์ฒด ์์ง ์๊ฐ์ด ๊ธธ๋ฉด 10y/5y ๋ฑ์ผ๋ก ์ค์ฌ ์คํํ ์ ์์ต๋๋ค."
|
| 617 |
+
)
|
| 618 |
+
|
| 619 |
with gr.Row():
|
| 620 |
preview_btn = gr.Button("๐ ํฐ์ปค ๋ชฉ๋ก ๋ฏธ๋ฆฌ๋ณด๊ธฐ", variant="secondary")
|
| 621 |
start_btn = gr.Button("๐ ํ์ดํ๋ผ์ธ ์์", variant="primary")
|
|
|
|
| 643 |
hf_token_input,
|
| 644 |
all_dataset_input,
|
| 645 |
recent_dataset_input,
|
| 646 |
+
batch_size_input,
|
| 647 |
+
period_input
|
| 648 |
],
|
| 649 |
outputs=[output_log]
|
| 650 |
)
|