refactor(scripts): replace paperone.py with populate.py to populate database
This commit is contained in:
parent
41d0f4060f
commit
5b67db68ea
39
paperone.py
39
paperone.py
@ -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
64
populate.py
Executable 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()
|
Loading…
x
Reference in New Issue
Block a user