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,74 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
# @generated-id: f16e7d1d496a
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
from finance_dev.types import BaseModel, UNSET_SENTINEL
|
|
6
|
+
import pydantic
|
|
7
|
+
from pydantic import model_serializer
|
|
8
|
+
from typing import Optional
|
|
9
|
+
from typing_extensions import Annotated, NotRequired, TypedDict
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class OwnershipRecordTypedDict(TypedDict):
|
|
13
|
+
r"""Ownership record of an institutional investor or fund in a security."""
|
|
14
|
+
|
|
15
|
+
change: NotRequired[int]
|
|
16
|
+
r"""Change in share count from previous filing"""
|
|
17
|
+
filing_date: NotRequired[str]
|
|
18
|
+
r"""Date of the regulatory filing in YYYY-MM-DD format"""
|
|
19
|
+
name: NotRequired[str]
|
|
20
|
+
r"""Name of the institutional investor or fund"""
|
|
21
|
+
percent_of_shares: NotRequired[float]
|
|
22
|
+
r"""Percentage of total outstanding shares held"""
|
|
23
|
+
share: NotRequired[int]
|
|
24
|
+
r"""Number of shares held"""
|
|
25
|
+
source: NotRequired[str]
|
|
26
|
+
r"""Source of the ownership data (e.g., 13F, 13G)"""
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class OwnershipRecord(BaseModel):
|
|
30
|
+
r"""Ownership record of an institutional investor or fund in a security."""
|
|
31
|
+
|
|
32
|
+
change: Optional[int] = None
|
|
33
|
+
r"""Change in share count from previous filing"""
|
|
34
|
+
|
|
35
|
+
filing_date: Annotated[Optional[str], pydantic.Field(alias="filingDate")] = None
|
|
36
|
+
r"""Date of the regulatory filing in YYYY-MM-DD format"""
|
|
37
|
+
|
|
38
|
+
name: Optional[str] = None
|
|
39
|
+
r"""Name of the institutional investor or fund"""
|
|
40
|
+
|
|
41
|
+
percent_of_shares: Annotated[
|
|
42
|
+
Optional[float], pydantic.Field(alias="percentOfShares")
|
|
43
|
+
] = None
|
|
44
|
+
r"""Percentage of total outstanding shares held"""
|
|
45
|
+
|
|
46
|
+
share: Optional[int] = None
|
|
47
|
+
r"""Number of shares held"""
|
|
48
|
+
|
|
49
|
+
source: Optional[str] = None
|
|
50
|
+
r"""Source of the ownership data (e.g., 13F, 13G)"""
|
|
51
|
+
|
|
52
|
+
@model_serializer(mode="wrap")
|
|
53
|
+
def serialize_model(self, handler):
|
|
54
|
+
optional_fields = set(
|
|
55
|
+
["change", "filingDate", "name", "percentOfShares", "share", "source"]
|
|
56
|
+
)
|
|
57
|
+
serialized = handler(self)
|
|
58
|
+
m = {}
|
|
59
|
+
|
|
60
|
+
for n, f in type(self).model_fields.items():
|
|
61
|
+
k = f.alias or n
|
|
62
|
+
val = serialized.get(k, serialized.get(n))
|
|
63
|
+
|
|
64
|
+
if val != UNSET_SENTINEL:
|
|
65
|
+
if val is not None or k not in optional_fields:
|
|
66
|
+
m[k] = val
|
|
67
|
+
|
|
68
|
+
return m
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
try:
|
|
72
|
+
OwnershipRecord.model_rebuild()
|
|
73
|
+
except NameError:
|
|
74
|
+
pass
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
# @generated-id: 386a2b651761
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
from .httpmetadata import HTTPMetadata, HTTPMetadataTypedDict
|
|
6
|
+
from .ordresponse import OrdResponse, OrdResponseTypedDict
|
|
7
|
+
from finance_dev.types import BaseModel, UNSET_SENTINEL
|
|
8
|
+
import pydantic
|
|
9
|
+
from pydantic import model_serializer
|
|
10
|
+
from typing import Optional
|
|
11
|
+
from typing_extensions import Annotated, NotRequired, TypedDict
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class PlaceOrderResponseTypedDict(TypedDict):
|
|
15
|
+
http_meta: HTTPMetadataTypedDict
|
|
16
|
+
ord_response: NotRequired[OrdResponseTypedDict]
|
|
17
|
+
r"""Order placed successfully"""
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class PlaceOrderResponse(BaseModel):
|
|
21
|
+
http_meta: Annotated[Optional[HTTPMetadata], pydantic.Field(exclude=True)] = None
|
|
22
|
+
|
|
23
|
+
ord_response: Optional[OrdResponse] = None
|
|
24
|
+
r"""Order placed successfully"""
|
|
25
|
+
|
|
26
|
+
@model_serializer(mode="wrap")
|
|
27
|
+
def serialize_model(self, handler):
|
|
28
|
+
optional_fields = set(["OrdResponse"])
|
|
29
|
+
serialized = handler(self)
|
|
30
|
+
m = {}
|
|
31
|
+
|
|
32
|
+
for n, f in type(self).model_fields.items():
|
|
33
|
+
k = f.alias or n
|
|
34
|
+
val = serialized.get(k, serialized.get(n))
|
|
35
|
+
|
|
36
|
+
if val != UNSET_SENTINEL:
|
|
37
|
+
if val is not None or k not in optional_fields:
|
|
38
|
+
m[k] = val
|
|
39
|
+
|
|
40
|
+
return m
|
|
@@ -0,0 +1,335 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
# @generated-id: 783019a66278
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
from .orderrequesttimeinforceenum import OrderRequestTimeInForceEnum
|
|
6
|
+
from .ordersideenum import OrderSideEnum
|
|
7
|
+
from .ordertypeenum import OrderTypeEnum
|
|
8
|
+
from .ordleg import OrdLeg, OrdLegTypedDict
|
|
9
|
+
from finance_dev import models
|
|
10
|
+
from finance_dev.types import BaseModel, UNSET_SENTINEL
|
|
11
|
+
import pydantic
|
|
12
|
+
from pydantic import field_serializer, model_serializer
|
|
13
|
+
from typing import List, Optional, Union
|
|
14
|
+
from typing_extensions import Annotated, NotRequired, TypeAliasType, TypedDict
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class PlaceOrdRequest2TypedDict(TypedDict):
|
|
18
|
+
qty: str
|
|
19
|
+
r"""Number of shares or contracts to trade, sent as a decimal string. Example: \"10\" for ten shares or \"1\" for one option contract."""
|
|
20
|
+
side: OrderSideEnum
|
|
21
|
+
r"""Which direction to trade in. Pick one:
|
|
22
|
+
- `BUY` — buying shares or contracts (opens a long position or closes an existing short).
|
|
23
|
+
- `SELL` — selling shares or contracts you already hold (closes a long position).
|
|
24
|
+
- `SELL_SHORT` — selling shares you do not own (opens a short position). Subject to short-sale regulations.
|
|
25
|
+
- `BUY_TO_COVER` — buying shares to close an open short position.
|
|
26
|
+
"""
|
|
27
|
+
symbol: str
|
|
28
|
+
r"""Ticker or underlying symbol to trade. Confirm the exact uppercase value with symbol search before placing an order."""
|
|
29
|
+
time_in_force: OrderRequestTimeInForceEnum
|
|
30
|
+
r"""How long the order should stay alive before automatically cancelling. Pick one:
|
|
31
|
+
- `DAY` — Active until the end of today's regular trading session, then cancelled if not filled. The default choice for most orders.
|
|
32
|
+
- `GTC` — Good 'Til Cancelled. Stays open across multiple trading days until you cancel it (the broker may cap at 60–90 days).
|
|
33
|
+
- `IOC` — Immediate Or Cancel. Fill whatever you can right now; cancel the rest immediately. Useful when you want partial fills but no resting order.
|
|
34
|
+
- `FOK` — Fill Or Kill. Fill the entire order immediately, or cancel it entirely. No partial fills allowed.
|
|
35
|
+
- `EXTENDED_HOURS` — Active during pre-market and after-hours trading sessions in addition to regular hours.
|
|
36
|
+
- `AT_THE_OPENING` — Execute at the official market open price; if it can't fill at open, it's cancelled.
|
|
37
|
+
- `AT_THE_CLOSE` — Execute at the official market close price; if it can't fill at close, it's cancelled.
|
|
38
|
+
"""
|
|
39
|
+
trading_account_id: str
|
|
40
|
+
r"""Trading account identifier that should receive the order. Enter the tradingAccountId selected by the user."""
|
|
41
|
+
type: OrderTypeEnum
|
|
42
|
+
r"""How the order is priced. Pick one:
|
|
43
|
+
- `MARKET` — Execute immediately at the best available price. Fast and guaranteed to fill, but no price guarantee — the actual fill price can move during execution.
|
|
44
|
+
- `LIMIT` — Execute only at the limit `price` or better (lower for buys, higher for sells). Gives you price control, no execution guarantee. Requires the `price` field.
|
|
45
|
+
- `STOP` — Sits inactive until the market hits `stopPrice`, then converts to a market order. Common for stop-loss exits. Requires the `stopPrice` field.
|
|
46
|
+
- `STOP_LIMIT` — Sits inactive until the market hits `stopPrice`, then converts to a limit order at `price`. More control than `STOP`, but the limit may not fill. Requires both `stopPrice` and `price`.
|
|
47
|
+
"""
|
|
48
|
+
account_id: NotRequired[str]
|
|
49
|
+
r"""Account identifier; provide accountId or tradingAccountId. Both may be supplied."""
|
|
50
|
+
client_id: NotRequired[str]
|
|
51
|
+
r"""Optional identifier from your app. Send this when you want to tag orders by app, user, strategy, or integration for your own reconciliation."""
|
|
52
|
+
currency: NotRequired[str]
|
|
53
|
+
r"""Three-letter currency code for the order. Use USD for U.S. dollar orders unless your integration supports another currency."""
|
|
54
|
+
legs: NotRequired[List[OrdLegTypedDict]]
|
|
55
|
+
r"""Option legs for single-leg or multi-leg option orders. Omit this field for equity orders. Send 1 leg for a single option contract or 2 to 4 legs for a spread or other multi-leg strategy."""
|
|
56
|
+
price: NotRequired[str]
|
|
57
|
+
r"""Limit price as a decimal string. Required for LIMIT and STOP_LIMIT orders. For buys, this is the maximum price you will pay; for sells, it is the minimum price you will accept."""
|
|
58
|
+
stop_price: NotRequired[str]
|
|
59
|
+
r"""Trigger price as a decimal string. Required for STOP and STOP_LIMIT orders. When the market reaches this price, the stop order becomes active."""
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
class PlaceOrdRequest2(BaseModel):
|
|
63
|
+
qty: str
|
|
64
|
+
r"""Number of shares or contracts to trade, sent as a decimal string. Example: \"10\" for ten shares or \"1\" for one option contract."""
|
|
65
|
+
|
|
66
|
+
side: OrderSideEnum
|
|
67
|
+
r"""Which direction to trade in. Pick one:
|
|
68
|
+
- `BUY` — buying shares or contracts (opens a long position or closes an existing short).
|
|
69
|
+
- `SELL` — selling shares or contracts you already hold (closes a long position).
|
|
70
|
+
- `SELL_SHORT` — selling shares you do not own (opens a short position). Subject to short-sale regulations.
|
|
71
|
+
- `BUY_TO_COVER` — buying shares to close an open short position.
|
|
72
|
+
"""
|
|
73
|
+
|
|
74
|
+
symbol: str
|
|
75
|
+
r"""Ticker or underlying symbol to trade. Confirm the exact uppercase value with symbol search before placing an order."""
|
|
76
|
+
|
|
77
|
+
time_in_force: Annotated[
|
|
78
|
+
OrderRequestTimeInForceEnum, pydantic.Field(alias="timeInForce")
|
|
79
|
+
]
|
|
80
|
+
r"""How long the order should stay alive before automatically cancelling. Pick one:
|
|
81
|
+
- `DAY` — Active until the end of today's regular trading session, then cancelled if not filled. The default choice for most orders.
|
|
82
|
+
- `GTC` — Good 'Til Cancelled. Stays open across multiple trading days until you cancel it (the broker may cap at 60–90 days).
|
|
83
|
+
- `IOC` — Immediate Or Cancel. Fill whatever you can right now; cancel the rest immediately. Useful when you want partial fills but no resting order.
|
|
84
|
+
- `FOK` — Fill Or Kill. Fill the entire order immediately, or cancel it entirely. No partial fills allowed.
|
|
85
|
+
- `EXTENDED_HOURS` — Active during pre-market and after-hours trading sessions in addition to regular hours.
|
|
86
|
+
- `AT_THE_OPENING` — Execute at the official market open price; if it can't fill at open, it's cancelled.
|
|
87
|
+
- `AT_THE_CLOSE` — Execute at the official market close price; if it can't fill at close, it's cancelled.
|
|
88
|
+
"""
|
|
89
|
+
|
|
90
|
+
trading_account_id: Annotated[str, pydantic.Field(alias="tradingAccountId")]
|
|
91
|
+
r"""Trading account identifier that should receive the order. Enter the tradingAccountId selected by the user."""
|
|
92
|
+
|
|
93
|
+
type: OrderTypeEnum
|
|
94
|
+
r"""How the order is priced. Pick one:
|
|
95
|
+
- `MARKET` — Execute immediately at the best available price. Fast and guaranteed to fill, but no price guarantee — the actual fill price can move during execution.
|
|
96
|
+
- `LIMIT` — Execute only at the limit `price` or better (lower for buys, higher for sells). Gives you price control, no execution guarantee. Requires the `price` field.
|
|
97
|
+
- `STOP` — Sits inactive until the market hits `stopPrice`, then converts to a market order. Common for stop-loss exits. Requires the `stopPrice` field.
|
|
98
|
+
- `STOP_LIMIT` — Sits inactive until the market hits `stopPrice`, then converts to a limit order at `price`. More control than `STOP`, but the limit may not fill. Requires both `stopPrice` and `price`.
|
|
99
|
+
"""
|
|
100
|
+
|
|
101
|
+
account_id: Annotated[Optional[str], pydantic.Field(alias="accountId")] = None
|
|
102
|
+
r"""Account identifier; provide accountId or tradingAccountId. Both may be supplied."""
|
|
103
|
+
|
|
104
|
+
client_id: Annotated[Optional[str], pydantic.Field(alias="clientId")] = None
|
|
105
|
+
r"""Optional identifier from your app. Send this when you want to tag orders by app, user, strategy, or integration for your own reconciliation."""
|
|
106
|
+
|
|
107
|
+
currency: Optional[str] = None
|
|
108
|
+
r"""Three-letter currency code for the order. Use USD for U.S. dollar orders unless your integration supports another currency."""
|
|
109
|
+
|
|
110
|
+
legs: Optional[List[OrdLeg]] = None
|
|
111
|
+
r"""Option legs for single-leg or multi-leg option orders. Omit this field for equity orders. Send 1 leg for a single option contract or 2 to 4 legs for a spread or other multi-leg strategy."""
|
|
112
|
+
|
|
113
|
+
price: Optional[str] = None
|
|
114
|
+
r"""Limit price as a decimal string. Required for LIMIT and STOP_LIMIT orders. For buys, this is the maximum price you will pay; for sells, it is the minimum price you will accept."""
|
|
115
|
+
|
|
116
|
+
stop_price: Annotated[Optional[str], pydantic.Field(alias="stopPrice")] = None
|
|
117
|
+
r"""Trigger price as a decimal string. Required for STOP and STOP_LIMIT orders. When the market reaches this price, the stop order becomes active."""
|
|
118
|
+
|
|
119
|
+
@field_serializer("side")
|
|
120
|
+
def serialize_side(self, value):
|
|
121
|
+
if isinstance(value, str):
|
|
122
|
+
try:
|
|
123
|
+
return models.OrderSideEnum(value)
|
|
124
|
+
except ValueError:
|
|
125
|
+
return value
|
|
126
|
+
return value
|
|
127
|
+
|
|
128
|
+
@field_serializer("time_in_force")
|
|
129
|
+
def serialize_time_in_force(self, value):
|
|
130
|
+
if isinstance(value, str):
|
|
131
|
+
try:
|
|
132
|
+
return models.OrderRequestTimeInForceEnum(value)
|
|
133
|
+
except ValueError:
|
|
134
|
+
return value
|
|
135
|
+
return value
|
|
136
|
+
|
|
137
|
+
@field_serializer("type")
|
|
138
|
+
def serialize_type(self, value):
|
|
139
|
+
if isinstance(value, str):
|
|
140
|
+
try:
|
|
141
|
+
return models.OrderTypeEnum(value)
|
|
142
|
+
except ValueError:
|
|
143
|
+
return value
|
|
144
|
+
return value
|
|
145
|
+
|
|
146
|
+
@model_serializer(mode="wrap")
|
|
147
|
+
def serialize_model(self, handler):
|
|
148
|
+
optional_fields = set(
|
|
149
|
+
["accountId", "clientId", "currency", "legs", "price", "stopPrice"]
|
|
150
|
+
)
|
|
151
|
+
serialized = handler(self)
|
|
152
|
+
m = {}
|
|
153
|
+
|
|
154
|
+
for n, f in type(self).model_fields.items():
|
|
155
|
+
k = f.alias or n
|
|
156
|
+
val = serialized.get(k, serialized.get(n))
|
|
157
|
+
|
|
158
|
+
if val != UNSET_SENTINEL:
|
|
159
|
+
if val is not None or k not in optional_fields:
|
|
160
|
+
m[k] = val
|
|
161
|
+
|
|
162
|
+
return m
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
class PlaceOrdRequest1TypedDict(TypedDict):
|
|
166
|
+
account_id: str
|
|
167
|
+
r"""Account identifier; provide accountId or tradingAccountId. Both may be supplied."""
|
|
168
|
+
qty: str
|
|
169
|
+
r"""Number of shares or contracts to trade, sent as a decimal string. Example: \"10\" for ten shares or \"1\" for one option contract."""
|
|
170
|
+
side: OrderSideEnum
|
|
171
|
+
r"""Which direction to trade in. Pick one:
|
|
172
|
+
- `BUY` — buying shares or contracts (opens a long position or closes an existing short).
|
|
173
|
+
- `SELL` — selling shares or contracts you already hold (closes a long position).
|
|
174
|
+
- `SELL_SHORT` — selling shares you do not own (opens a short position). Subject to short-sale regulations.
|
|
175
|
+
- `BUY_TO_COVER` — buying shares to close an open short position.
|
|
176
|
+
"""
|
|
177
|
+
symbol: str
|
|
178
|
+
r"""Ticker or underlying symbol to trade. Confirm the exact uppercase value with symbol search before placing an order."""
|
|
179
|
+
time_in_force: OrderRequestTimeInForceEnum
|
|
180
|
+
r"""How long the order should stay alive before automatically cancelling. Pick one:
|
|
181
|
+
- `DAY` — Active until the end of today's regular trading session, then cancelled if not filled. The default choice for most orders.
|
|
182
|
+
- `GTC` — Good 'Til Cancelled. Stays open across multiple trading days until you cancel it (the broker may cap at 60–90 days).
|
|
183
|
+
- `IOC` — Immediate Or Cancel. Fill whatever you can right now; cancel the rest immediately. Useful when you want partial fills but no resting order.
|
|
184
|
+
- `FOK` — Fill Or Kill. Fill the entire order immediately, or cancel it entirely. No partial fills allowed.
|
|
185
|
+
- `EXTENDED_HOURS` — Active during pre-market and after-hours trading sessions in addition to regular hours.
|
|
186
|
+
- `AT_THE_OPENING` — Execute at the official market open price; if it can't fill at open, it's cancelled.
|
|
187
|
+
- `AT_THE_CLOSE` — Execute at the official market close price; if it can't fill at close, it's cancelled.
|
|
188
|
+
"""
|
|
189
|
+
type: OrderTypeEnum
|
|
190
|
+
r"""How the order is priced. Pick one:
|
|
191
|
+
- `MARKET` — Execute immediately at the best available price. Fast and guaranteed to fill, but no price guarantee — the actual fill price can move during execution.
|
|
192
|
+
- `LIMIT` — Execute only at the limit `price` or better (lower for buys, higher for sells). Gives you price control, no execution guarantee. Requires the `price` field.
|
|
193
|
+
- `STOP` — Sits inactive until the market hits `stopPrice`, then converts to a market order. Common for stop-loss exits. Requires the `stopPrice` field.
|
|
194
|
+
- `STOP_LIMIT` — Sits inactive until the market hits `stopPrice`, then converts to a limit order at `price`. More control than `STOP`, but the limit may not fill. Requires both `stopPrice` and `price`.
|
|
195
|
+
"""
|
|
196
|
+
client_id: NotRequired[str]
|
|
197
|
+
r"""Optional identifier from your app. Send this when you want to tag orders by app, user, strategy, or integration for your own reconciliation."""
|
|
198
|
+
currency: NotRequired[str]
|
|
199
|
+
r"""Three-letter currency code for the order. Use USD for U.S. dollar orders unless your integration supports another currency."""
|
|
200
|
+
legs: NotRequired[List[OrdLegTypedDict]]
|
|
201
|
+
r"""Option legs for single-leg or multi-leg option orders. Omit this field for equity orders. Send 1 leg for a single option contract or 2 to 4 legs for a spread or other multi-leg strategy."""
|
|
202
|
+
price: NotRequired[str]
|
|
203
|
+
r"""Limit price as a decimal string. Required for LIMIT and STOP_LIMIT orders. For buys, this is the maximum price you will pay; for sells, it is the minimum price you will accept."""
|
|
204
|
+
stop_price: NotRequired[str]
|
|
205
|
+
r"""Trigger price as a decimal string. Required for STOP and STOP_LIMIT orders. When the market reaches this price, the stop order becomes active."""
|
|
206
|
+
trading_account_id: NotRequired[str]
|
|
207
|
+
r"""Trading account identifier that should receive the order. Enter the tradingAccountId selected by the user."""
|
|
208
|
+
|
|
209
|
+
|
|
210
|
+
class PlaceOrdRequest1(BaseModel):
|
|
211
|
+
account_id: Annotated[str, pydantic.Field(alias="accountId")]
|
|
212
|
+
r"""Account identifier; provide accountId or tradingAccountId. Both may be supplied."""
|
|
213
|
+
|
|
214
|
+
qty: str
|
|
215
|
+
r"""Number of shares or contracts to trade, sent as a decimal string. Example: \"10\" for ten shares or \"1\" for one option contract."""
|
|
216
|
+
|
|
217
|
+
side: OrderSideEnum
|
|
218
|
+
r"""Which direction to trade in. Pick one:
|
|
219
|
+
- `BUY` — buying shares or contracts (opens a long position or closes an existing short).
|
|
220
|
+
- `SELL` — selling shares or contracts you already hold (closes a long position).
|
|
221
|
+
- `SELL_SHORT` — selling shares you do not own (opens a short position). Subject to short-sale regulations.
|
|
222
|
+
- `BUY_TO_COVER` — buying shares to close an open short position.
|
|
223
|
+
"""
|
|
224
|
+
|
|
225
|
+
symbol: str
|
|
226
|
+
r"""Ticker or underlying symbol to trade. Confirm the exact uppercase value with symbol search before placing an order."""
|
|
227
|
+
|
|
228
|
+
time_in_force: Annotated[
|
|
229
|
+
OrderRequestTimeInForceEnum, pydantic.Field(alias="timeInForce")
|
|
230
|
+
]
|
|
231
|
+
r"""How long the order should stay alive before automatically cancelling. Pick one:
|
|
232
|
+
- `DAY` — Active until the end of today's regular trading session, then cancelled if not filled. The default choice for most orders.
|
|
233
|
+
- `GTC` — Good 'Til Cancelled. Stays open across multiple trading days until you cancel it (the broker may cap at 60–90 days).
|
|
234
|
+
- `IOC` — Immediate Or Cancel. Fill whatever you can right now; cancel the rest immediately. Useful when you want partial fills but no resting order.
|
|
235
|
+
- `FOK` — Fill Or Kill. Fill the entire order immediately, or cancel it entirely. No partial fills allowed.
|
|
236
|
+
- `EXTENDED_HOURS` — Active during pre-market and after-hours trading sessions in addition to regular hours.
|
|
237
|
+
- `AT_THE_OPENING` — Execute at the official market open price; if it can't fill at open, it's cancelled.
|
|
238
|
+
- `AT_THE_CLOSE` — Execute at the official market close price; if it can't fill at close, it's cancelled.
|
|
239
|
+
"""
|
|
240
|
+
|
|
241
|
+
type: OrderTypeEnum
|
|
242
|
+
r"""How the order is priced. Pick one:
|
|
243
|
+
- `MARKET` — Execute immediately at the best available price. Fast and guaranteed to fill, but no price guarantee — the actual fill price can move during execution.
|
|
244
|
+
- `LIMIT` — Execute only at the limit `price` or better (lower for buys, higher for sells). Gives you price control, no execution guarantee. Requires the `price` field.
|
|
245
|
+
- `STOP` — Sits inactive until the market hits `stopPrice`, then converts to a market order. Common for stop-loss exits. Requires the `stopPrice` field.
|
|
246
|
+
- `STOP_LIMIT` — Sits inactive until the market hits `stopPrice`, then converts to a limit order at `price`. More control than `STOP`, but the limit may not fill. Requires both `stopPrice` and `price`.
|
|
247
|
+
"""
|
|
248
|
+
|
|
249
|
+
client_id: Annotated[Optional[str], pydantic.Field(alias="clientId")] = None
|
|
250
|
+
r"""Optional identifier from your app. Send this when you want to tag orders by app, user, strategy, or integration for your own reconciliation."""
|
|
251
|
+
|
|
252
|
+
currency: Optional[str] = None
|
|
253
|
+
r"""Three-letter currency code for the order. Use USD for U.S. dollar orders unless your integration supports another currency."""
|
|
254
|
+
|
|
255
|
+
legs: Optional[List[OrdLeg]] = None
|
|
256
|
+
r"""Option legs for single-leg or multi-leg option orders. Omit this field for equity orders. Send 1 leg for a single option contract or 2 to 4 legs for a spread or other multi-leg strategy."""
|
|
257
|
+
|
|
258
|
+
price: Optional[str] = None
|
|
259
|
+
r"""Limit price as a decimal string. Required for LIMIT and STOP_LIMIT orders. For buys, this is the maximum price you will pay; for sells, it is the minimum price you will accept."""
|
|
260
|
+
|
|
261
|
+
stop_price: Annotated[Optional[str], pydantic.Field(alias="stopPrice")] = None
|
|
262
|
+
r"""Trigger price as a decimal string. Required for STOP and STOP_LIMIT orders. When the market reaches this price, the stop order becomes active."""
|
|
263
|
+
|
|
264
|
+
trading_account_id: Annotated[
|
|
265
|
+
Optional[str], pydantic.Field(alias="tradingAccountId")
|
|
266
|
+
] = None
|
|
267
|
+
r"""Trading account identifier that should receive the order. Enter the tradingAccountId selected by the user."""
|
|
268
|
+
|
|
269
|
+
@field_serializer("side")
|
|
270
|
+
def serialize_side(self, value):
|
|
271
|
+
if isinstance(value, str):
|
|
272
|
+
try:
|
|
273
|
+
return models.OrderSideEnum(value)
|
|
274
|
+
except ValueError:
|
|
275
|
+
return value
|
|
276
|
+
return value
|
|
277
|
+
|
|
278
|
+
@field_serializer("time_in_force")
|
|
279
|
+
def serialize_time_in_force(self, value):
|
|
280
|
+
if isinstance(value, str):
|
|
281
|
+
try:
|
|
282
|
+
return models.OrderRequestTimeInForceEnum(value)
|
|
283
|
+
except ValueError:
|
|
284
|
+
return value
|
|
285
|
+
return value
|
|
286
|
+
|
|
287
|
+
@field_serializer("type")
|
|
288
|
+
def serialize_type(self, value):
|
|
289
|
+
if isinstance(value, str):
|
|
290
|
+
try:
|
|
291
|
+
return models.OrderTypeEnum(value)
|
|
292
|
+
except ValueError:
|
|
293
|
+
return value
|
|
294
|
+
return value
|
|
295
|
+
|
|
296
|
+
@model_serializer(mode="wrap")
|
|
297
|
+
def serialize_model(self, handler):
|
|
298
|
+
optional_fields = set(
|
|
299
|
+
["clientId", "currency", "legs", "price", "stopPrice", "tradingAccountId"]
|
|
300
|
+
)
|
|
301
|
+
serialized = handler(self)
|
|
302
|
+
m = {}
|
|
303
|
+
|
|
304
|
+
for n, f in type(self).model_fields.items():
|
|
305
|
+
k = f.alias or n
|
|
306
|
+
val = serialized.get(k, serialized.get(n))
|
|
307
|
+
|
|
308
|
+
if val != UNSET_SENTINEL:
|
|
309
|
+
if val is not None or k not in optional_fields:
|
|
310
|
+
m[k] = val
|
|
311
|
+
|
|
312
|
+
return m
|
|
313
|
+
|
|
314
|
+
|
|
315
|
+
PlaceOrdRequestUnionTypedDict = TypeAliasType(
|
|
316
|
+
"PlaceOrdRequestUnionTypedDict",
|
|
317
|
+
Union[PlaceOrdRequest1TypedDict, PlaceOrdRequest2TypedDict],
|
|
318
|
+
)
|
|
319
|
+
r"""Request body for placing a live order through the core trading API. Use Preview Order first when available, then submit this only after the user confirms the trade."""
|
|
320
|
+
|
|
321
|
+
|
|
322
|
+
PlaceOrdRequestUnion = TypeAliasType(
|
|
323
|
+
"PlaceOrdRequestUnion", Union[PlaceOrdRequest1, PlaceOrdRequest2]
|
|
324
|
+
)
|
|
325
|
+
r"""Request body for placing a live order through the core trading API. Use Preview Order first when available, then submit this only after the user confirms the trade."""
|
|
326
|
+
|
|
327
|
+
|
|
328
|
+
try:
|
|
329
|
+
PlaceOrdRequest2.model_rebuild()
|
|
330
|
+
except NameError:
|
|
331
|
+
pass
|
|
332
|
+
try:
|
|
333
|
+
PlaceOrdRequest1.model_rebuild()
|
|
334
|
+
except NameError:
|
|
335
|
+
pass
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
# @generated-id: c3714f3a8ed1
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
from .httpmetadata import HTTPMetadata, HTTPMetadataTypedDict
|
|
6
|
+
from .predordersorder import PredOrdersOrder, PredOrdersOrderTypedDict
|
|
7
|
+
from .predordersplaceorderrequest import (
|
|
8
|
+
PredOrdersPlaceOrderRequest,
|
|
9
|
+
PredOrdersPlaceOrderRequestTypedDict,
|
|
10
|
+
)
|
|
11
|
+
from finance_dev.types import BaseModel, UNSET_SENTINEL
|
|
12
|
+
from finance_dev.utils import FieldMetadata, HeaderMetadata, RequestMetadata
|
|
13
|
+
import pydantic
|
|
14
|
+
from pydantic import model_serializer
|
|
15
|
+
from typing import Optional
|
|
16
|
+
from typing_extensions import Annotated, NotRequired, TypedDict
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
class PlacePredictionOrderRequestTypedDict(TypedDict):
|
|
20
|
+
pred_orders_place_order_request: PredOrdersPlaceOrderRequestTypedDict
|
|
21
|
+
idempotency_key: NotRequired[str]
|
|
22
|
+
r"""Makes a retry safe. A placement repeating a key you already used returns the order that key placed and places nothing new. The same key with different order terms returns `400` `INVALID_ORDER`. Without it, every request is a new order. Send it at most once."""
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class PlacePredictionOrderRequest(BaseModel):
|
|
26
|
+
pred_orders_place_order_request: Annotated[
|
|
27
|
+
PredOrdersPlaceOrderRequest,
|
|
28
|
+
FieldMetadata(request=RequestMetadata(media_type="application/json")),
|
|
29
|
+
]
|
|
30
|
+
|
|
31
|
+
idempotency_key: Annotated[
|
|
32
|
+
Optional[str],
|
|
33
|
+
pydantic.Field(alias="Idempotency-Key"),
|
|
34
|
+
FieldMetadata(header=HeaderMetadata(style="simple", explode=False)),
|
|
35
|
+
] = None
|
|
36
|
+
r"""Makes a retry safe. A placement repeating a key you already used returns the order that key placed and places nothing new. The same key with different order terms returns `400` `INVALID_ORDER`. Without it, every request is a new order. Send it at most once."""
|
|
37
|
+
|
|
38
|
+
@model_serializer(mode="wrap")
|
|
39
|
+
def serialize_model(self, handler):
|
|
40
|
+
optional_fields = set(["Idempotency-Key"])
|
|
41
|
+
serialized = handler(self)
|
|
42
|
+
m = {}
|
|
43
|
+
|
|
44
|
+
for n, f in type(self).model_fields.items():
|
|
45
|
+
k = f.alias or n
|
|
46
|
+
val = serialized.get(k, serialized.get(n))
|
|
47
|
+
|
|
48
|
+
if val != UNSET_SENTINEL:
|
|
49
|
+
if val is not None or k not in optional_fields:
|
|
50
|
+
m[k] = val
|
|
51
|
+
|
|
52
|
+
return m
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
class PlacePredictionOrderResponseBodyTypedDict(TypedDict):
|
|
56
|
+
r"""Standard success envelope used by all success responses. `data` is endpoint-specific."""
|
|
57
|
+
|
|
58
|
+
success: bool
|
|
59
|
+
data: NotRequired[PredOrdersOrderTypedDict]
|
|
60
|
+
r"""An order as recorded by order entry. Submitted terms (`quantity`, `price`, …) never change; working terms (`workingQuantity`, `workingPrice`, …) are the venue's answer. Optional decimals and timestamps are omitted when absent, never zero."""
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
class PlacePredictionOrderResponseBody(BaseModel):
|
|
64
|
+
r"""Standard success envelope used by all success responses. `data` is endpoint-specific."""
|
|
65
|
+
|
|
66
|
+
success: bool
|
|
67
|
+
|
|
68
|
+
data: Optional[PredOrdersOrder] = None
|
|
69
|
+
r"""An order as recorded by order entry. Submitted terms (`quantity`, `price`, …) never change; working terms (`workingQuantity`, `workingPrice`, …) are the venue's answer. Optional decimals and timestamps are omitted when absent, never zero."""
|
|
70
|
+
|
|
71
|
+
@model_serializer(mode="wrap")
|
|
72
|
+
def serialize_model(self, handler):
|
|
73
|
+
optional_fields = set(["data"])
|
|
74
|
+
serialized = handler(self)
|
|
75
|
+
m = {}
|
|
76
|
+
|
|
77
|
+
for n, f in type(self).model_fields.items():
|
|
78
|
+
k = f.alias or n
|
|
79
|
+
val = serialized.get(k, serialized.get(n))
|
|
80
|
+
|
|
81
|
+
if val != UNSET_SENTINEL:
|
|
82
|
+
if val is not None or k not in optional_fields:
|
|
83
|
+
m[k] = val
|
|
84
|
+
|
|
85
|
+
return m
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
class PlacePredictionOrderResponseTypedDict(TypedDict):
|
|
89
|
+
http_meta: HTTPMetadataTypedDict
|
|
90
|
+
object: NotRequired[PlacePredictionOrderResponseBodyTypedDict]
|
|
91
|
+
r"""Order accepted for sending. `state` is normally `pending_new`."""
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
class PlacePredictionOrderResponse(BaseModel):
|
|
95
|
+
http_meta: Annotated[Optional[HTTPMetadata], pydantic.Field(exclude=True)] = None
|
|
96
|
+
|
|
97
|
+
object: Optional[PlacePredictionOrderResponseBody] = None
|
|
98
|
+
r"""Order accepted for sending. `state` is normally `pending_new`."""
|
|
99
|
+
|
|
100
|
+
@model_serializer(mode="wrap")
|
|
101
|
+
def serialize_model(self, handler):
|
|
102
|
+
optional_fields = set(["object"])
|
|
103
|
+
serialized = handler(self)
|
|
104
|
+
m = {}
|
|
105
|
+
|
|
106
|
+
for n, f in type(self).model_fields.items():
|
|
107
|
+
k = f.alias or n
|
|
108
|
+
val = serialized.get(k, serialized.get(n))
|
|
109
|
+
|
|
110
|
+
if val != UNSET_SENTINEL:
|
|
111
|
+
if val is not None or k not in optional_fields:
|
|
112
|
+
m[k] = val
|
|
113
|
+
|
|
114
|
+
return m
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
|
|
2
|
+
# @generated-id: e6263eeafa39
|
|
3
|
+
|
|
4
|
+
from __future__ import annotations
|
|
5
|
+
from datetime import datetime
|
|
6
|
+
from finance_dev.types import BaseModel, UNSET_SENTINEL
|
|
7
|
+
import pydantic
|
|
8
|
+
from pydantic import model_serializer
|
|
9
|
+
from typing import List, Optional
|
|
10
|
+
from typing_extensions import Annotated, NotRequired, TypedDict
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class PredMdBaseEventTypedDict(TypedDict):
|
|
14
|
+
r"""Top-level 4castex base event (e.g. UNR, HORC)."""
|
|
15
|
+
|
|
16
|
+
base_event_id: str
|
|
17
|
+
first_seen_at: datetime
|
|
18
|
+
last_synced_at: datetime
|
|
19
|
+
category_levels: NotRequired[List[str]]
|
|
20
|
+
r"""The venue's categories for this base event, broadest first: category, subcategory, then region. A few base events have fewer levels. Level names repeat under different parents, so identify a category by its whole path. Omitted until the venue's product listing has been synced for this base event."""
|
|
21
|
+
display_name: NotRequired[str]
|
|
22
|
+
r"""The venue's name for this base event. Omitted until the venue's product listing has been synced for this base event."""
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class PredMdBaseEvent(BaseModel):
|
|
26
|
+
r"""Top-level 4castex base event (e.g. UNR, HORC)."""
|
|
27
|
+
|
|
28
|
+
base_event_id: Annotated[str, pydantic.Field(alias="baseEventId")]
|
|
29
|
+
|
|
30
|
+
first_seen_at: Annotated[datetime, pydantic.Field(alias="firstSeenAt")]
|
|
31
|
+
|
|
32
|
+
last_synced_at: Annotated[datetime, pydantic.Field(alias="lastSyncedAt")]
|
|
33
|
+
|
|
34
|
+
category_levels: Annotated[
|
|
35
|
+
Optional[List[str]], pydantic.Field(alias="categoryLevels")
|
|
36
|
+
] = None
|
|
37
|
+
r"""The venue's categories for this base event, broadest first: category, subcategory, then region. A few base events have fewer levels. Level names repeat under different parents, so identify a category by its whole path. Omitted until the venue's product listing has been synced for this base event."""
|
|
38
|
+
|
|
39
|
+
display_name: Annotated[Optional[str], pydantic.Field(alias="displayName")] = None
|
|
40
|
+
r"""The venue's name for this base event. Omitted until the venue's product listing has been synced for this base event."""
|
|
41
|
+
|
|
42
|
+
@model_serializer(mode="wrap")
|
|
43
|
+
def serialize_model(self, handler):
|
|
44
|
+
optional_fields = set(["categoryLevels", "displayName"])
|
|
45
|
+
serialized = handler(self)
|
|
46
|
+
m = {}
|
|
47
|
+
|
|
48
|
+
for n, f in type(self).model_fields.items():
|
|
49
|
+
k = f.alias or n
|
|
50
|
+
val = serialized.get(k, serialized.get(n))
|
|
51
|
+
|
|
52
|
+
if val != UNSET_SENTINEL:
|
|
53
|
+
if val is not None or k not in optional_fields:
|
|
54
|
+
m[k] = val
|
|
55
|
+
|
|
56
|
+
return m
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
try:
|
|
60
|
+
PredMdBaseEvent.model_rebuild()
|
|
61
|
+
except NameError:
|
|
62
|
+
pass
|