44from datetime import datetime , timezone
55from urllib import parse , request
66import psycopg
7+ from validation_models import GreeksIn
78
89DB_URL = os .getenv ("DATABASE_URL" , "postgresql://quant:quant_dev_change_me@127.0.0.1:5432/quant" )
910TRADIER_BASE = os .getenv ("TRADIER_SANDBOX_BASE_URL" ) or os .getenv ("TRADIER_PAPER_BASE_URL" ) or "https://sandbox.tradier.com/v1"
@@ -55,6 +56,22 @@ def main():
5556
5657 for o in options [:150 ]:
5758 greeks = o .get ("greeks" ) or {}
59+ try :
60+ g = GreeksIn (
61+ underlying = sym ,
62+ option_symbol = o .get ("symbol" ) or "" ,
63+ ts = now ,
64+ price = o .get ("last" ) or o .get ("bid" ) or o .get ("ask" ) or 0 ,
65+ iv = greeks .get ("mid_iv" ) or greeks .get ("smv_vol" ),
66+ delta = greeks .get ("delta" ),
67+ gamma = greeks .get ("gamma" ),
68+ vega = greeks .get ("vega" ),
69+ theta = greeks .get ("theta" ),
70+ rho = greeks .get ("rho" ),
71+ model = 'tradier'
72+ )
73+ except Exception :
74+ continue
5875 cur .execute (
5976 """
6077 insert into options.greeks_snapshot(
@@ -64,9 +81,9 @@ def main():
6481 set price=excluded.price, iv=excluded.iv, delta=excluded.delta, gamma=excluded.gamma,
6582 vega=excluded.vega, theta=excluded.theta, rho=excluded.rho, model=excluded.model
6683 """ ,
67- (sym , o . get ( "symbol" ), now , o . get ( "last" ) or o . get ( "bid" ) or o . get ( "ask" ) ,
68- greeks . get ( "mid_iv" ) or greeks . get ( "smv_vol" ), greeks . get ( " delta" ), greeks . get ( " gamma" ) ,
69- greeks . get ( " vega" ), greeks . get ( " theta" ), greeks . get ( " rho" ) ),
84+ (g . underlying , g . option_symbol , g . ts , g . price ,
85+ g . iv , g . delta , g . gamma ,
86+ g . vega , g . theta , g . rho ),
7087 )
7188 written += 1
7289
0 commit comments