finance_dev 0.9.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- finance_dev/__init__.py +18 -0
- finance_dev/_hooks/__init__.py +7 -0
- finance_dev/_hooks/clientcredentials.py +319 -0
- finance_dev/_hooks/oauth2scopes.py +50 -0
- finance_dev/_hooks/registration.py +13 -0
- finance_dev/_hooks/sdkhooks.py +82 -0
- finance_dev/_hooks/types.py +125 -0
- finance_dev/_version.py +16 -0
- finance_dev/accounts.py +797 -0
- finance_dev/alternativedata.py +4830 -0
- finance_dev/analytics.py +3757 -0
- finance_dev/basesdk.py +393 -0
- finance_dev/calendar.py +1523 -0
- finance_dev/chart.py +1881 -0
- finance_dev/company.py +1105 -0
- finance_dev/corporateactions.py +1795 -0
- finance_dev/economy.py +1153 -0
- finance_dev/errors/__init__.py +94 -0
- finance_dev/errors/apierror.py +41 -0
- finance_dev/errors/authenticationerrorenvelope.py +43 -0
- finance_dev/errors/badrequest.py +34 -0
- finance_dev/errors/errorenvelope.py +42 -0
- finance_dev/errors/errorresponse.py +45 -0
- finance_dev/errors/financedevapierror.py +31 -0
- finance_dev/errors/forbidden.py +34 -0
- finance_dev/errors/internalservererror.py +35 -0
- finance_dev/errors/no_response_error.py +18 -0
- finance_dev/errors/notfound.py +34 -0
- finance_dev/errors/orderhistorybadrequest.py +35 -0
- finance_dev/errors/predorderserrorenvelope.py +42 -0
- finance_dev/errors/responsevalidationerror.py +28 -0
- finance_dev/errors/unauthorized.py +34 -0
- finance_dev/estimates.py +1906 -0
- finance_dev/etf.py +1108 -0
- finance_dev/filings.py +586 -0
- finance_dev/financials.py +4079 -0
- finance_dev/history.py +477 -0
- finance_dev/httpclient.py +126 -0
- finance_dev/indices.py +2308 -0
- finance_dev/logos.py +692 -0
- finance_dev/market.py +1825 -0
- finance_dev/markets.py +952 -0
- finance_dev/models/__init__.py +4568 -0
- finance_dev/models/accountbalancev2.py +340 -0
- finance_dev/models/accountitem.py +78 -0
- finance_dev/models/accountposition.py +147 -0
- finance_dev/models/aggregatetechnicalindicatorsresponse.py +192 -0
- finance_dev/models/analystinsightitem.py +161 -0
- finance_dev/models/analystinsightsresponse.py +39 -0
- finance_dev/models/apperror.py +123 -0
- finance_dev/models/authenticationerrordetail.py +58 -0
- finance_dev/models/bankbranchesresponse.py +96 -0
- finance_dev/models/basicfinancials.py +243 -0
- finance_dev/models/bullbearanalysisresponse.py +150 -0
- finance_dev/models/cancelorderop.py +40 -0
- finance_dev/models/cancelordrequest_union.py +287 -0
- finance_dev/models/cancelordresponse.py +115 -0
- finance_dev/models/cashflowstatement.py +290 -0
- finance_dev/models/cashflowstatementsresponse.py +61 -0
- finance_dev/models/chartbars.py +111 -0
- finance_dev/models/chartconfig.py +81 -0
- finance_dev/models/chartresolution.py +46 -0
- finance_dev/models/companyesgresponse.py +408 -0
- finance_dev/models/companyexecutive.py +70 -0
- finance_dev/models/companyexecutiveresponse.py +39 -0
- finance_dev/models/companypeersresponse.py +38 -0
- finance_dev/models/companypresentationresponse.py +96 -0
- finance_dev/models/companyprofile.py +255 -0
- finance_dev/models/conferencecallsresponse.py +169 -0
- finance_dev/models/congressionaltradingresponse.py +138 -0
- finance_dev/models/covid19uscasesresponse.py +79 -0
- finance_dev/models/createconfigwatchlistop.py +40 -0
- finance_dev/models/createwatchlistrequest.py +43 -0
- finance_dev/models/dailymarketsummaryresponse.py +73 -0
- finance_dev/models/deleteconfigwatchlistbyidop.py +53 -0
- finance_dev/models/dividenditem.py +125 -0
- finance_dev/models/dividendsresponse.py +61 -0
- finance_dev/models/earningrelease.py +291 -0
- finance_dev/models/earningscallliveresponse.py +103 -0
- finance_dev/models/earningsqualityscoreresponse.py +140 -0
- finance_dev/models/earningssurprisesresponse.py +125 -0
- finance_dev/models/ebitdaestimatesresponse.py +176 -0
- finance_dev/models/ebitestimatesresponse.py +176 -0
- finance_dev/models/economicscalendarevent.py +160 -0
- finance_dev/models/economicsindicator.py +87 -0
- finance_dev/models/epsestimatesresponse.py +176 -0
- finance_dev/models/equitydetailsdto.py +569 -0
- finance_dev/models/errorcode.py +48 -0
- finance_dev/models/etblistresponse.py +43 -0
- finance_dev/models/etbsearchrequest.py +21 -0
- finance_dev/models/etbsearchresponse.py +43 -0
- finance_dev/models/etfcountryallocationresponse.py +113 -0
- finance_dev/models/etfholdingsresponse.py +163 -0
- finance_dev/models/etfprofileresponse.py +234 -0
- finance_dev/models/etfsectorallocationresponse.py +113 -0
- finance_dev/models/exchangecode.py +90 -0
- finance_dev/models/fdaadvisorycommitteecalendarresponse.py +88 -0
- finance_dev/models/filingsimilarityrecord.py +115 -0
- finance_dev/models/filingssimilarityindexdatawrapper.py +52 -0
- finance_dev/models/filingssimilarityindexresponse.py +42 -0
- finance_dev/models/financialratiosresponse.py +252 -0
- finance_dev/models/financialsreporteddatawrapper.py +49 -0
- finance_dev/models/financialsreportedresponse.py +42 -0
- finance_dev/models/financialsrevenuebreakdowndatawrapper.py +49 -0
- finance_dev/models/financialsrevenuebreakdownresponse.py +42 -0
- finance_dev/models/financialsstatementsdatawrapper.py +44 -0
- finance_dev/models/financialsstatementsresponse.py +42 -0
- finance_dev/models/financialstatement.py +171 -0
- finance_dev/models/financialstatementtype.py +14 -0
- finance_dev/models/getaccountbalanceop.py +53 -0
- finance_dev/models/getaccountpositionsop.py +53 -0
- finance_dev/models/getaccountsresponse.py +22 -0
- finance_dev/models/getaggregatetechnicalindicatorsop.py +94 -0
- finance_dev/models/getanalystinsightsop.py +164 -0
- finance_dev/models/getbankbranchesop.py +53 -0
- finance_dev/models/getbaseeventop.py +87 -0
- finance_dev/models/getbullbearanalysisop.py +91 -0
- finance_dev/models/getcashflowstatementsop.py +564 -0
- finance_dev/models/getchartconfigop.py +40 -0
- finance_dev/models/getcharthistoryop.py +122 -0
- finance_dev/models/getcharttimeop.py +39 -0
- finance_dev/models/getcompanyesgop.py +53 -0
- finance_dev/models/getcompanyexecutivesop.py +56 -0
- finance_dev/models/getcompanymetricsop.py +68 -0
- finance_dev/models/getcompanypeersop.py +53 -0
- finance_dev/models/getcompanypresentationop.py +56 -0
- finance_dev/models/getcompanyprofileop.py +86 -0
- finance_dev/models/getconferencecallsop.py +111 -0
- finance_dev/models/getconfigwatchlistbyidop.py +53 -0
- finance_dev/models/getconfigwatchlistsop.py +40 -0
- finance_dev/models/getcongressionaltradingop.py +73 -0
- finance_dev/models/getcovid19uscasesop.py +43 -0
- finance_dev/models/getdailymarketsummaryop.py +92 -0
- finance_dev/models/getdividendsop.py +294 -0
- finance_dev/models/getearningscalendarop.py +87 -0
- finance_dev/models/getearningscallliveop.py +91 -0
- finance_dev/models/getearningsqualityscoreop.py +81 -0
- finance_dev/models/getearningssurprisesop.py +80 -0
- finance_dev/models/getebitdaestimatesop.py +91 -0
- finance_dev/models/getebitestimatesop.py +88 -0
- finance_dev/models/geteconomicscalendarop.py +92 -0
- finance_dev/models/geteconomicscalendarresponse.py +56 -0
- finance_dev/models/getepsestimatesop.py +88 -0
- finance_dev/models/getequitydetailsop.py +56 -0
- finance_dev/models/getequitydetailsresponse.py +45 -0
- finance_dev/models/getetblistop.py +40 -0
- finance_dev/models/getetfcountryallocationop.py +80 -0
- finance_dev/models/getetfholdingsop.py +96 -0
- finance_dev/models/getetfprofileop.py +77 -0
- finance_dev/models/getetfsectorallocationop.py +80 -0
- finance_dev/models/geteventcontractsop.py +87 -0
- finance_dev/models/getfdaadvisorycommitteecalendarop.py +47 -0
- finance_dev/models/getfilingssimilarityindexop.py +102 -0
- finance_dev/models/getfinancialratiosop.py +612 -0
- finance_dev/models/getfinancialstatementsop.py +117 -0
- finance_dev/models/getfundownershipop.py +77 -0
- finance_dev/models/gethistoricaldataop.py +61 -0
- finance_dev/models/gethistoricalesgop.py +53 -0
- finance_dev/models/gethistorybatchop.py +74 -0
- finance_dev/models/gethistoryop.py +123 -0
- finance_dev/models/getincomestatementsop.py +564 -0
- finance_dev/models/getindexbarop.py +140 -0
- finance_dev/models/getindexbarsop.py +149 -0
- finance_dev/models/getindexchartbarsop.py +178 -0
- finance_dev/models/getindexrealtimevaluesop.py +94 -0
- finance_dev/models/getinflationexpectationsop.py +157 -0
- finance_dev/models/getinflationop.py +154 -0
- finance_dev/models/getinsidertransactionsop.py +90 -0
- finance_dev/models/getinstitutionalownershipop.py +99 -0
- finance_dev/models/getinstitutionalportfolioop.py +75 -0
- finance_dev/models/getinvestmentthemeop.py +68 -0
- finance_dev/models/getipocalendarop.py +63 -0
- finance_dev/models/getlobbyingop.py +70 -0
- finance_dev/models/getmarketbreadthop.py +40 -0
- finance_dev/models/getmarketholidaysop.py +65 -0
- finance_dev/models/getmarketstatusop.py +65 -0
- finance_dev/models/getmergersandacquisitionsop.py +113 -0
- finance_dev/models/getnetinflowop.py +40 -0
- finance_dev/models/getnewsbyidop.py +73 -0
- finance_dev/models/getnewsop.py +98 -0
- finance_dev/models/getnewssentimentop.py +53 -0
- finance_dev/models/getoptionchainsnapshotop.py +244 -0
- finance_dev/models/getoptioncontractsnapshotop.py +69 -0
- finance_dev/models/getoptiondetailsop.py +56 -0
- finance_dev/models/getoptiondetailsresponse.py +45 -0
- finance_dev/models/getoptionlasttradeop.py +56 -0
- finance_dev/models/getoptionopencloseop.py +66 -0
- finance_dev/models/getoptionpreviousdayop.py +56 -0
- finance_dev/models/getoptionquotesop.py +177 -0
- finance_dev/models/getoptionsactivityop.py +111 -0
- finance_dev/models/getoptionsetfstopvolumeop.py +70 -0
- finance_dev/models/getoptionsstockstopgainersop.py +70 -0
- finance_dev/models/getoptionsstockstopvolumeop.py +70 -0
- finance_dev/models/getoptionsunusualactivityop.py +100 -0
- finance_dev/models/getoptiontradesop.py +177 -0
- finance_dev/models/getordersv2response.py +66 -0
- finance_dev/models/getownershipdataop.py +77 -0
- finance_dev/models/getpositionsresponse.py +39 -0
- finance_dev/models/getpredictionorderop.py +88 -0
- finance_dev/models/getpricetargetop.py +53 -0
- finance_dev/models/getquotesop.py +53 -0
- finance_dev/models/getratingsop.py +164 -0
- finance_dev/models/getratingsresponse.py +39 -0
- finance_dev/models/getreportedfinancialsop.py +127 -0
- finance_dev/models/getrevenuebreakdownop.py +85 -0
- finance_dev/models/getrevenueestimatesop.py +91 -0
- finance_dev/models/getsecfilingsop.py +113 -0
- finance_dev/models/getsectortickersop.py +124 -0
- finance_dev/models/getsectorwisechangeop.py +84 -0
- finance_dev/models/getshortinterestop.py +334 -0
- finance_dev/models/getshortvolumeop.py +333 -0
- finance_dev/models/getsocialsentimentop.py +90 -0
- finance_dev/models/getspinoffsop.py +112 -0
- finance_dev/models/getstockaggregatesop.py +174 -0
- finance_dev/models/getstocklastquoteop.py +56 -0
- finance_dev/models/getstocklasttradeop.py +56 -0
- finance_dev/models/getstockopencloseop.py +90 -0
- finance_dev/models/getstockpreviousdayop.py +80 -0
- finance_dev/models/getstockquotesop.py +177 -0
- finance_dev/models/getstocksnapshotsop.py +82 -0
- finance_dev/models/getstocksplitsop.py +243 -0
- finance_dev/models/getstocktradesop.py +177 -0
- finance_dev/models/getsupplychainop.py +53 -0
- finance_dev/models/getsupportresistancelevelsop.py +90 -0
- finance_dev/models/getsymbolinfoop.py +53 -0
- finance_dev/models/gettechnicalindicatorop.py +172 -0
- finance_dev/models/gettechnicalpatternsop.py +88 -0
- finance_dev/models/gettenderoffersop.py +112 -0
- finance_dev/models/gettickhistoryop.py +104 -0
- finance_dev/models/gettopgainersop.py +78 -0
- finance_dev/models/gettoplosersop.py +78 -0
- finance_dev/models/gettopmostactiveop.py +78 -0
- finance_dev/models/gettranscriptop.py +53 -0
- finance_dev/models/gettreasuryyieldsop.py +157 -0
- finance_dev/models/getunifiedsnapshotop.py +223 -0
- finance_dev/models/getupgradesdowngradesop.py +91 -0
- finance_dev/models/getusaspendingop.py +70 -0
- finance_dev/models/getuseraccountsop.py +40 -0
- finance_dev/models/getusptopatentsop.py +70 -0
- finance_dev/models/getvisaapplicationsop.py +73 -0
- finance_dev/models/historicalesgresponse.py +439 -0
- finance_dev/models/httpmetadata.py +24 -0
- finance_dev/models/incomestatement.py +296 -0
- finance_dev/models/incomestatementsresponse.py +61 -0
- finance_dev/models/indexbarresponse.py +194 -0
- finance_dev/models/indexbarsresponse.py +123 -0
- finance_dev/models/indexchartbarsresponse.py +213 -0
- finance_dev/models/indexgroupsresponse.py +78 -0
- finance_dev/models/indexlistresponse.py +95 -0
- finance_dev/models/indexsearchresponse.py +93 -0
- finance_dev/models/indicesbygroupresponse.py +93 -0
- finance_dev/models/indicesidentifiertype.py +28 -0
- finance_dev/models/indicesrealtimeindexinfo.py +67 -0
- finance_dev/models/indicesrealtimeindexvalue.py +157 -0
- finance_dev/models/indicesrealtimevaluesitem.py +80 -0
- finance_dev/models/indicesrealtimevaluesresponse.py +42 -0
- finance_dev/models/inflationexpectationsresponse.py +140 -0
- finance_dev/models/inflationresponse.py +132 -0
- finance_dev/models/insidertransaction.py +97 -0
- finance_dev/models/insidertransactionsresponse.py +39 -0
- finance_dev/models/institutionalholding.py +77 -0
- finance_dev/models/institutionalownershipresponse.py +39 -0
- finance_dev/models/institutionalportfolioresponse.py +39 -0
- finance_dev/models/investmentthemeid.py +35 -0
- finance_dev/models/investmentthemeresponse.py +80 -0
- finance_dev/models/ipocalendarresponse.py +39 -0
- finance_dev/models/ipoitem.py +93 -0
- finance_dev/models/listactiveordersop.py +87 -0
- finance_dev/models/listcategoriesop.py +79 -0
- finance_dev/models/listindexgroupsop.py +40 -0
- finance_dev/models/listindicesbygroupop.py +58 -0
- finance_dev/models/listindicesop.py +91 -0
- finance_dev/models/listoptioncontractsop.py +66 -0
- finance_dev/models/listoptionexpirydatesop.py +56 -0
- finance_dev/models/listorderhistoryop.py +139 -0
- finance_dev/models/listpredictionordersop.py +134 -0
- finance_dev/models/listtranscriptsop.py +53 -0
- finance_dev/models/lobbyingresponse.py +166 -0
- finance_dev/models/logosearchresponse.py +152 -0
- finance_dev/models/logosyncresponse.py +277 -0
- finance_dev/models/marketbreadth.py +97 -0
- finance_dev/models/marketbreadthresponse.py +44 -0
- finance_dev/models/marketholiday.py +56 -0
- finance_dev/models/marketholidayresponse.py +39 -0
- finance_dev/models/marketstatus.py +67 -0
- finance_dev/models/mergersandacquisitionsresponse.py +186 -0
- finance_dev/models/metricseriespoint.py +43 -0
- finance_dev/models/netinflow.py +81 -0
- finance_dev/models/netinflowresponse.py +44 -0
- finance_dev/models/newsitem.py +102 -0
- finance_dev/models/newslistresponse.py +128 -0
- finance_dev/models/newssentimentresponse.py +176 -0
- finance_dev/models/newstypeenum.py +16 -0
- finance_dev/models/optionchainsnapshotresponse.py +64 -0
- finance_dev/models/optioncontractsnapshotresponse.py +64 -0
- finance_dev/models/optioncontractsnapshotrow.py +164 -0
- finance_dev/models/optioncontractsresponse.py +131 -0
- finance_dev/models/optiondetailsdto.py +72 -0
- finance_dev/models/optionexpirydatesresponse.py +53 -0
- finance_dev/models/optionlasttraderesponse.py +169 -0
- finance_dev/models/optionopencloseresponse.py +97 -0
- finance_dev/models/optionpreviousdayresponse.py +89 -0
- finance_dev/models/optionquotesresponse.py +138 -0
- finance_dev/models/optionsactivityresponse.py +265 -0
- finance_dev/models/optionsnapshotcontractdetails.py +85 -0
- finance_dev/models/optionsnapshotdaybar.py +107 -0
- finance_dev/models/optionsnapshotgreeks.py +67 -0
- finance_dev/models/optionsnapshotlastquote.py +116 -0
- finance_dev/models/optionsnapshotlasttrade.py +102 -0
- finance_dev/models/optionsnapshotunderlying.py +86 -0
- finance_dev/models/optionsscreeneritem.py +151 -0
- finance_dev/models/optionsunusualactivityresponse.py +62 -0
- finance_dev/models/optionsunusualactivitytrade.py +103 -0
- finance_dev/models/optiontradesresponse.py +132 -0
- finance_dev/models/orderrequesttimeinforceenum.py +29 -0
- finance_dev/models/ordersideenum.py +20 -0
- finance_dev/models/ordertypeenum.py +20 -0
- finance_dev/models/ordleg.py +162 -0
- finance_dev/models/ordresponse.py +202 -0
- finance_dev/models/ownershipdataresponse.py +39 -0
- finance_dev/models/ownershiprecord.py +74 -0
- finance_dev/models/placeorderop.py +40 -0
- finance_dev/models/placeordrequest_union.py +335 -0
- finance_dev/models/placepredictionorderop.py +114 -0
- finance_dev/models/predmdbaseevent.py +62 -0
- finance_dev/models/predmdbaseeventhit.py +53 -0
- finance_dev/models/predmdbaseeventsearchresult.py +46 -0
- finance_dev/models/predmdbaseeventwithevents.py +32 -0
- finance_dev/models/predmdbatchhistoryrequest.py +16 -0
- finance_dev/models/predmdbatchhistoryresponse.py +16 -0
- finance_dev/models/predmdcategory.py +48 -0
- finance_dev/models/predmdcontract.py +177 -0
- finance_dev/models/predmdcontracthit.py +157 -0
- finance_dev/models/predmdcontractsearchresult.py +46 -0
- finance_dev/models/predmdevent.py +136 -0
- finance_dev/models/predmdeventhit.py +73 -0
- finance_dev/models/predmdeventsearchresult.py +46 -0
- finance_dev/models/predmdeventwithcontracts.py +22 -0
- finance_dev/models/predmdhistoryrequest.py +59 -0
- finance_dev/models/predmdhistoryresponse.py +53 -0
- finance_dev/models/predmdtick.py +53 -0
- finance_dev/models/predordersapperror.py +78 -0
- finance_dev/models/predordersorder.py +267 -0
- finance_dev/models/predordersorderdetail.py +26 -0
- finance_dev/models/predordersorderpage.py +45 -0
- finance_dev/models/predordersorderreport.py +88 -0
- finance_dev/models/predordersplaceorderrequest.py +159 -0
- finance_dev/models/previeworderop.py +40 -0
- finance_dev/models/previeworderresponse.py +127 -0
- finance_dev/models/pricetargetresponse.py +89 -0
- finance_dev/models/quotedata.py +49 -0
- finance_dev/models/quotesresponse.py +62 -0
- finance_dev/models/quotevalues.py +114 -0
- finance_dev/models/rating.py +193 -0
- finance_dev/models/ratingsaccuracy.py +242 -0
- finance_dev/models/replaceconfigwatchlistsop.py +40 -0
- finance_dev/models/replaceorderop.py +40 -0
- finance_dev/models/replaceordrequest_union.py +367 -0
- finance_dev/models/replaceordresponse.py +144 -0
- finance_dev/models/reportedbsitem.py +53 -0
- finance_dev/models/reportedfiling.py +110 -0
- finance_dev/models/reportedreport.py +39 -0
- finance_dev/models/reportingfrequency.py +16 -0
- finance_dev/models/revenuebreakdownaxis.py +52 -0
- finance_dev/models/revenuebreakdowndatapoint.py +58 -0
- finance_dev/models/revenuebreakdownentry.py +51 -0
- finance_dev/models/revenuebreakdowninner.py +75 -0
- finance_dev/models/revenueestimatesresponse.py +176 -0
- finance_dev/models/screenclause.py +70 -0
- finance_dev/models/screengroup.py +75 -0
- finance_dev/models/searchetbsymbolsop.py +40 -0
- finance_dev/models/searchindicesop.py +55 -0
- finance_dev/models/searchlogosop.py +158 -0
- finance_dev/models/searchmarketsymbolsop.py +80 -0
- finance_dev/models/searchop.py +232 -0
- finance_dev/models/searchsymbolitem.py +76 -0
- finance_dev/models/searchsymbolresponseitem.py +71 -0
- finance_dev/models/searchsymbolsop.py +77 -0
- finance_dev/models/secfiling.py +91 -0
- finance_dev/models/secfilingsresponse.py +39 -0
- finance_dev/models/sectoravgchange.py +50 -0
- finance_dev/models/security.py +59 -0
- finance_dev/models/securitytypeenum.py +16 -0
- finance_dev/models/shortinterestresponse.py +126 -0
- finance_dev/models/shortvolumeresponse.py +198 -0
- finance_dev/models/socialsentimentresponse.py +124 -0
- finance_dev/models/sortorderenum.py +13 -0
- finance_dev/models/spinoffsresponse.py +136 -0
- finance_dev/models/stockaggregatesresponse.py +92 -0
- finance_dev/models/stocklastquoteresponse.py +175 -0
- finance_dev/models/stocklasttraderesponse.py +169 -0
- finance_dev/models/stockohlcbar.py +85 -0
- finance_dev/models/stockopencloseresponse.py +109 -0
- finance_dev/models/stockpreviousdayresponse.py +86 -0
- finance_dev/models/stockquotesresponse.py +170 -0
- finance_dev/models/stockscreenerop.py +144 -0
- finance_dev/models/stockscreenerrequest.py +131 -0
- finance_dev/models/stockscreenerresponse.py +197 -0
- finance_dev/models/stocksnapshotsresponse.py +454 -0
- finance_dev/models/stocksplitsresponse.py +144 -0
- finance_dev/models/stocktradesresponse.py +164 -0
- finance_dev/models/supplychainresponse.py +158 -0
- finance_dev/models/supportresistancelevelsresponse.py +68 -0
- finance_dev/models/symboldetails.py +119 -0
- finance_dev/models/symbolerror.py +43 -0
- finance_dev/models/symbolinfo.py +183 -0
- finance_dev/models/synclogosop.py +146 -0
- finance_dev/models/technicalindicatorresponse.py +43 -0
- finance_dev/models/technicalindicatortype.py +21 -0
- finance_dev/models/technicalpatternsresponse.py +249 -0
- finance_dev/models/tenderofferidentifiertype.py +26 -0
- finance_dev/models/tenderoffersresponse.py +548 -0
- finance_dev/models/tickchartbars.py +104 -0
- finance_dev/models/tickresolution.py +20 -0
- finance_dev/models/timeinforceenum.py +26 -0
- finance_dev/models/tradeorderlegv2.py +164 -0
- finance_dev/models/tradeorderv2.py +434 -0
- finance_dev/models/transcriptresponse.py +162 -0
- finance_dev/models/transcriptsresponse.py +89 -0
- finance_dev/models/treasuryyieldsresponse.py +160 -0
- finance_dev/models/unifiedsnapshotresponse.py +308 -0
- finance_dev/models/updateconfigwatchlistbyidop.py +65 -0
- finance_dev/models/updatewatchlistrequest_union.py +134 -0
- finance_dev/models/upgradesdowngradesresponse.py +98 -0
- finance_dev/models/usaspendingresponse.py +222 -0
- finance_dev/models/usptopatentsresponse.py +134 -0
- finance_dev/models/visaapplicationsresponse.py +228 -0
- finance_dev/models/watchlist.py +68 -0
- finance_dev/models/watchlistrequest.py +43 -0
- finance_dev/models/watchlistresponse.py +44 -0
- finance_dev/news_sdk.py +829 -0
- finance_dev/options.py +3443 -0
- finance_dev/orders.py +1907 -0
- finance_dev/ownership.py +1386 -0
- finance_dev/predictions.py +29 -0
- finance_dev/predictions_orders.py +852 -0
- finance_dev/py.typed +1 -0
- finance_dev/sdk.py +347 -0
- finance_dev/sdkconfiguration.py +50 -0
- finance_dev/signals.py +338 -0
- finance_dev/stocks.py +3131 -0
- finance_dev/technicalanalysis_sdk.py +1137 -0
- finance_dev/types/__init__.py +25 -0
- finance_dev/types/base64fileinput.py +44 -0
- finance_dev/types/basemodel.py +78 -0
- finance_dev/utils/__init__.py +181 -0
- finance_dev/utils/annotations.py +80 -0
- finance_dev/utils/datetimes.py +42 -0
- finance_dev/utils/dynamic_imports.py +55 -0
- finance_dev/utils/enums.py +135 -0
- finance_dev/utils/eventstreaming.py +327 -0
- finance_dev/utils/forms.py +240 -0
- finance_dev/utils/headers.py +137 -0
- finance_dev/utils/logger.py +23 -0
- finance_dev/utils/metadata.py +120 -0
- finance_dev/utils/queryparams.py +218 -0
- finance_dev/utils/requestbodies.py +68 -0
- finance_dev/utils/retries.py +373 -0
- finance_dev/utils/security.py +199 -0
- finance_dev/utils/serializers.py +327 -0
- finance_dev/utils/unmarshal_json_response.py +39 -0
- finance_dev/utils/url.py +155 -0
- finance_dev/utils/values.py +143 -0
- finance_dev/watchlist_sdk.py +1583 -0
- finance_dev/websocket/__init__.py +57 -0
- finance_dev/websocket/account.py +5 -0
- finance_dev/websocket/auth.py +124 -0
- finance_dev/websocket/chart.py +5 -0
- finance_dev/websocket/codec.py +66 -0
- finance_dev/websocket/config.py +52 -0
- finance_dev/websocket/errors.py +54 -0
- finance_dev/websocket/market.py +5 -0
- finance_dev/websocket/models/__init__.py +52 -0
- finance_dev/websocket/models/account.py +60 -0
- finance_dev/websocket/models/chart.py +44 -0
- finance_dev/websocket/models/common.py +85 -0
- finance_dev/websocket/models/market.py +113 -0
- finance_dev/websocket/resources.py +327 -0
- finance_dev/websocket/sdk.py +13 -0
- finance_dev/websocket/transport/async_connection.py +493 -0
- finance_dev/websocket/transport/base.py +78 -0
- finance_dev/websocket/transport/sync_connection.py +470 -0
- finance_dev-0.9.0.dist-info/METADATA +913 -0
- finance_dev-0.9.0.dist-info/RECORD +486 -0
- finance_dev-0.9.0.dist-info/WHEEL +5 -0
- finance_dev-0.9.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
# @generated-id: ad69c74f5867
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
from finance_dev.types import (
|
|
6
|
+
BaseModel,
|
|
7
|
+
Nullable,
|
|
8
|
+
OptionalNullable,
|
|
9
|
+
UNSET,
|
|
10
|
+
UNSET_SENTINEL,
|
|
11
|
+
)
|
|
12
|
+
import pydantic
|
|
13
|
+
from pydantic import model_serializer
|
|
14
|
+
from typing import Optional
|
|
15
|
+
from typing_extensions import Annotated, NotRequired, TypedDict
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class OptionSnapshotLastQuoteTypedDict(TypedDict):
|
|
19
|
+
r"""Latest NBBO quote when included (`OptionSnapshotLastQuoteDTO`)."""
|
|
20
|
+
|
|
21
|
+
ask: NotRequired[float]
|
|
22
|
+
r"""Ask price"""
|
|
23
|
+
ask_exchange: NotRequired[Nullable[int]]
|
|
24
|
+
r"""Numeric identifier of the exchange quoting the ask, as supplied by the market data provider"""
|
|
25
|
+
ask_size: NotRequired[float]
|
|
26
|
+
r"""Size at the ask price"""
|
|
27
|
+
bid: NotRequired[float]
|
|
28
|
+
r"""Bid price"""
|
|
29
|
+
bid_exchange: NotRequired[Nullable[int]]
|
|
30
|
+
r"""Numeric identifier of the exchange quoting the bid, as supplied by the market data provider"""
|
|
31
|
+
bid_size: NotRequired[float]
|
|
32
|
+
r"""Size at the bid price"""
|
|
33
|
+
last_updated: NotRequired[int]
|
|
34
|
+
r"""Timestamp of the last quote update, as supplied by the market data provider"""
|
|
35
|
+
midpoint: NotRequired[float]
|
|
36
|
+
r"""Midpoint between the bid and ask prices"""
|
|
37
|
+
timeframe: NotRequired[str]
|
|
38
|
+
r"""Data timeframe of the quote, as supplied by the market data provider"""
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
class OptionSnapshotLastQuote(BaseModel):
|
|
42
|
+
r"""Latest NBBO quote when included (`OptionSnapshotLastQuoteDTO`)."""
|
|
43
|
+
|
|
44
|
+
ask: Optional[float] = None
|
|
45
|
+
r"""Ask price"""
|
|
46
|
+
|
|
47
|
+
ask_exchange: Annotated[
|
|
48
|
+
OptionalNullable[int], pydantic.Field(alias="askExchange")
|
|
49
|
+
] = UNSET
|
|
50
|
+
r"""Numeric identifier of the exchange quoting the ask, as supplied by the market data provider"""
|
|
51
|
+
|
|
52
|
+
ask_size: Annotated[Optional[float], pydantic.Field(alias="askSize")] = None
|
|
53
|
+
r"""Size at the ask price"""
|
|
54
|
+
|
|
55
|
+
bid: Optional[float] = None
|
|
56
|
+
r"""Bid price"""
|
|
57
|
+
|
|
58
|
+
bid_exchange: Annotated[
|
|
59
|
+
OptionalNullable[int], pydantic.Field(alias="bidExchange")
|
|
60
|
+
] = UNSET
|
|
61
|
+
r"""Numeric identifier of the exchange quoting the bid, as supplied by the market data provider"""
|
|
62
|
+
|
|
63
|
+
bid_size: Annotated[Optional[float], pydantic.Field(alias="bidSize")] = None
|
|
64
|
+
r"""Size at the bid price"""
|
|
65
|
+
|
|
66
|
+
last_updated: Annotated[Optional[int], pydantic.Field(alias="lastUpdated")] = None
|
|
67
|
+
r"""Timestamp of the last quote update, as supplied by the market data provider"""
|
|
68
|
+
|
|
69
|
+
midpoint: Optional[float] = None
|
|
70
|
+
r"""Midpoint between the bid and ask prices"""
|
|
71
|
+
|
|
72
|
+
timeframe: Optional[str] = None
|
|
73
|
+
r"""Data timeframe of the quote, as supplied by the market data provider"""
|
|
74
|
+
|
|
75
|
+
@model_serializer(mode="wrap")
|
|
76
|
+
def serialize_model(self, handler):
|
|
77
|
+
optional_fields = set(
|
|
78
|
+
[
|
|
79
|
+
"ask",
|
|
80
|
+
"askExchange",
|
|
81
|
+
"askSize",
|
|
82
|
+
"bid",
|
|
83
|
+
"bidExchange",
|
|
84
|
+
"bidSize",
|
|
85
|
+
"lastUpdated",
|
|
86
|
+
"midpoint",
|
|
87
|
+
"timeframe",
|
|
88
|
+
]
|
|
89
|
+
)
|
|
90
|
+
nullable_fields = set(["askExchange", "bidExchange"])
|
|
91
|
+
serialized = handler(self)
|
|
92
|
+
m = {}
|
|
93
|
+
|
|
94
|
+
for n, f in type(self).model_fields.items():
|
|
95
|
+
k = f.alias or n
|
|
96
|
+
val = serialized.get(k, serialized.get(n))
|
|
97
|
+
is_nullable_and_explicitly_set = (
|
|
98
|
+
k in nullable_fields
|
|
99
|
+
and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
|
|
100
|
+
)
|
|
101
|
+
|
|
102
|
+
if val != UNSET_SENTINEL:
|
|
103
|
+
if (
|
|
104
|
+
val is not None
|
|
105
|
+
or k not in optional_fields
|
|
106
|
+
or is_nullable_and_explicitly_set
|
|
107
|
+
):
|
|
108
|
+
m[k] = val
|
|
109
|
+
|
|
110
|
+
return m
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
try:
|
|
114
|
+
OptionSnapshotLastQuote.model_rebuild()
|
|
115
|
+
except NameError:
|
|
116
|
+
pass
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
# @generated-id: 5e1c4e27b03c
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
from finance_dev.types import (
|
|
6
|
+
BaseModel,
|
|
7
|
+
Nullable,
|
|
8
|
+
OptionalNullable,
|
|
9
|
+
UNSET,
|
|
10
|
+
UNSET_SENTINEL,
|
|
11
|
+
)
|
|
12
|
+
import pydantic
|
|
13
|
+
from pydantic import model_serializer
|
|
14
|
+
from typing import List, Optional
|
|
15
|
+
from typing_extensions import Annotated, NotRequired, TypedDict
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class OptionSnapshotLastTradeTypedDict(TypedDict):
|
|
19
|
+
r"""Latest trade when included (`OptionSnapshotLastTradeDTO`)."""
|
|
20
|
+
|
|
21
|
+
conditions: NotRequired[List[int]]
|
|
22
|
+
r"""Trade condition codes, as supplied by the market data provider"""
|
|
23
|
+
decimal_size: NotRequired[Nullable[str]]
|
|
24
|
+
r"""Trade size as a decimal string, when provided"""
|
|
25
|
+
exchange: NotRequired[int]
|
|
26
|
+
r"""Numeric exchange identifier supplied by the market data provider."""
|
|
27
|
+
price: NotRequired[float]
|
|
28
|
+
r"""Trade price"""
|
|
29
|
+
sip_timestamp: NotRequired[int]
|
|
30
|
+
r"""SIP timestamp of the trade, as supplied by the market data provider"""
|
|
31
|
+
size: NotRequired[float]
|
|
32
|
+
r"""Trade size"""
|
|
33
|
+
timeframe: NotRequired[str]
|
|
34
|
+
r"""Data timeframe of the trade, as supplied by the market data provider"""
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
class OptionSnapshotLastTrade(BaseModel):
|
|
38
|
+
r"""Latest trade when included (`OptionSnapshotLastTradeDTO`)."""
|
|
39
|
+
|
|
40
|
+
conditions: Optional[List[int]] = None
|
|
41
|
+
r"""Trade condition codes, as supplied by the market data provider"""
|
|
42
|
+
|
|
43
|
+
decimal_size: Annotated[
|
|
44
|
+
OptionalNullable[str], pydantic.Field(alias="decimalSize")
|
|
45
|
+
] = UNSET
|
|
46
|
+
r"""Trade size as a decimal string, when provided"""
|
|
47
|
+
|
|
48
|
+
exchange: Optional[int] = None
|
|
49
|
+
r"""Numeric exchange identifier supplied by the market data provider."""
|
|
50
|
+
|
|
51
|
+
price: Optional[float] = None
|
|
52
|
+
r"""Trade price"""
|
|
53
|
+
|
|
54
|
+
sip_timestamp: Annotated[Optional[int], pydantic.Field(alias="sipTimestamp")] = None
|
|
55
|
+
r"""SIP timestamp of the trade, as supplied by the market data provider"""
|
|
56
|
+
|
|
57
|
+
size: Optional[float] = None
|
|
58
|
+
r"""Trade size"""
|
|
59
|
+
|
|
60
|
+
timeframe: Optional[str] = None
|
|
61
|
+
r"""Data timeframe of the trade, as supplied by the market data provider"""
|
|
62
|
+
|
|
63
|
+
@model_serializer(mode="wrap")
|
|
64
|
+
def serialize_model(self, handler):
|
|
65
|
+
optional_fields = set(
|
|
66
|
+
[
|
|
67
|
+
"conditions",
|
|
68
|
+
"decimalSize",
|
|
69
|
+
"exchange",
|
|
70
|
+
"price",
|
|
71
|
+
"sipTimestamp",
|
|
72
|
+
"size",
|
|
73
|
+
"timeframe",
|
|
74
|
+
]
|
|
75
|
+
)
|
|
76
|
+
nullable_fields = set(["decimalSize"])
|
|
77
|
+
serialized = handler(self)
|
|
78
|
+
m = {}
|
|
79
|
+
|
|
80
|
+
for n, f in type(self).model_fields.items():
|
|
81
|
+
k = f.alias or n
|
|
82
|
+
val = serialized.get(k, serialized.get(n))
|
|
83
|
+
is_nullable_and_explicitly_set = (
|
|
84
|
+
k in nullable_fields
|
|
85
|
+
and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
|
|
86
|
+
)
|
|
87
|
+
|
|
88
|
+
if val != UNSET_SENTINEL:
|
|
89
|
+
if (
|
|
90
|
+
val is not None
|
|
91
|
+
or k not in optional_fields
|
|
92
|
+
or is_nullable_and_explicitly_set
|
|
93
|
+
):
|
|
94
|
+
m[k] = val
|
|
95
|
+
|
|
96
|
+
return m
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
try:
|
|
100
|
+
OptionSnapshotLastTrade.model_rebuild()
|
|
101
|
+
except NameError:
|
|
102
|
+
pass
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
# @generated-id: f783a0a350b0
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
from finance_dev.types import (
|
|
6
|
+
BaseModel,
|
|
7
|
+
Nullable,
|
|
8
|
+
OptionalNullable,
|
|
9
|
+
UNSET,
|
|
10
|
+
UNSET_SENTINEL,
|
|
11
|
+
)
|
|
12
|
+
import pydantic
|
|
13
|
+
from pydantic import model_serializer
|
|
14
|
+
from typing import Optional
|
|
15
|
+
from typing_extensions import Annotated, NotRequired, TypedDict
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class OptionSnapshotUnderlyingTypedDict(TypedDict):
|
|
19
|
+
r"""Underlying equity snapshot (`OptionSnapshotUnderlyingDTO`)."""
|
|
20
|
+
|
|
21
|
+
change_to_break_even: NotRequired[Nullable[float]]
|
|
22
|
+
r"""Change in the underlying price needed for the contract to reach break-even"""
|
|
23
|
+
last_updated: NotRequired[Nullable[int]]
|
|
24
|
+
r"""Timestamp of the last update to the underlying price, as supplied by the market data provider"""
|
|
25
|
+
price: NotRequired[Nullable[float]]
|
|
26
|
+
r"""Current price of the underlying asset"""
|
|
27
|
+
ticker: NotRequired[str]
|
|
28
|
+
r"""Ticker symbol of the underlying asset"""
|
|
29
|
+
timeframe: NotRequired[str]
|
|
30
|
+
r"""Data timeframe of the underlying price, as supplied by the market data provider"""
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
class OptionSnapshotUnderlying(BaseModel):
|
|
34
|
+
r"""Underlying equity snapshot (`OptionSnapshotUnderlyingDTO`)."""
|
|
35
|
+
|
|
36
|
+
change_to_break_even: Annotated[
|
|
37
|
+
OptionalNullable[float], pydantic.Field(alias="changeToBreakEven")
|
|
38
|
+
] = UNSET
|
|
39
|
+
r"""Change in the underlying price needed for the contract to reach break-even"""
|
|
40
|
+
|
|
41
|
+
last_updated: Annotated[
|
|
42
|
+
OptionalNullable[int], pydantic.Field(alias="lastUpdated")
|
|
43
|
+
] = UNSET
|
|
44
|
+
r"""Timestamp of the last update to the underlying price, as supplied by the market data provider"""
|
|
45
|
+
|
|
46
|
+
price: OptionalNullable[float] = UNSET
|
|
47
|
+
r"""Current price of the underlying asset"""
|
|
48
|
+
|
|
49
|
+
ticker: Optional[str] = None
|
|
50
|
+
r"""Ticker symbol of the underlying asset"""
|
|
51
|
+
|
|
52
|
+
timeframe: Optional[str] = None
|
|
53
|
+
r"""Data timeframe of the underlying price, as supplied by the market data provider"""
|
|
54
|
+
|
|
55
|
+
@model_serializer(mode="wrap")
|
|
56
|
+
def serialize_model(self, handler):
|
|
57
|
+
optional_fields = set(
|
|
58
|
+
["changeToBreakEven", "lastUpdated", "price", "ticker", "timeframe"]
|
|
59
|
+
)
|
|
60
|
+
nullable_fields = set(["changeToBreakEven", "lastUpdated", "price"])
|
|
61
|
+
serialized = handler(self)
|
|
62
|
+
m = {}
|
|
63
|
+
|
|
64
|
+
for n, f in type(self).model_fields.items():
|
|
65
|
+
k = f.alias or n
|
|
66
|
+
val = serialized.get(k, serialized.get(n))
|
|
67
|
+
is_nullable_and_explicitly_set = (
|
|
68
|
+
k in nullable_fields
|
|
69
|
+
and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
|
|
70
|
+
)
|
|
71
|
+
|
|
72
|
+
if val != UNSET_SENTINEL:
|
|
73
|
+
if (
|
|
74
|
+
val is not None
|
|
75
|
+
or k not in optional_fields
|
|
76
|
+
or is_nullable_and_explicitly_set
|
|
77
|
+
):
|
|
78
|
+
m[k] = val
|
|
79
|
+
|
|
80
|
+
return m
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
try:
|
|
84
|
+
OptionSnapshotUnderlying.model_rebuild()
|
|
85
|
+
except NameError:
|
|
86
|
+
pass
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
# @generated-id: 4b8072ae6866
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
from enum import Enum
|
|
6
|
+
from finance_dev import models, utils
|
|
7
|
+
from finance_dev.types import BaseModel, UNSET_SENTINEL
|
|
8
|
+
import pydantic
|
|
9
|
+
from pydantic import field_serializer, model_serializer
|
|
10
|
+
from typing import Optional
|
|
11
|
+
from typing_extensions import Annotated, NotRequired, TypedDict
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class OptionsScreenerItemType(str, Enum, metaclass=utils.OpenEnumMeta):
|
|
15
|
+
r"""Option type returned by the API. `c` = Call; `P` = Put."""
|
|
16
|
+
|
|
17
|
+
C = "c"
|
|
18
|
+
P = "P"
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class OptionsScreenerItemTypedDict(TypedDict):
|
|
22
|
+
r"""Option contract details returned by options top-volume and top-gainers endpoints."""
|
|
23
|
+
|
|
24
|
+
ask: NotRequired[float]
|
|
25
|
+
r"""Lowest current seller price for the option. Use it as the reference price when buying."""
|
|
26
|
+
bid: NotRequired[float]
|
|
27
|
+
r"""Highest current buyer price for the option. Use it as the reference price when selling."""
|
|
28
|
+
change: NotRequired[float]
|
|
29
|
+
r"""Price change from previous close"""
|
|
30
|
+
change_percent: NotRequired[float]
|
|
31
|
+
r"""Percentage change from previous close"""
|
|
32
|
+
expiry: NotRequired[str]
|
|
33
|
+
r"""Option expiration date. Use it to group contracts by expiry and show time remaining."""
|
|
34
|
+
implied_volatility: NotRequired[float]
|
|
35
|
+
r"""Market-implied volatility for the option. Use it to compare how expensive option premium is across contracts."""
|
|
36
|
+
last_price: NotRequired[float]
|
|
37
|
+
r"""Most recent traded option price. Use bid and ask when estimating immediate execution cost."""
|
|
38
|
+
logo_url: NotRequired[str]
|
|
39
|
+
r"""URL to the underlying company or ETF logo"""
|
|
40
|
+
open_interest: NotRequired[int]
|
|
41
|
+
r"""Number of outstanding contracts. Use it to estimate option liquidity beyond today's trading volume."""
|
|
42
|
+
strike: NotRequired[float]
|
|
43
|
+
r"""Option strike price. Use it to explain the price level where the option can be exercised."""
|
|
44
|
+
symbol: NotRequired[str]
|
|
45
|
+
r"""Option contract symbol. Use this exact value when requesting option quotes, snapshots, or trades."""
|
|
46
|
+
type: NotRequired[OptionsScreenerItemType]
|
|
47
|
+
r"""Option type returned by the API. `c` = Call; `P` = Put."""
|
|
48
|
+
underlying_symbol: NotRequired[str]
|
|
49
|
+
r"""Underlying stock or ETF symbol"""
|
|
50
|
+
volume: NotRequired[int]
|
|
51
|
+
r"""Contracts traded during the current session. Use it to identify active option contracts."""
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
class OptionsScreenerItem(BaseModel):
|
|
55
|
+
r"""Option contract details returned by options top-volume and top-gainers endpoints."""
|
|
56
|
+
|
|
57
|
+
ask: Optional[float] = None
|
|
58
|
+
r"""Lowest current seller price for the option. Use it as the reference price when buying."""
|
|
59
|
+
|
|
60
|
+
bid: Optional[float] = None
|
|
61
|
+
r"""Highest current buyer price for the option. Use it as the reference price when selling."""
|
|
62
|
+
|
|
63
|
+
change: Optional[float] = None
|
|
64
|
+
r"""Price change from previous close"""
|
|
65
|
+
|
|
66
|
+
change_percent: Annotated[
|
|
67
|
+
Optional[float], pydantic.Field(alias="changePercent")
|
|
68
|
+
] = None
|
|
69
|
+
r"""Percentage change from previous close"""
|
|
70
|
+
|
|
71
|
+
expiry: Optional[str] = None
|
|
72
|
+
r"""Option expiration date. Use it to group contracts by expiry and show time remaining."""
|
|
73
|
+
|
|
74
|
+
implied_volatility: Annotated[
|
|
75
|
+
Optional[float], pydantic.Field(alias="impliedVolatility")
|
|
76
|
+
] = None
|
|
77
|
+
r"""Market-implied volatility for the option. Use it to compare how expensive option premium is across contracts."""
|
|
78
|
+
|
|
79
|
+
last_price: Annotated[Optional[float], pydantic.Field(alias="lastPrice")] = None
|
|
80
|
+
r"""Most recent traded option price. Use bid and ask when estimating immediate execution cost."""
|
|
81
|
+
|
|
82
|
+
logo_url: Annotated[Optional[str], pydantic.Field(alias="logoUrl")] = None
|
|
83
|
+
r"""URL to the underlying company or ETF logo"""
|
|
84
|
+
|
|
85
|
+
open_interest: Annotated[Optional[int], pydantic.Field(alias="openInterest")] = None
|
|
86
|
+
r"""Number of outstanding contracts. Use it to estimate option liquidity beyond today's trading volume."""
|
|
87
|
+
|
|
88
|
+
strike: Optional[float] = None
|
|
89
|
+
r"""Option strike price. Use it to explain the price level where the option can be exercised."""
|
|
90
|
+
|
|
91
|
+
symbol: Optional[str] = None
|
|
92
|
+
r"""Option contract symbol. Use this exact value when requesting option quotes, snapshots, or trades."""
|
|
93
|
+
|
|
94
|
+
type: Optional[OptionsScreenerItemType] = None
|
|
95
|
+
r"""Option type returned by the API. `c` = Call; `P` = Put."""
|
|
96
|
+
|
|
97
|
+
underlying_symbol: Annotated[
|
|
98
|
+
Optional[str], pydantic.Field(alias="underlyingSymbol")
|
|
99
|
+
] = None
|
|
100
|
+
r"""Underlying stock or ETF symbol"""
|
|
101
|
+
|
|
102
|
+
volume: Optional[int] = None
|
|
103
|
+
r"""Contracts traded during the current session. Use it to identify active option contracts."""
|
|
104
|
+
|
|
105
|
+
@field_serializer("type")
|
|
106
|
+
def serialize_type(self, value):
|
|
107
|
+
if isinstance(value, str):
|
|
108
|
+
try:
|
|
109
|
+
return models.OptionsScreenerItemType(value)
|
|
110
|
+
except ValueError:
|
|
111
|
+
return value
|
|
112
|
+
return value
|
|
113
|
+
|
|
114
|
+
@model_serializer(mode="wrap")
|
|
115
|
+
def serialize_model(self, handler):
|
|
116
|
+
optional_fields = set(
|
|
117
|
+
[
|
|
118
|
+
"ask",
|
|
119
|
+
"bid",
|
|
120
|
+
"change",
|
|
121
|
+
"changePercent",
|
|
122
|
+
"expiry",
|
|
123
|
+
"impliedVolatility",
|
|
124
|
+
"lastPrice",
|
|
125
|
+
"logoUrl",
|
|
126
|
+
"openInterest",
|
|
127
|
+
"strike",
|
|
128
|
+
"symbol",
|
|
129
|
+
"type",
|
|
130
|
+
"underlyingSymbol",
|
|
131
|
+
"volume",
|
|
132
|
+
]
|
|
133
|
+
)
|
|
134
|
+
serialized = handler(self)
|
|
135
|
+
m = {}
|
|
136
|
+
|
|
137
|
+
for n, f in type(self).model_fields.items():
|
|
138
|
+
k = f.alias or n
|
|
139
|
+
val = serialized.get(k, serialized.get(n))
|
|
140
|
+
|
|
141
|
+
if val != UNSET_SENTINEL:
|
|
142
|
+
if val is not None or k not in optional_fields:
|
|
143
|
+
m[k] = val
|
|
144
|
+
|
|
145
|
+
return m
|
|
146
|
+
|
|
147
|
+
|
|
148
|
+
try:
|
|
149
|
+
OptionsScreenerItem.model_rebuild()
|
|
150
|
+
except NameError:
|
|
151
|
+
pass
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
# @generated-id: 25c84896715f
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
from .optionsunusualactivitytrade import (
|
|
6
|
+
OptionsUnusualActivityTrade,
|
|
7
|
+
OptionsUnusualActivityTradeTypedDict,
|
|
8
|
+
)
|
|
9
|
+
from finance_dev.types import (
|
|
10
|
+
BaseModel,
|
|
11
|
+
Nullable,
|
|
12
|
+
OptionalNullable,
|
|
13
|
+
UNSET,
|
|
14
|
+
UNSET_SENTINEL,
|
|
15
|
+
)
|
|
16
|
+
from pydantic import model_serializer
|
|
17
|
+
from typing import List, Optional
|
|
18
|
+
from typing_extensions import NotRequired, TypedDict
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
class OptionsUnusualActivityResponseTypedDict(TypedDict):
|
|
22
|
+
r"""Response for GET /v1/options/unusual_activity/{symbol}. Contains unusual activity trades and optional pagination pointer."""
|
|
23
|
+
|
|
24
|
+
next_page: NotRequired[Nullable[str]]
|
|
25
|
+
r"""Absolute link to the next page when more results are available."""
|
|
26
|
+
trades: NotRequired[List[OptionsUnusualActivityTradeTypedDict]]
|
|
27
|
+
r"""List of unusual options activity trades"""
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
class OptionsUnusualActivityResponse(BaseModel):
|
|
31
|
+
r"""Response for GET /v1/options/unusual_activity/{symbol}. Contains unusual activity trades and optional pagination pointer."""
|
|
32
|
+
|
|
33
|
+
next_page: OptionalNullable[str] = UNSET
|
|
34
|
+
r"""Absolute link to the next page when more results are available."""
|
|
35
|
+
|
|
36
|
+
trades: Optional[List[OptionsUnusualActivityTrade]] = None
|
|
37
|
+
r"""List of unusual options activity trades"""
|
|
38
|
+
|
|
39
|
+
@model_serializer(mode="wrap")
|
|
40
|
+
def serialize_model(self, handler):
|
|
41
|
+
optional_fields = set(["next_page", "trades"])
|
|
42
|
+
nullable_fields = set(["next_page"])
|
|
43
|
+
serialized = handler(self)
|
|
44
|
+
m = {}
|
|
45
|
+
|
|
46
|
+
for n, f in type(self).model_fields.items():
|
|
47
|
+
k = f.alias or n
|
|
48
|
+
val = serialized.get(k, serialized.get(n))
|
|
49
|
+
is_nullable_and_explicitly_set = (
|
|
50
|
+
k in nullable_fields
|
|
51
|
+
and (self.__pydantic_fields_set__.intersection({n})) # pylint: disable=no-member
|
|
52
|
+
)
|
|
53
|
+
|
|
54
|
+
if val != UNSET_SENTINEL:
|
|
55
|
+
if (
|
|
56
|
+
val is not None
|
|
57
|
+
or k not in optional_fields
|
|
58
|
+
or is_nullable_and_explicitly_set
|
|
59
|
+
):
|
|
60
|
+
m[k] = val
|
|
61
|
+
|
|
62
|
+
return m
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
# @generated-id: 95038c369e18
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
from datetime import datetime
|
|
6
|
+
from finance_dev.types import BaseModel, UNSET_SENTINEL
|
|
7
|
+
from pydantic import model_serializer
|
|
8
|
+
from typing import Optional
|
|
9
|
+
from typing_extensions import NotRequired, TypedDict
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class OptionsUnusualActivityTradeTypedDict(TypedDict):
|
|
13
|
+
r"""Single options unusual activity trade"""
|
|
14
|
+
|
|
15
|
+
ask_at_execution: NotRequired[float]
|
|
16
|
+
r"""Ask price at execution"""
|
|
17
|
+
average_price: NotRequired[float]
|
|
18
|
+
r"""Average price per contract"""
|
|
19
|
+
bid_at_execution: NotRequired[float]
|
|
20
|
+
r"""Bid price at execution"""
|
|
21
|
+
contract: NotRequired[str]
|
|
22
|
+
r"""Option contract identifier"""
|
|
23
|
+
sentiment: NotRequired[str]
|
|
24
|
+
r"""Sentiment (e.g. bearish, bullish)"""
|
|
25
|
+
symbol: NotRequired[str]
|
|
26
|
+
r"""Underlying symbol (e.g. AAPL)"""
|
|
27
|
+
timestamp: NotRequired[datetime]
|
|
28
|
+
r"""Trade timestamp (ISO 8601)"""
|
|
29
|
+
total_size: NotRequired[float]
|
|
30
|
+
r"""Total contract size"""
|
|
31
|
+
total_value: NotRequired[float]
|
|
32
|
+
r"""Total dollar value of the trade"""
|
|
33
|
+
type: NotRequired[str]
|
|
34
|
+
r"""Provider-supplied unusual activity classification for the trade, such as block, sweep, or split."""
|
|
35
|
+
underlying_price_at_execution: NotRequired[float]
|
|
36
|
+
r"""Underlying price at execution"""
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
class OptionsUnusualActivityTrade(BaseModel):
|
|
40
|
+
r"""Single options unusual activity trade"""
|
|
41
|
+
|
|
42
|
+
ask_at_execution: Optional[float] = None
|
|
43
|
+
r"""Ask price at execution"""
|
|
44
|
+
|
|
45
|
+
average_price: Optional[float] = None
|
|
46
|
+
r"""Average price per contract"""
|
|
47
|
+
|
|
48
|
+
bid_at_execution: Optional[float] = None
|
|
49
|
+
r"""Bid price at execution"""
|
|
50
|
+
|
|
51
|
+
contract: Optional[str] = None
|
|
52
|
+
r"""Option contract identifier"""
|
|
53
|
+
|
|
54
|
+
sentiment: Optional[str] = None
|
|
55
|
+
r"""Sentiment (e.g. bearish, bullish)"""
|
|
56
|
+
|
|
57
|
+
symbol: Optional[str] = None
|
|
58
|
+
r"""Underlying symbol (e.g. AAPL)"""
|
|
59
|
+
|
|
60
|
+
timestamp: Optional[datetime] = None
|
|
61
|
+
r"""Trade timestamp (ISO 8601)"""
|
|
62
|
+
|
|
63
|
+
total_size: Optional[float] = None
|
|
64
|
+
r"""Total contract size"""
|
|
65
|
+
|
|
66
|
+
total_value: Optional[float] = None
|
|
67
|
+
r"""Total dollar value of the trade"""
|
|
68
|
+
|
|
69
|
+
type: Optional[str] = None
|
|
70
|
+
r"""Provider-supplied unusual activity classification for the trade, such as block, sweep, or split."""
|
|
71
|
+
|
|
72
|
+
underlying_price_at_execution: Optional[float] = None
|
|
73
|
+
r"""Underlying price at execution"""
|
|
74
|
+
|
|
75
|
+
@model_serializer(mode="wrap")
|
|
76
|
+
def serialize_model(self, handler):
|
|
77
|
+
optional_fields = set(
|
|
78
|
+
[
|
|
79
|
+
"ask_at_execution",
|
|
80
|
+
"average_price",
|
|
81
|
+
"bid_at_execution",
|
|
82
|
+
"contract",
|
|
83
|
+
"sentiment",
|
|
84
|
+
"symbol",
|
|
85
|
+
"timestamp",
|
|
86
|
+
"total_size",
|
|
87
|
+
"total_value",
|
|
88
|
+
"type",
|
|
89
|
+
"underlying_price_at_execution",
|
|
90
|
+
]
|
|
91
|
+
)
|
|
92
|
+
serialized = handler(self)
|
|
93
|
+
m = {}
|
|
94
|
+
|
|
95
|
+
for n, f in type(self).model_fields.items():
|
|
96
|
+
k = f.alias or n
|
|
97
|
+
val = serialized.get(k, serialized.get(n))
|
|
98
|
+
|
|
99
|
+
if val != UNSET_SENTINEL:
|
|
100
|
+
if val is not None or k not in optional_fields:
|
|
101
|
+
m[k] = val
|
|
102
|
+
|
|
103
|
+
return m
|