-i9E.dZddlmZddlmZddlmZmZmZmZm Z m Z m Z m Z m Z mZmZmZddlmZddlmZeZGddeZGd d eZGd d eZGd deZGddeZGddeZGddeZGddeZy)zR Database models for AI Trading System Sprint 1: Foundation - Data storage models )datetime)Optional) BooleanColumnDateDateTimeFloat ForeignKeyIntegerStringTextUniqueConstraintIndexfunc)declarative_base) relationshipceZdZdZdZeeddZeeddddZ eedZ eed Z eed Z eed d Z eedZeed Zeeej& Zeeej&ej& ZedddZedddZdZy)StockzStock/Ticker informationstocksT primary_key autoincrementF)uniquenullableindexd2zBorsa Italianadefaultr!onupdate PriceDatastockall, delete-orphanback_populatescascadeFundamentalDatac<d|jd|jdS)Nz)tickernameselfs 7/mnt/ssd/data/python-lab/Trading/src/database/models.py__repr__zStock.__repr__2s  YtyykEEN)__name__ __module__ __qualname____doc__ __tablename__rr idr r-r.sectorindustrymarketpriorityr is_activerrutcnow created_at updated_atr price_datafundamental_datar2r3r1rrs"M T >B F2Jte4 HF &+ D F3K FfSk"H F2J(8 9FfRj!Hw-I(//:J(//HOOTJk'K_`J#$5gWklFr3rcReZdZdZdZedddedddfZee dd Z ee e d d Z ee d d ZeeZeeZeeZeed Zee ZeeZeeddZee ej2ZeddZdZy)r$z#Historical and real-time price datarBstock_iddate uq_stock_dater.idx_stock_dateTr stocks.idFrrrryfinancer rr(cVd|jd|jd|jdS)Nz)rFrGcloser/s r1r2zPriceData.__repr__Rs.%dmm_HTYYKyQUQ[Q[P\\^__r3N)r4r5r6r7r8rr__table_args__rr r9r rFrrGr openhighlowrSvolume adj_closer data_sourcerr?r@rr%r2rDr3r1r$r$6s- MV/B  F3N T >Bgz+6GH (U$ 7D %=D %=D -C 55 )E G_Fu IZ8K(//:J  >E`r3r$ceZdZdZdZedddedddfZee dd Z ee e d d Z ee d d ZeeZeeZeeZeeZeeZeeZeeZeeZeeZeeZeeZeeZeeZeeZeedZeeZ eeZ!eeZ"eeZ#eeZ$eeZ%eeZ&eeZ'eeZ(eeZ)eeZ*eeZ+eeZ,eeZ-eeZ.eeZ/eeZ0eeZ1eeZ2eeZ3eeZ4eeZ5eeZ6ee Z7ee Z8eeZ9eeZ:ee Z;ee dZ<eeddZ=ee e>j~Z@eAddZBdZCy)r*zFundamental metrics for stocksrCrFrGuq_fundamental_stock_daterIidx_fundamental_stock_dateTrrKFrLrMrr rNrrOcVd|jd|jd|jdS)NzBgz+6GH (U$ 7De}He}He}Hu I%=L5MMe} -C -CE]N%=LE]N &u "6":. -5MM-KE]NUmOJ %=D JJe}He} !%=5MM%=L5MM E]F5MM %=DJ%=L 5MMh'"8, %=Du gGQ/NZ8K(//:J 1C DElr3r*c0eZdZdZdZeeddZeedddZ ee Z ee d Z ee d Zeed Zeeej& Zeeej&ej& Zed d d Zedd d ZdZy) PortfoliozPortfolio/Account definition portfoliosTrrF)rrr r" Transaction portfolior&r'Positionc<d|jd|jdS)Nzrrr?r@rAr transactions positionsr2rDr3r1rrs& M T >B &+d ;D,K%-L%-Lw-I(//:J(//HOOTJ kSghLZ MabILr3rcleZdZdZdZedddfZeeddZ eee dd Z eee d d Z ee d d Zeed d Zeed Zeed ZeedZeed ZeeZee ej2ZeddZedZdZy)rz!Portfolio transactions (buy/sell)ridx_transaction_portfolio_date portfolio_idrGTr portfolios.idFrLrKrM rr rrOrc pd|jd|jd|jd|jd S)NzB':o#>OLgz+6GH (U$ 7D &*u -Dg.H 55 )Es+J%%0L 4LE(//:J[HI  !Ewr3rcjeZdZdZdZedddfZeeddZ eee d d Z eee d d Z eed Z eed Zeed ZeeZeeZeeZeeZeeej.ej. ZeddZedZdZy)rzCurrent portfolio positionsrrrFuq_portfolio_stockrITrrFrLrKr"rrOrcVd|jd|jd|jdS)NzB':o#>OLgz+6GHg.H551M.J5MM5MME]N(//HOOTJ[EI  !Elr3rceZdZdZdZeddddedded ded d ed d fZee ddZ ee e ddZ ee dddZee dZee dZee Zee dZeeZeeZeeZeeZeeZeeZeeZeeZeeZee dZeee jBdZ"eeZ#ee dZ$ee ddZ%eeZ&eeZ'eee jBZ(eee jBe jBZ)e*dZ+dZ,y) Opportunityz Warren AI - Investment Opportunities Stores high-quality value investing opportunities identified by Warren AI. Only opportunities with score >= 80 (20%+ margin of safety) are saved. opportunitiesr- found_datesource!uq_opportunity_ticker_date_sourcerIidx_opportunities_tickeridx_opportunities_found_dateidx_opportunities_statusstatusidx_opportunities_scorescoreTrrKrLrFrMrrr)r!rnewr r"rc pd|jd|jd|jd|jd S)NzBgz+6FHF2Jd ;F&+&L F3K F 7OEF2J'NJ5MMe}%=Lt I4LMt Id|Hd|&*%L(//EJJ"K F2J F F2J .F8$M 4LE(//:J(//HOOTJ  !EEr3rceZdZdZdZedddfZeeddZ eee d d Z ee d Z eed d d Zeed Zeed d ZeeZeeZeeZeeZeeZeeZeeZeeZeeZeeZeeZeeZeeZ eeZ!eeZ"eeZ#eeZ$eeZ%eeZ&eeZ'eeZ(eeZ)eeZ*eeZ+eeZ,eeZ-eeZ.eeZ/eeZ0eeZ1eeZ2eeZ3eeZ4eeZ5eeZ6eeZ7eeZ8eeZ9eeZ:eeZ;eeZ<eeZ=eeZ>eeZ?eeZ@eeZAeeZBeeZCeeZDeeZEeeZFeeZGeeZHeeZIeeZJeeZKeeZLeeZMeeZNeeZOeeZPeeZQeeRZSeeZTeeZUeedZVeeRZWeeRZXeeRZYeeRZZeeddZ[ee\e]jZ_e`dZadZby)OpportunityDetailedaY Enhanced opportunity tracking with scoring breakdown for algorithm audit (Schema v4.1). Stores complete scoring breakdown (66 columns) for data-driven optimization decisions. Philosophy: "Measure twice, cut once" - Collect 8-12 weeks of detailed scoring breakdown before deciding whether to optimize the algorithm formula. opportunity_detailedrF scan_dateuq_oppdet_stock_scanrITrrKFrLrrMrrz4.1r )server_defaultrcVd|jd|jd|jdS)NzBgz+6GHte,I F2Jd ;F51KF2J7NJ5MMe}t Iu IUmO5MM%=L-K5MMe}He}HE]Nu IJ"%="5M%=L -e}u IUmOJ$UmUmO"%= -5MM5MM5MM!%=!%= -#E]u Iu Iu Ie}e}UmOUmGe}e}He}He}HE]N -CE]NE]NUmO%=Le}e}H E]F5MM %=Du ge}!%=gu  -F3K F'?LJwIF2J6Nr s     8'FDF2``@]ld]l@LL.w$wBltlj?E$?ED@q$@qr3