refactor(scripts): replace paperone.py with populate.py to populate database

This commit is contained in:
Giulio De Pasquale 2025-10-18 09:26:06 +01:00
parent 41d0f4060f
commit 5b67db68ea
2 changed files with 64 additions and 39 deletions

View File

@ -1,39 +0,0 @@
#!/usr/bin/env python
from sys import exit
from dotenv import load_dotenv
from typing import NoReturn
from paperone.utils import (
parse_date_yyyymmdd,
is_trading_day,
get_last_n_trading_days,
)
from os import environ
from paperone.client import Client
from rich.progress import track
load_dotenv()
def main() -> NoReturn:
api_key = environ.get("API_KEY")
if not api_key:
print("API_KEY not set")
exit(0)
client = Client(api_key)
date = parse_date_yyyymmdd("20250821")
days_range = 60
dates_range = get_last_n_trading_days(date, days_range)
# tickers = ["VIX"]
# indicators = list(IndicatorEnum)
for x in track([x for x in dates_range if is_trading_day(x)]):
print(client.ticker_data_for("AAPL", x))
exit(0)
if __name__ == "__main__":
main()

64
populate.py Executable file
View File

@ -0,0 +1,64 @@
#!/usr/bin/env python
from sys import exit
from dotenv import load_dotenv
from typing import NoReturn
from paperone.utils import (
get_last_n_trading_days,
)
from paperone.database import TradingDataCRUD
from os import environ
from paperone.client import Client
from rich.progress import track
from datetime import datetime
load_dotenv()
DB_FILE = "trading_data.db"
def main() -> NoReturn:
api_key = environ.get("API_KEY")
if not api_key:
print("API_KEY not set")
exit(0)
client = Client(api_key)
crud = TradingDataCRUD(f"sqlite:///{DB_FILE}")
date = datetime.now()
days_range = 360
tickers = [
"AAPL",
"ARM",
"^VIX",
"AMD",
"GOOG",
"META",
"MNDY",
"MSFT",
"NVDA",
"VOO",
"VT",
]
# Loop through tickers and fetch data
for ticker in tickers:
trading_days = get_last_n_trading_days(date, days_range)
for day in track(trading_days, description=f"{ticker}"):
existing = crud.get_ohlcv(ticker, day)
if existing:
continue
ticker_data = client.ticker_data_for(ticker, day)
if not ticker_data:
continue
crud.create_ohlcv(ticker_data)
exit(0)
if __name__ == "__main__":
main()