diff --git a/docs/modules/screener.md b/docs/modules/screener.md new file mode 100644 index 00000000..bec92ed9 --- /dev/null +++ b/docs/modules/screener.md @@ -0,0 +1,534 @@ +# screener + +## Usage: + +```js +import yahooFinance from 'yahoo-finance2'; +const queryOptions = { scrIds: 'aggressive_small_caps', count: 5, region: 'US', lang: 'en-US' }; +const result = await yahooFinance.screener(queryOptions); +``` +Result: +```js +{ + "id":"af57f75b-eb22-4565-a604-5eb8744dd35c", + "title":"Aggresive small cap stocks", + "description":"Small cap stocks with high earnings growth rates", + "canonicalName":"AGGRESSIVE_SMALL_CAPS", + "criteriaMeta":{ + "size":5, + "offset":0, + "sortField":"eodvolume", + "sortType":"DESC", + "quoteType":"EQUITY", + "criteria":[ + { + "field":"epsgrowth.lasttwelvemonths", + "operators":[ + "GT" + ], + "values":[ + 25.0 + ], + "labelsSelected":[ + + ], + "dependentValues":[ + + ] + }, + { + "field":"intradaymarketcap", + "operators":[ + "EQ" + ], + "values":[ + + ], + "labelsSelected":[ + 0 + ], + "dependentValues":[ + + ] + }, + { + "field":"exchange", + "operators":[ + "EQ" + ], + "values":[ + + ], + "labelsSelected":[ + 0, + 1 + ], + "dependentValues":[ + + ] + } + ], + "topOperator":"AND" + }, + "rawCriteria":"{\"offset\":0,\"size\":5,\"sortField\":\"eodvolume\",\"sortType\":\"desc\",\"quoteType\":\"equity\",\"query\":{\"operator\":\"and\",\"operands\":[{\"operator\":\"gt\",\"operands\":[\"epsgrowth.lasttwelvemonths\",25.0]},{\"operator\":\"lt\",\"operands\":[\"intradaymarketcap\",2000000000]},{\"operator\":\"or\",\"operands\":[{\"operator\":\"eq\",\"operands\":[\"exchange\",\"NMS\"]},{\"operator\":\"eq\",\"operands\":[\"exchange\",\"NYQ\"]}]}]}}", + "start":0, + "count":5, + "total":445, + "quotes":[ + { + "language":"en-US", + "region":"US", + "quoteType":"EQUITY", + "typeDisp":"Equity", + "quoteSourceName":"Nasdaq Real Time Price", + "triggerable":true, + "customPriceAlertConfidence":"HIGH", + "lastCloseTevEbitLtm":1.042158, + "lastClosePriceToNNWCPerShare":0.3776648783213656, + "currency":"USD", + "postMarketChangePercent":0.0, + "postMarketTime":1695851846, + "postMarketPrice":4.47, + "postMarketChange":0.0, + "regularMarketChange":-0.04000044, + "regularMarketTime":1695844800, + "regularMarketPrice":4.47, + "regularMarketDayHigh":4.64, + "regularMarketDayRange":"4.405 - 4.64", + "regularMarketDayLow":4.405, + "regularMarketVolume":521047, + "regularMarketPreviousClose":4.51, + "bid":4.47, + "ask":4.48, + "bidSize":8, + "askSize":11, + "market":"us_market", + "messageBoardId":"finmb_127912549", + "fullExchangeName":"NasdaqGS", + "longName":"ContextLogic Inc.", + "financialCurrency":"USD", + "regularMarketOpen":4.55, + "averageDailyVolume3Month":896411, + "averageDailyVolume10Day":705300, + "fiftyTwoWeekLowChange":0.37999964, + "fiftyTwoWeekLowChangePercent":0.09290944, + "fiftyTwoWeekRange":"4.09 - 32.1", + "fiftyTwoWeekHighChange":-27.63, + "fiftyTwoWeekHighChangePercent":-0.8607477, + "fiftyTwoWeekChangePercent":-84.17544, + "regularMarketChangePercent":-0.88692766, + "exchange":"NMS", + "shortName":"ContextLogic Inc.", + "fiftyTwoWeekLow":4.09, + "fiftyTwoWeekHigh":32.1, + "averageAnalystRating":"4.0 - Underperform", + "firstTradeDateMilliseconds":1608129000000, + "priceHint":4, + "earningsTimestamp":1691096400, + "earningsTimestampStart":1699354740, + "earningsTimestampEnd":1699876800, + "trailingAnnualDividendRate":0.0, + "trailingAnnualDividendYield":0.0, + "marketState":"POST", + "epsTrailingTwelveMonths":-18.79, + "epsForward":-9.17, + "epsCurrentYear":-13.02, + "priceEpsCurrentYear":-0.34331796, + "sharesOutstanding":23782000, + "bookValue":14.171, + "fiftyDayAverage":6.0326, + "fiftyDayAverageChange":-1.5626001, + "fiftyDayAverageChangePercent":-0.259026, + "twoHundredDayAverage":10.923325, + "twoHundredDayAverageChange":-6.453325, + "twoHundredDayAverageChangePercent":-0.59078395, + "marketCap":106305536, + "forwardPE":-0.4874591, + "priceToBook":0.31543294, + "sourceInterval":15, + "exchangeDataDelayedBy":0, + "exchangeTimezoneName":"America/New_York", + "exchangeTimezoneShortName":"EDT", + "gmtOffSetMilliseconds":-14400000, + "ipoExpectedDate":"2020-12-16", + "esgPopulated":false, + "tradeable":false, + "cryptoTradeable":false, + "displayName":"ContextLogic", + "symbol":"WISH" + }, + { + "language":"en-US", + "region":"US", + "quoteType":"EQUITY", + "typeDisp":"Equity", + "quoteSourceName":"Nasdaq Real Time Price", + "triggerable":false, + "customPriceAlertConfidence":"LOW", + "lastCloseTevEbitLtm":-0.651838, + "lastClosePriceToNNWCPerShare":-0.9122055581669222, + "currency":"USD", + "postMarketChangePercent":2.27273, + "postMarketTime":1695846295, + "postMarketPrice":2.7, + "postMarketChange":0.0599999, + "regularMarketChange":-0.049999952, + "regularMarketTime":1695844802, + "regularMarketPrice":2.64, + "regularMarketDayHigh":2.74, + "regularMarketDayRange":"2.6 - 2.74", + "regularMarketDayLow":2.6, + "regularMarketVolume":23728, + "regularMarketPreviousClose":2.69, + "bid":2.6, + "ask":2.8, + "bidSize":11, + "askSize":8, + "market":"us_market", + "messageBoardId":"finmb_244091772", + "fullExchangeName":"NYSE", + "longName":"BIT Mining Limited", + "financialCurrency":"USD", + "regularMarketOpen":2.73, + "averageDailyVolume3Month":161411, + "averageDailyVolume10Day":36200, + "fiftyTwoWeekLowChange":1.2400001, + "fiftyTwoWeekLowChangePercent":0.8857144, + "fiftyTwoWeekRange":"1.4 - 5.49", + "fiftyTwoWeekHighChange":-2.8499997, + "fiftyTwoWeekHighChangePercent":-0.51912564, + "fiftyTwoWeekChangePercent":-10.333336, + "regularMarketChangePercent":-1.8587344, + "exchange":"NYQ", + "shortName":"BIT Mining Limited", + "fiftyTwoWeekLow":1.4, + "fiftyTwoWeekHigh":5.49, + "averageAnalystRating":"3.0 - Hold", + "firstTradeDateMilliseconds":1385130600000, + "priceHint":4, + "earningsTimestamp":1692388800, + "earningsTimestampStart":1700055000, + "earningsTimestampEnd":1700487000, + "trailingAnnualDividendRate":0.0, + "trailingAnnualDividendYield":0.0, + "marketState":"POST", + "epsTrailingTwelveMonths":-15.94, + "epsForward":0.01, + "epsCurrentYear":-0.01, + "priceEpsCurrentYear":-264.00003, + "sharesOutstanding":11112300, + "bookValue":4.283, + "fiftyDayAverage":3.0762, + "fiftyDayAverageChange":-0.4361999, + "fiftyDayAverageChangePercent":-0.14179829, + "twoHundredDayAverage":2.84755, + "twoHundredDayAverageChange":-0.20754981, + "twoHundredDayAverageChangePercent":-0.07288715, + "marketCap":29336474, + "forwardPE":264.00003, + "priceToBook":0.6163904, + "sourceInterval":15, + "exchangeDataDelayedBy":0, + "exchangeTimezoneName":"America/New_York", + "exchangeTimezoneShortName":"EDT", + "gmtOffSetMilliseconds":-14400000, + "esgPopulated":false, + "tradeable":false, + "cryptoTradeable":false, + "displayName":"BIT Mining", + "symbol":"BTCM" + }, + { + "language":"en-US", + "region":"US", + "quoteType":"EQUITY", + "typeDisp":"Equity", + "quoteSourceName":"Nasdaq Real Time Price", + "triggerable":true, + "customPriceAlertConfidence":"HIGH", + "lastCloseTevEbitLtm":-9.2136, + "lastClosePriceToNNWCPerShare":-4.752000782493044, + "currency":"USD", + "postMarketChangePercent":0.41666624, + "postMarketTime":1695852010, + "postMarketPrice":2.41, + "postMarketChange":0.00999999, + "regularMarketChange":0.0, + "regularMarketTime":1695844800, + "regularMarketPrice":2.4, + "regularMarketDayHigh":2.62, + "regularMarketDayRange":"2.31 - 2.62", + "regularMarketDayLow":2.31, + "regularMarketVolume":34169024, + "regularMarketPreviousClose":2.4, + "bid":2.39, + "ask":2.39, + "bidSize":473, + "askSize":394, + "market":"us_market", + "messageBoardId":"finmb_265511894", + "fullExchangeName":"NasdaqGS", + "longName":"Tilray Brands, Inc.", + "financialCurrency":"USD", + "regularMarketOpen":2.5, + "averageDailyVolume3Month":31731809, + "averageDailyVolume10Day":29626600, + "fiftyTwoWeekLowChange":0.9000001, + "fiftyTwoWeekLowChangePercent":0.6000001, + "fiftyTwoWeekRange":"1.5 - 5.12", + "fiftyTwoWeekHighChange":-2.7199998, + "fiftyTwoWeekHighChangePercent":-0.53125, + "fiftyTwoWeekChangePercent":-20.265781, + "regularMarketChangePercent":0.0, + "exchange":"NMS", + "shortName":"Tilray Brands, Inc.", + "fiftyTwoWeekLow":1.5, + "fiftyTwoWeekHigh":5.12, + "averageAnalystRating":"2.6 - Hold", + "firstTradeDateMilliseconds":1532007000000, + "priceHint":4, + "earningsTimestamp":1696422600, + "earningsTimestampStart":1696422600, + "earningsTimestampEnd":1696422600, + "trailingAnnualDividendRate":0.0, + "trailingAnnualDividendYield":0.0, + "marketState":"POST", + "epsTrailingTwelveMonths":-2.35, + "epsForward":-0.15, + "epsCurrentYear":-0.22, + "priceEpsCurrentYear":-10.909091, + "sharesOutstanding":720406016, + "bookValue":5.049, + "fiftyDayAverage":2.4932, + "fiftyDayAverageChange":-0.09319997, + "fiftyDayAverageChangePercent":-0.037381664, + "twoHundredDayAverage":2.50135, + "twoHundredDayAverageChange":-0.10134983, + "twoHundredDayAverageChangePercent":-0.040518053, + "marketCap":1728974464, + "forwardPE":-16.0, + "priceToBook":0.47534168, + "sourceInterval":15, + "exchangeDataDelayedBy":0, + "exchangeTimezoneName":"America/New_York", + "exchangeTimezoneShortName":"EDT", + "gmtOffSetMilliseconds":-14400000, + "esgPopulated":false, + "tradeable":false, + "cryptoTradeable":false, + "displayName":"Tilray Brands", + "symbol":"TLRY" + }, + { + "language":"en-US", + "region":"US", + "quoteType":"EQUITY", + "typeDisp":"Equity", + "quoteSourceName":"Nasdaq Real Time Price", + "triggerable":false, + "customPriceAlertConfidence":"LOW", + "lastCloseTevEbitLtm":-0.255439, + "lastClosePriceToNNWCPerShare":2.314560354201368, + "currency":"USD", + "postMarketChangePercent":0.90909004, + "postMarketTime":1695852006, + "postMarketPrice":1.665, + "postMarketChange":0.014999986, + "regularMarketChange":0.02, + "regularMarketTime":1695844801, + "regularMarketPrice":1.65, + "regularMarketDayHigh":1.6899, + "regularMarketDayRange":"1.57 - 1.6899", + "regularMarketDayLow":1.57, + "regularMarketVolume":7983465, + "regularMarketPreviousClose":1.63, + "bid":1.65, + "ask":1.66, + "bidSize":14, + "askSize":270, + "market":"us_market", + "messageBoardId":"finmb_25116311", + "fullExchangeName":"NYSE", + "longName":"Virgin Galactic Holdings, Inc.", + "financialCurrency":"USD", + "regularMarketOpen":1.66, + "averageDailyVolume3Month":18658580, + "averageDailyVolume10Day":16654370, + "fiftyTwoWeekLowChange":0.07999992, + "fiftyTwoWeekLowChangePercent":0.050955363, + "fiftyTwoWeekRange":"1.57 - 6.61", + "fiftyTwoWeekHighChange":-4.96, + "fiftyTwoWeekHighChangePercent":-0.7503782, + "fiftyTwoWeekChangePercent":-68.16406, + "regularMarketChangePercent":1.22699, + "exchange":"NYQ", + "shortName":"Virgin Galactic Holdings, Inc.", + "fiftyTwoWeekLow":1.57, + "fiftyTwoWeekHigh":6.61, + "averageAnalystRating":"3.2 - Hold", + "firstTradeDateMilliseconds":1506691800000, + "priceHint":4, + "earningsTimestamp":1690923600, + "earningsTimestampStart":1698836340, + "earningsTimestampEnd":1699272000, + "trailingAnnualDividendRate":0.0, + "trailingAnnualDividendYield":0.0, + "marketState":"POST", + "epsTrailingTwelveMonths":-2.03, + "epsForward":-1.4, + "epsCurrentYear":-1.9, + "priceEpsCurrentYear":-0.8684211, + "sharesOutstanding":367136992, + "bookValue":1.439, + "fiftyDayAverage":2.8894, + "fiftyDayAverageChange":-1.2394, + "fiftyDayAverageChangePercent":-0.4289472, + "twoHundredDayAverage":4.00465, + "twoHundredDayAverageChange":-2.35465, + "twoHundredDayAverageChangePercent":-0.58797896, + "marketCap":605776000, + "forwardPE":-1.1785715, + "priceToBook":1.1466296, + "sourceInterval":15, + "exchangeDataDelayedBy":0, + "exchangeTimezoneName":"America/New_York", + "exchangeTimezoneShortName":"EDT", + "gmtOffSetMilliseconds":-14400000, + "esgPopulated":false, + "tradeable":false, + "cryptoTradeable":false, + "displayName":"Virgin Galactic", + "symbol":"SPCE" + }, + { + "language":"en-US", + "region":"US", + "quoteType":"EQUITY", + "typeDisp":"Equity", + "quoteSourceName":"Nasdaq Real Time Price", + "triggerable":false, + "customPriceAlertConfidence":"LOW", + "lastCloseTevEbitLtm":-0.644288, + "lastClosePriceToNNWCPerShare":-0.3064363061308179, + "currency":"USD", + "postMarketChangePercent":4.0178533, + "postMarketTime":1695851893, + "postMarketPrice":2.33, + "postMarketChange":0.089999914, + "regularMarketChange":0.14, + "regularMarketTime":1695844802, + "regularMarketPrice":2.24, + "regularMarketDayHigh":2.71, + "regularMarketDayRange":"2.02 - 2.71", + "regularMarketDayLow":2.02, + "regularMarketVolume":1150346, + "regularMarketPreviousClose":2.1, + "bid":2.25, + "ask":2.26, + "bidSize":11, + "askSize":29, + "market":"us_market", + "messageBoardId":"finmb_250459761", + "fullExchangeName":"NYSE", + "longName":"Wheels Up Experience Inc.", + "financialCurrency":"USD", + "regularMarketOpen":2.08, + "averageDailyVolume3Month":1483406, + "averageDailyVolume10Day":985700, + "fiftyTwoWeekLowChange":1.26, + "fiftyTwoWeekLowChangePercent":1.2857143, + "fiftyTwoWeekRange":"0.98 - 18.4", + "fiftyTwoWeekHighChange":-16.16, + "fiftyTwoWeekHighChangePercent":-0.87826085, + "fiftyTwoWeekChangePercent":-84.210526, + "regularMarketChangePercent":6.66667, + "exchange":"NYQ", + "shortName":"Wheels Up Experience Inc.", + "fiftyTwoWeekLow":0.98, + "fiftyTwoWeekHigh":18.4, + "averageAnalystRating":"2.0 - Buy", + "firstTradeDateMilliseconds":1605709800000, + "priceHint":4, + "earningsTimestamp":1692049140, + "earningsTimestampStart":1699275895, + "earningsTimestampEnd":1699621495, + "trailingAnnualDividendRate":0.0, + "trailingAnnualDividendYield":0.0, + "marketState":"POST", + "epsTrailingTwelveMonths":-22.36, + "epsForward":-6.0, + "epsCurrentYear":-10.3, + "priceEpsCurrentYear":-0.21747573, + "sharesOutstanding":166804992, + "bookValue":0.506, + "fiftyDayAverage":2.127, + "fiftyDayAverageChange":0.112999916, + "fiftyDayAverageChangePercent":0.05312643, + "twoHundredDayAverage":5.98105, + "twoHundredDayAverageChange":-3.74105, + "twoHundredDayAverageChangePercent":-0.6254838, + "marketCap":373643168, + "forwardPE":-0.37333333, + "priceToBook":4.4268775, + "sourceInterval":15, + "exchangeDataDelayedBy":0, + "exchangeTimezoneName":"America/New_York", + "exchangeTimezoneShortName":"EDT", + "gmtOffSetMilliseconds":-14400000, + "esgPopulated":false, + "tradeable":false, + "cryptoTradeable":false, + "displayName":"Wheels Up Experience", + "symbol":"UP" + } + ], + "useRecords":false, + "predefinedScr":true, + "versionId":0, + "creationDate":1473802201682, + "lastUpdated":1473802201682, + "isPremium":false, + "iconUrl":"https://s.yimg.com/cv/apiv2/fin/img/assets/predefined_screeners/analytics.png" +} + +``` + +**Note:** The example output above does not cover all possible return results, which can vary by asset type and even time of day (trading period). For an exhausting list of everything we cover and that you might get back, please see the TypeScript interface in https://github.com/gadicc/node-yahoo-finance2/blob/devel/src/modules/trendingSymbols.ts + +## API + +```js +await yahooFinance.screener(queryOptions, moduleOptions); +``` + +### Query + +Possible scrIds are: +- "aggressive_small_caps" +- "conservative_foreign_funds" +- "day_gainers" +- "day_losers" +- "growth_technology_stocks" +- "high_yield_bond" +- "most_actives" +- "most_shorted_stocks" +- "portfolio_anchors" +- "small_cap_gainers" +- "solid_large_growth_funds" +- "solid_midcap_growth_funds" +- "top_mutual_funds" +- "undervalued_growth_stocks" +- "undervalued_large_caps" + +### Query Options + +| Name | Type | Default | Description | +| -------- | ------ | ------- | ----------------------------------------------------------------- | +| `scrIds` | string | | Predefined screener name | +| `count` | number | 5 | The max amount of symbols that can be returned. | +| `lang` | string | "en-US" | | +| `region` | string | | The region/country. Will override the search country is provided. | + +### Module Options + +See [Common Options](../README.md#common-options). \ No newline at end of file diff --git a/schema.json b/schema.json index 372d4a72..02e3e2b9 100644 --- a/schema.json +++ b/schema.json @@ -8609,6 +8609,558 @@ ], "additionalProperties": false }, + "ScreenerResult": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "canonicalName": { + "type": "string" + }, + "criteriaMeta": { + "$ref": "#/definitions/ScreenerCriteriaMeta" + }, + "rawCriteria": { + "type": "string" + }, + "start": { + "yahooFinanceType": "number" + }, + "count": { + "yahooFinanceType": "number" + }, + "total": { + "yahooFinanceType": "number" + }, + "quotes": { + "type": "array", + "items": { + "$ref": "#/definitions/ScreenerQuote" + } + }, + "useRecords": { + "type": "boolean" + }, + "predefinedScr": { + "type": "boolean" + }, + "versionId": { + "yahooFinanceType": "number" + }, + "creationDate": { + "yahooFinanceType": "number" + }, + "lastUpdated": { + "yahooFinanceType": "number" + }, + "isPremium": { + "type": "boolean" + }, + "iconUrl": { + "type": "string" + } + }, + "required": [ + "id", + "title", + "description", + "canonicalName", + "criteriaMeta", + "rawCriteria", + "start", + "count", + "total", + "quotes", + "useRecords", + "predefinedScr", + "versionId", + "creationDate", + "lastUpdated", + "isPremium", + "iconUrl" + ], + "additionalProperties": false + }, + "ScreenerCriteriaMeta": { + "type": "object", + "properties": { + "size": { + "yahooFinanceType": "number" + }, + "offset": { + "yahooFinanceType": "number" + }, + "sortField": { + "type": "string" + }, + "sortType": { + "type": "string" + }, + "quoteType": { + "type": "string" + }, + "criteria": { + "type": "array", + "items": { + "$ref": "#/definitions/ScreenerCriterum" + } + }, + "topOperator": { + "type": "string" + } + }, + "required": [ + "size", + "offset", + "sortField", + "sortType", + "quoteType", + "criteria", + "topOperator" + ], + "additionalProperties": false + }, + "ScreenerCriterum": { + "type": "object", + "properties": { + "field": { + "type": "string" + }, + "operators": { + "type": "array", + "items": { + "type": "string" + } + }, + "values": { + "type": "array", + "items": { + "yahooFinanceType": "number" + } + }, + "labelsSelected": { + "type": "array", + "items": { + "yahooFinanceType": "number" + } + }, + "dependentValues": { + "type": "array", + "items": {} + } + }, + "required": [ + "field", + "operators", + "values", + "labelsSelected", + "dependentValues" + ], + "additionalProperties": false + }, + "ScreenerQuote": { + "type": "object", + "properties": { + "language": { + "type": "string" + }, + "region": { + "type": "string" + }, + "quoteType": { + "type": "string" + }, + "typeDisp": { + "type": "string" + }, + "quoteSourceName": { + "type": "string" + }, + "triggerable": { + "type": "boolean" + }, + "customPriceAlertConfidence": { + "type": "string" + }, + "lastCloseTevEbitLtm": { + "yahooFinanceType": "number" + }, + "lastClosePriceToNNWCPerShare": { + "yahooFinanceType": "number" + }, + "firstTradeDateMilliseconds": { + "yahooFinanceType": "number" + }, + "priceHint": { + "yahooFinanceType": "number" + }, + "postMarketChangePercent": { + "yahooFinanceType": "number" + }, + "postMarketTime": { + "yahooFinanceType": "number" + }, + "postMarketPrice": { + "yahooFinanceType": "number" + }, + "postMarketChange": { + "yahooFinanceType": "number" + }, + "regularMarketChange": { + "yahooFinanceType": "number" + }, + "regularMarketTime": { + "yahooFinanceType": "number" + }, + "regularMarketPrice": { + "yahooFinanceType": "number" + }, + "regularMarketDayHigh": { + "yahooFinanceType": "number" + }, + "regularMarketDayRange": { + "type": "string" + }, + "currency": { + "type": "string" + }, + "regularMarketDayLow": { + "yahooFinanceType": "number" + }, + "regularMarketVolume": { + "yahooFinanceType": "number" + }, + "regularMarketPreviousClose": { + "yahooFinanceType": "number" + }, + "bid": { + "yahooFinanceType": "number" + }, + "ask": { + "yahooFinanceType": "number" + }, + "bidSize": { + "yahooFinanceType": "number" + }, + "askSize": { + "yahooFinanceType": "number" + }, + "market": { + "type": "string" + }, + "messageBoardId": { + "type": "string" + }, + "fullExchangeName": { + "type": "string" + }, + "longName": { + "type": "string" + }, + "financialCurrency": { + "type": "string" + }, + "regularMarketOpen": { + "yahooFinanceType": "number" + }, + "averageDailyVolume3Month": { + "yahooFinanceType": "number" + }, + "averageDailyVolume10Day": { + "yahooFinanceType": "number" + }, + "fiftyTwoWeekLowChange": { + "yahooFinanceType": "number" + }, + "fiftyTwoWeekLowChangePercent": { + "yahooFinanceType": "number" + }, + "fiftyTwoWeekRange": { + "type": "string" + }, + "fiftyTwoWeekHighChange": { + "yahooFinanceType": "number" + }, + "fiftyTwoWeekHighChangePercent": { + "yahooFinanceType": "number" + }, + "fiftyTwoWeekChangePercent": { + "yahooFinanceType": "number" + }, + "earningsTimestamp": { + "yahooFinanceType": "number" + }, + "earningsTimestampStart": { + "yahooFinanceType": "number" + }, + "earningsTimestampEnd": { + "yahooFinanceType": "number" + }, + "trailingAnnualDividendRate": { + "yahooFinanceType": "number" + }, + "trailingAnnualDividendYield": { + "yahooFinanceType": "number" + }, + "marketState": { + "type": "string" + }, + "epsTrailingTwelveMonths": { + "yahooFinanceType": "number" + }, + "epsForward": { + "yahooFinanceType": "number" + }, + "epsCurrentYear": { + "yahooFinanceType": "number" + }, + "priceEpsCurrentYear": { + "yahooFinanceType": "number" + }, + "sharesOutstanding": { + "yahooFinanceType": "number" + }, + "bookValue": { + "yahooFinanceType": "number" + }, + "fiftyDayAverage": { + "yahooFinanceType": "number" + }, + "fiftyDayAverageChange": { + "yahooFinanceType": "number" + }, + "fiftyDayAverageChangePercent": { + "yahooFinanceType": "number" + }, + "twoHundredDayAverage": { + "yahooFinanceType": "number" + }, + "twoHundredDayAverageChange": { + "yahooFinanceType": "number" + }, + "twoHundredDayAverageChangePercent": { + "yahooFinanceType": "number" + }, + "marketCap": { + "yahooFinanceType": "number" + }, + "forwardPE": { + "yahooFinanceType": "number" + }, + "priceToBook": { + "yahooFinanceType": "number" + }, + "sourceInterval": { + "yahooFinanceType": "number" + }, + "exchangeDataDelayedBy": { + "yahooFinanceType": "number" + }, + "exchangeTimezoneName": { + "type": "string" + }, + "exchangeTimezoneShortName": { + "type": "string" + }, + "gmtOffSetMilliseconds": { + "yahooFinanceType": "number" + }, + "esgPopulated": { + "type": "boolean" + }, + "tradeable": { + "type": "boolean" + }, + "cryptoTradeable": { + "type": "boolean" + }, + "exchange": { + "type": "string" + }, + "fiftyTwoWeekLow": { + "yahooFinanceType": "number" + }, + "fiftyTwoWeekHigh": { + "yahooFinanceType": "number" + }, + "shortName": { + "type": "string" + }, + "averageAnalystRating": { + "type": "string" + }, + "regularMarketChangePercent": { + "yahooFinanceType": "number" + }, + "symbol": { + "type": "string" + }, + "dividendDate": { + "yahooFinanceType": "number" + }, + "displayName": { + "type": "string" + }, + "trailingPE": { + "yahooFinanceType": "number" + }, + "prevName": { + "type": "string" + }, + "nameChangeDate": { + "yahooFinanceType": "number" + }, + "ipoExpectedDate": { + "yahooFinanceType": "number" + }, + "dividendYield": { + "yahooFinanceType": "number" + }, + "dividendRate": { + "yahooFinanceType": "number" + }, + "yieldTTM": { + "yahooFinanceType": "number" + }, + "peTTM": { + "yahooFinanceType": "number" + }, + "annualReturnNavY3": { + "yahooFinanceType": "number" + }, + "annualReturnNavY5": { + "yahooFinanceType": "number" + }, + "ytdReturn": { + "yahooFinanceType": "number" + }, + "trailingThreeMonthReturns": { + "yahooFinanceType": "number" + }, + "netAssets": { + "yahooFinanceType": "number" + }, + "netExpenseRatio": { + "yahooFinanceType": "number" + } + }, + "required": [ + "language", + "region", + "quoteType", + "typeDisp", + "quoteSourceName", + "triggerable", + "customPriceAlertConfidence", + "firstTradeDateMilliseconds", + "priceHint", + "regularMarketChange", + "regularMarketTime", + "regularMarketPrice", + "currency", + "regularMarketPreviousClose", + "market", + "messageBoardId", + "fullExchangeName", + "longName", + "averageDailyVolume3Month", + "averageDailyVolume10Day", + "fiftyTwoWeekLowChange", + "fiftyTwoWeekLowChangePercent", + "fiftyTwoWeekRange", + "fiftyTwoWeekHighChange", + "fiftyTwoWeekHighChangePercent", + "fiftyTwoWeekChangePercent", + "marketState", + "fiftyDayAverage", + "fiftyDayAverageChange", + "fiftyDayAverageChangePercent", + "twoHundredDayAverage", + "twoHundredDayAverageChange", + "twoHundredDayAverageChangePercent", + "sourceInterval", + "exchangeDataDelayedBy", + "exchangeTimezoneName", + "exchangeTimezoneShortName", + "gmtOffSetMilliseconds", + "esgPopulated", + "tradeable", + "cryptoTradeable", + "exchange", + "fiftyTwoWeekLow", + "fiftyTwoWeekHigh", + "shortName", + "regularMarketChangePercent", + "symbol" + ], + "additionalProperties": false + }, + "PredefinedScreenerModules": { + "type": "string", + "enum": [ + "aggressive_small_caps", + "conservative_foreign_funds", + "day_gainers", + "day_losers", + "growth_technology_stocks", + "high_yield_bond", + "most_actives", + "most_shorted_stocks", + "portfolio_anchors", + "small_cap_gainers", + "solid_large_growth_funds", + "solid_midcap_growth_funds", + "top_mutual_funds", + "undervalued_growth_stocks", + "undervalued_large_caps" + ] + }, + "ScreenerOptions": { + "type": "object", + "properties": { + "lang": { + "type": "string" + }, + "region": { + "type": "string" + }, + "scrIds": { + "$ref": "#/definitions/PredefinedScreenerModules" + }, + "count": { + "yahooFinanceType": "number" + } + }, + "required": [ + "scrIds" + ], + "additionalProperties": false + }, + "NamedParameters": { + "type": "object", + "properties": { + "this": { + "$ref": "#/definitions/ModuleThis" + }, + "queryOptionsOverrides": { + "$ref": "#/definitions/ScreenerOptions" + }, + "moduleOptions": { + "$ref": "#/definitions/ModuleOptions" + } + }, + "required": [ + "this" + ], + "additionalProperties": false + }, "SearchQuoteYahoo": { "type": "object", "properties": { diff --git a/src/index-common.ts b/src/index-common.ts index 69662723..032dd5b5 100644 --- a/src/index-common.ts +++ b/src/index-common.ts @@ -18,6 +18,7 @@ import recommendationsBySymbol from "./modules/recommendationsBySymbol.js"; import search from "./modules/search.js"; import trendingSymbols from "./modules/trendingSymbols.js"; import dailyGainers from "./modules/dailyGainers.js"; +import screener from "./modules/screener.js"; // other import quoteCombine from "./other/quoteCombine.js"; @@ -47,6 +48,7 @@ export default { search, trendingSymbols, dailyGainers, + screener, // other quoteCombine, diff --git a/src/modules/screener.spec.ts b/src/modules/screener.spec.ts new file mode 100644 index 00000000..f1e8ead5 --- /dev/null +++ b/src/modules/screener.spec.ts @@ -0,0 +1,26 @@ +import screener from "./screener.js"; +import testYf from "../../tests/testYf.js"; + +const yf = testYf({ screener }); + +describe("screener", () => { + // TODO - Add reset of predefined screener responses + it.each(["aggressive_small_caps"])( + "passes validation for predefined screener '%s'", + async (predefined_screener) => { + await yf.screener( + { scrIds: predefined_screener }, + { + devel: `screener-${predefined_screener}.json`, + } + ); + } + ); + if (process.env.FETCH_DEVEL !== "nocache") + it("throws on weird result", () => { + const devel = "weirdJsonResult.fake.json"; + return expect( + yf.screener({ scrIds: "aggressive_small_caps" }, { devel }) + ).rejects.toThrow(/^Unexpected result/); + }); +}); diff --git a/src/modules/screener.ts b/src/modules/screener.ts new file mode 100644 index 00000000..7e958a57 --- /dev/null +++ b/src/modules/screener.ts @@ -0,0 +1,227 @@ +import type { + ModuleOptions, + ModuleOptionsWithValidateTrue, + ModuleOptionsWithValidateFalse, + ModuleThis, +} from "../lib/moduleCommon.js"; + +export interface ScreenerResult { + id: string; + title: string; + description: string; + canonicalName: string; + criteriaMeta: ScreenerCriteriaMeta; + rawCriteria: string; + start: number; + count: number; + total: number; + quotes: ScreenerQuote[]; + useRecords: boolean; + predefinedScr: boolean; + versionId: number; + creationDate: number; + lastUpdated: number; + isPremium: boolean; + iconUrl: string; +} + +export interface ScreenerCriteriaMeta { + size: number; + offset: number; + sortField: string; + sortType: string; + quoteType: string; + criteria: ScreenerCriterum[]; + topOperator: string; +} + +export interface ScreenerCriterum { + field: string; + operators: string[]; + values: number[]; + labelsSelected: number[]; + dependentValues: any[]; +} + +export interface ScreenerQuote { + language: string; + region: string; + quoteType: string; + typeDisp: string; + quoteSourceName: string; + triggerable: boolean; + customPriceAlertConfidence: string; + lastCloseTevEbitLtm?: number; + lastClosePriceToNNWCPerShare?: number; + firstTradeDateMilliseconds: number; + priceHint: number; + postMarketChangePercent?: number; + postMarketTime?: number; + postMarketPrice?: number; + postMarketChange?: number; + regularMarketChange: number; + regularMarketTime: number; + regularMarketPrice: number; + regularMarketDayHigh?: number; + regularMarketDayRange?: string; + currency: string; + regularMarketDayLow?: number; + regularMarketVolume?: number; + regularMarketPreviousClose: number; + bid?: number; + ask?: number; + bidSize?: number; + askSize?: number; + market: string; + messageBoardId: string; + fullExchangeName: string; + longName: string; + financialCurrency?: string; + regularMarketOpen?: number; + averageDailyVolume3Month: number; + averageDailyVolume10Day: number; + fiftyTwoWeekLowChange: number; + fiftyTwoWeekLowChangePercent: number; + fiftyTwoWeekRange: string; + fiftyTwoWeekHighChange: number; + fiftyTwoWeekHighChangePercent: number; + fiftyTwoWeekChangePercent: number; + earningsTimestamp?: number; + earningsTimestampStart?: number; + earningsTimestampEnd?: number; + trailingAnnualDividendRate?: number; + trailingAnnualDividendYield?: number; + marketState: string; + epsTrailingTwelveMonths?: number; + epsForward?: number; + epsCurrentYear?: number; + priceEpsCurrentYear?: number; + sharesOutstanding?: number; + bookValue?: number; + fiftyDayAverage: number; + fiftyDayAverageChange: number; + fiftyDayAverageChangePercent: number; + twoHundredDayAverage: number; + twoHundredDayAverageChange: number; + twoHundredDayAverageChangePercent: number; + marketCap?: number; + forwardPE?: number; + priceToBook?: number; + sourceInterval: number; + exchangeDataDelayedBy: number; + exchangeTimezoneName: string; + exchangeTimezoneShortName: string; + gmtOffSetMilliseconds: number; + esgPopulated: boolean; + tradeable: boolean; + cryptoTradeable: boolean; + exchange: string; + fiftyTwoWeekLow: number; + fiftyTwoWeekHigh: number; + shortName: string; + averageAnalystRating?: string; + regularMarketChangePercent: number; + symbol: string; + dividendDate?: number; + displayName?: string; + trailingPE?: number; + prevName?: string; + nameChangeDate?: number; + ipoExpectedDate?: number; + dividendYield?: number; + dividendRate?: number; + yieldTTM?: number; + peTTM?: number; + annualReturnNavY3?: number; + annualReturnNavY5?: number; + ytdReturn?: number; + trailingThreeMonthReturns?: number; + netAssets?: number; + netExpenseRatio?: number; +} + +export type PredefinedScreenerModules = + | "aggressive_small_caps" + | "conservative_foreign_funds" + | "day_gainers" + | "day_losers" + | "growth_technology_stocks" + | "high_yield_bond" + | "most_actives" + | "most_shorted_stocks" + | "portfolio_anchors" + | "small_cap_gainers" + | "solid_large_growth_funds" + | "solid_midcap_growth_funds" + | "top_mutual_funds" + | "undervalued_growth_stocks" + | "undervalued_large_caps"; + +const queryOptionsDefaults = { + lang: "en-US", + region: "US", + scrIds: "day_gainers", + count: 5, +}; + +export interface ScreenerOptions { + lang?: string; + region?: string; + scrIds: PredefinedScreenerModules; + count?: number; +} + +export default function screener( + this: ModuleThis, + queryOptionsOverrides?: ScreenerOptions, + moduleOptions?: ModuleOptionsWithValidateTrue +): Promise; + +export default function screener( + this: ModuleThis, + queryOptionsOverrides?: ScreenerOptions, + moduleOptions?: ModuleOptionsWithValidateFalse +): Promise; + +export default function screener( + this: ModuleThis, + queryOptionsOverrides?: ScreenerOptions, + moduleOptions?: ModuleOptions +): Promise { + return this._moduleExec({ + moduleName: "screener", + query: { + url: "https://${YF_QUERY_HOST}/v1/finance/screener/predefined/saved", + schemaKey: "#/definitions/ScreenerOptions", + defaults: queryOptionsDefaults, + overrides: queryOptionsOverrides, + needsCrumb: true, + }, + result: { + schemaKey: "#/definitions/ScreenerResult", + transformWith(result: any) { + // console.log(result); + if (!result.finance) + throw new Error("Unexpected result: " + JSON.stringify(result)); + return result.finance.result[0]; + }, + }, + moduleOptions, + }); +} + +// aggressive_small_caps +// conservative_foreign_funds +// day_gainers +// day_losers +// growth_technology_stocks +// high_yield_bond +// most_actives +// most_shorted_stocks +// portfolio_anchors +// small_cap_gainers +// solid_large_growth_funds +// solid_midcap_growth_funds +// top_mutual_funds +// undervalued_growth_stocks +// undervalued_large_caps diff --git a/tests/http/screener-aggressive_small_caps.json b/tests/http/screener-aggressive_small_caps.json new file mode 100644 index 00000000..758ada7f --- /dev/null +++ b/tests/http/screener-aggressive_small_caps.json @@ -0,0 +1,548 @@ +{ + "request": { + "url": "https://query2.finance.yahoo.com/v1/finance/screener/predefined/saved?lang=en-US®ion=US&scrIds=aggressive_small_caps&count=5" + }, + "response": { + "ok": true, + "status": 200, + "statusText": "OK", + "headers": { + "content-type": [ + "application/json" + ], + "cache-control": [ + "public, max-age=1, stale-while-revalidate=9" + ], + "vary": [ + "Origin,Accept-Encoding" + ], + "y-rid": [ + "ep0j77pg6s90i" + ], + "x-yahoo-request-id": [ + "ep0j77pg6s90i" + ], + "x-request-id": [ + "b66a454d-5585-4cf6-bb0f-62aa6c1726d9" + ], + "content-encoding": [ + "gzip" + ], + "x-envoy-upstream-service-time": [ + "29" + ], + "date": [ + "Wed, 07 Apr 2021 21:28:50 GMT" + ], + "server": [ + "ATS" + ], + "x-envoy-decorator-operation": [ + "finance-quote-api--mtls-production-bf1.finance-k8s.svc.yahoo.local:4080/*" + ], + "age": [ + "4" + ], + "strict-transport-security": [ + "max-age=15552000" + ], + "referrer-policy": [ + "no-referrer-when-downgrade" + ], + "x-frame-options": [ + "SAMEORIGIN" + ], + "transfer-encoding": [ + "chunked" + ], + "connection": [ + "close" + ], + "expect-ct": [ + "max-age=31536000, report-uri=\"http://csp.yahoo.com/beacon/csp?src=yahoocom-expect-ct-report-only\"" + ], + "x-xss-protection": [ + "1; mode=block" + ], + "x-content-type-options": [ + "nosniff" + ] + }, + "bodyJson": { + "finance": { + "result": [ + { + "id": "af57f75b-eb22-4565-a604-5eb8744dd35c", + "title": "Aggresive small cap stocks", + "description": "Small cap stocks with high earnings growth rates", + "canonicalName": "AGGRESSIVE_SMALL_CAPS", + "criteriaMeta": { + "size": 5, + "offset": 0, + "sortField": "eodvolume", + "sortType": "DESC", + "quoteType": "EQUITY", + "criteria": [ + { + "field": "epsgrowth.lasttwelvemonths", + "operators": [ + "GT" + ], + "values": [ + 25.0 + ], + "labelsSelected": [], + "dependentValues": [] + }, + { + "field": "intradaymarketcap", + "operators": [ + "EQ" + ], + "values": [], + "labelsSelected": [ + 0 + ], + "dependentValues": [] + }, + { + "field": "exchange", + "operators": [ + "EQ" + ], + "values": [], + "labelsSelected": [ + 0, + 1 + ], + "dependentValues": [] + } + ], + "topOperator": "AND" + }, + "rawCriteria": "{\"offset\":0,\"size\":5,\"sortField\":\"eodvolume\",\"sortType\":\"desc\",\"quoteType\":\"equity\",\"query\":{\"operator\":\"and\",\"operands\":[{\"operator\":\"gt\",\"operands\":[\"epsgrowth.lasttwelvemonths\",25.0]},{\"operator\":\"lt\",\"operands\":[\"intradaymarketcap\",2000000000]},{\"operator\":\"or\",\"operands\":[{\"operator\":\"eq\",\"operands\":[\"exchange\",\"NMS\"]},{\"operator\":\"eq\",\"operands\":[\"exchange\",\"NYQ\"]}]}]}}", + "start": 0, + "count": 5, + "total": 445, + "quotes": [ + { + "language": "en-US", + "region": "US", + "quoteType": "EQUITY", + "typeDisp": "Equity", + "quoteSourceName": "Nasdaq Real Time Price", + "triggerable": true, + "customPriceAlertConfidence": "HIGH", + "lastCloseTevEbitLtm": 1.042158, + "lastClosePriceToNNWCPerShare": 0.3776648783213656, + "currency": "USD", + "postMarketChangePercent": 0.0, + "postMarketTime": 1695851846, + "postMarketPrice": 4.47, + "postMarketChange": 0.0, + "regularMarketChange": -0.04000044, + "regularMarketTime": 1695844800, + "regularMarketPrice": 4.47, + "regularMarketDayHigh": 4.64, + "regularMarketDayRange": "4.405 - 4.64", + "regularMarketDayLow": 4.405, + "regularMarketVolume": 521047, + "regularMarketPreviousClose": 4.51, + "bid": 4.47, + "ask": 4.48, + "bidSize": 8, + "askSize": 11, + "market": "us_market", + "messageBoardId": "finmb_127912549", + "fullExchangeName": "NasdaqGS", + "longName": "ContextLogic Inc.", + "financialCurrency": "USD", + "regularMarketOpen": 4.55, + "averageDailyVolume3Month": 896411, + "averageDailyVolume10Day": 705300, + "fiftyTwoWeekLowChange": 0.37999964, + "fiftyTwoWeekLowChangePercent": 0.09290944, + "fiftyTwoWeekRange": "4.09 - 32.1", + "fiftyTwoWeekHighChange": -27.63, + "fiftyTwoWeekHighChangePercent": -0.8607477, + "fiftyTwoWeekChangePercent": -84.17544, + "regularMarketChangePercent": -0.88692766, + "exchange": "NMS", + "shortName": "ContextLogic Inc.", + "fiftyTwoWeekLow": 4.09, + "fiftyTwoWeekHigh": 32.1, + "averageAnalystRating": "4.0 - Underperform", + "firstTradeDateMilliseconds": 1608129000000, + "priceHint": 4, + "earningsTimestamp": 1691096400, + "earningsTimestampStart": 1699354740, + "earningsTimestampEnd": 1699876800, + "trailingAnnualDividendRate": 0.0, + "trailingAnnualDividendYield": 0.0, + "marketState": "POST", + "epsTrailingTwelveMonths": -18.79, + "epsForward": -9.17, + "epsCurrentYear": -13.02, + "priceEpsCurrentYear": -0.34331796, + "sharesOutstanding": 23782000, + "bookValue": 14.171, + "fiftyDayAverage": 6.0326, + "fiftyDayAverageChange": -1.5626001, + "fiftyDayAverageChangePercent": -0.259026, + "twoHundredDayAverage": 10.923325, + "twoHundredDayAverageChange": -6.453325, + "twoHundredDayAverageChangePercent": -0.59078395, + "marketCap": 106305536, + "forwardPE": -0.4874591, + "priceToBook": 0.31543294, + "sourceInterval": 15, + "exchangeDataDelayedBy": 0, + "exchangeTimezoneName": "America/New_York", + "exchangeTimezoneShortName": "EDT", + "gmtOffSetMilliseconds": -14400000, + "ipoExpectedDate": "2020-12-16", + "esgPopulated": false, + "tradeable": false, + "cryptoTradeable": false, + "displayName": "ContextLogic", + "symbol": "WISH" + }, + { + "language": "en-US", + "region": "US", + "quoteType": "EQUITY", + "typeDisp": "Equity", + "quoteSourceName": "Nasdaq Real Time Price", + "triggerable": false, + "customPriceAlertConfidence": "LOW", + "lastCloseTevEbitLtm": -0.651838, + "lastClosePriceToNNWCPerShare": -0.9122055581669222, + "currency": "USD", + "postMarketChangePercent": 2.27273, + "postMarketTime": 1695846295, + "postMarketPrice": 2.7, + "postMarketChange": 0.0599999, + "regularMarketChange": -0.049999952, + "regularMarketTime": 1695844802, + "regularMarketPrice": 2.64, + "regularMarketDayHigh": 2.74, + "regularMarketDayRange": "2.6 - 2.74", + "regularMarketDayLow": 2.6, + "regularMarketVolume": 23728, + "regularMarketPreviousClose": 2.69, + "bid": 2.6, + "ask": 2.8, + "bidSize": 11, + "askSize": 8, + "market": "us_market", + "messageBoardId": "finmb_244091772", + "fullExchangeName": "NYSE", + "longName": "BIT Mining Limited", + "financialCurrency": "USD", + "regularMarketOpen": 2.73, + "averageDailyVolume3Month": 161411, + "averageDailyVolume10Day": 36200, + "fiftyTwoWeekLowChange": 1.2400001, + "fiftyTwoWeekLowChangePercent": 0.8857144, + "fiftyTwoWeekRange": "1.4 - 5.49", + "fiftyTwoWeekHighChange": -2.8499997, + "fiftyTwoWeekHighChangePercent": -0.51912564, + "fiftyTwoWeekChangePercent": -10.333336, + "regularMarketChangePercent": -1.8587344, + "exchange": "NYQ", + "shortName": "BIT Mining Limited", + "fiftyTwoWeekLow": 1.4, + "fiftyTwoWeekHigh": 5.49, + "averageAnalystRating": "3.0 - Hold", + "firstTradeDateMilliseconds": 1385130600000, + "priceHint": 4, + "earningsTimestamp": 1692388800, + "earningsTimestampStart": 1700055000, + "earningsTimestampEnd": 1700487000, + "trailingAnnualDividendRate": 0.0, + "trailingAnnualDividendYield": 0.0, + "marketState": "POST", + "epsTrailingTwelveMonths": -15.94, + "epsForward": 0.01, + "epsCurrentYear": -0.01, + "priceEpsCurrentYear": -264.00003, + "sharesOutstanding": 11112300, + "bookValue": 4.283, + "fiftyDayAverage": 3.0762, + "fiftyDayAverageChange": -0.4361999, + "fiftyDayAverageChangePercent": -0.14179829, + "twoHundredDayAverage": 2.84755, + "twoHundredDayAverageChange": -0.20754981, + "twoHundredDayAverageChangePercent": -0.07288715, + "marketCap": 29336474, + "forwardPE": 264.00003, + "priceToBook": 0.6163904, + "sourceInterval": 15, + "exchangeDataDelayedBy": 0, + "exchangeTimezoneName": "America/New_York", + "exchangeTimezoneShortName": "EDT", + "gmtOffSetMilliseconds": -14400000, + "esgPopulated": false, + "tradeable": false, + "cryptoTradeable": false, + "displayName": "BIT Mining", + "symbol": "BTCM" + }, + { + "language": "en-US", + "region": "US", + "quoteType": "EQUITY", + "typeDisp": "Equity", + "quoteSourceName": "Nasdaq Real Time Price", + "triggerable": true, + "customPriceAlertConfidence": "HIGH", + "lastCloseTevEbitLtm": -9.2136, + "lastClosePriceToNNWCPerShare": -4.752000782493044, + "currency": "USD", + "postMarketChangePercent": 0.41666624, + "postMarketTime": 1695852010, + "postMarketPrice": 2.41, + "postMarketChange": 0.00999999, + "regularMarketChange": 0.0, + "regularMarketTime": 1695844800, + "regularMarketPrice": 2.4, + "regularMarketDayHigh": 2.62, + "regularMarketDayRange": "2.31 - 2.62", + "regularMarketDayLow": 2.31, + "regularMarketVolume": 34169024, + "regularMarketPreviousClose": 2.4, + "bid": 2.39, + "ask": 2.39, + "bidSize": 473, + "askSize": 394, + "market": "us_market", + "messageBoardId": "finmb_265511894", + "fullExchangeName": "NasdaqGS", + "longName": "Tilray Brands, Inc.", + "financialCurrency": "USD", + "regularMarketOpen": 2.5, + "averageDailyVolume3Month": 31731809, + "averageDailyVolume10Day": 29626600, + "fiftyTwoWeekLowChange": 0.9000001, + "fiftyTwoWeekLowChangePercent": 0.6000001, + "fiftyTwoWeekRange": "1.5 - 5.12", + "fiftyTwoWeekHighChange": -2.7199998, + "fiftyTwoWeekHighChangePercent": -0.53125, + "fiftyTwoWeekChangePercent": -20.265781, + "regularMarketChangePercent": 0.0, + "exchange": "NMS", + "shortName": "Tilray Brands, Inc.", + "fiftyTwoWeekLow": 1.5, + "fiftyTwoWeekHigh": 5.12, + "averageAnalystRating": "2.6 - Hold", + "firstTradeDateMilliseconds": 1532007000000, + "priceHint": 4, + "earningsTimestamp": 1696422600, + "earningsTimestampStart": 1696422600, + "earningsTimestampEnd": 1696422600, + "trailingAnnualDividendRate": 0.0, + "trailingAnnualDividendYield": 0.0, + "marketState": "POST", + "epsTrailingTwelveMonths": -2.35, + "epsForward": -0.15, + "epsCurrentYear": -0.22, + "priceEpsCurrentYear": -10.909091, + "sharesOutstanding": 720406016, + "bookValue": 5.049, + "fiftyDayAverage": 2.4932, + "fiftyDayAverageChange": -0.09319997, + "fiftyDayAverageChangePercent": -0.037381664, + "twoHundredDayAverage": 2.50135, + "twoHundredDayAverageChange": -0.10134983, + "twoHundredDayAverageChangePercent": -0.040518053, + "marketCap": 1728974464, + "forwardPE": -16.0, + "priceToBook": 0.47534168, + "sourceInterval": 15, + "exchangeDataDelayedBy": 0, + "exchangeTimezoneName": "America/New_York", + "exchangeTimezoneShortName": "EDT", + "gmtOffSetMilliseconds": -14400000, + "esgPopulated": false, + "tradeable": false, + "cryptoTradeable": false, + "displayName": "Tilray Brands", + "symbol": "TLRY" + }, + { + "language": "en-US", + "region": "US", + "quoteType": "EQUITY", + "typeDisp": "Equity", + "quoteSourceName": "Nasdaq Real Time Price", + "triggerable": false, + "customPriceAlertConfidence": "LOW", + "lastCloseTevEbitLtm": -0.255439, + "lastClosePriceToNNWCPerShare": 2.314560354201368, + "currency": "USD", + "postMarketChangePercent": 0.90909004, + "postMarketTime": 1695852006, + "postMarketPrice": 1.665, + "postMarketChange": 0.014999986, + "regularMarketChange": 0.02, + "regularMarketTime": 1695844801, + "regularMarketPrice": 1.65, + "regularMarketDayHigh": 1.6899, + "regularMarketDayRange": "1.57 - 1.6899", + "regularMarketDayLow": 1.57, + "regularMarketVolume": 7983465, + "regularMarketPreviousClose": 1.63, + "bid": 1.65, + "ask": 1.66, + "bidSize": 14, + "askSize": 270, + "market": "us_market", + "messageBoardId": "finmb_25116311", + "fullExchangeName": "NYSE", + "longName": "Virgin Galactic Holdings, Inc.", + "financialCurrency": "USD", + "regularMarketOpen": 1.66, + "averageDailyVolume3Month": 18658580, + "averageDailyVolume10Day": 16654370, + "fiftyTwoWeekLowChange": 0.07999992, + "fiftyTwoWeekLowChangePercent": 0.050955363, + "fiftyTwoWeekRange": "1.57 - 6.61", + "fiftyTwoWeekHighChange": -4.96, + "fiftyTwoWeekHighChangePercent": -0.7503782, + "fiftyTwoWeekChangePercent": -68.16406, + "regularMarketChangePercent": 1.22699, + "exchange": "NYQ", + "shortName": "Virgin Galactic Holdings, Inc.", + "fiftyTwoWeekLow": 1.57, + "fiftyTwoWeekHigh": 6.61, + "averageAnalystRating": "3.2 - Hold", + "firstTradeDateMilliseconds": 1506691800000, + "priceHint": 4, + "earningsTimestamp": 1690923600, + "earningsTimestampStart": 1698836340, + "earningsTimestampEnd": 1699272000, + "trailingAnnualDividendRate": 0.0, + "trailingAnnualDividendYield": 0.0, + "marketState": "POST", + "epsTrailingTwelveMonths": -2.03, + "epsForward": -1.4, + "epsCurrentYear": -1.9, + "priceEpsCurrentYear": -0.8684211, + "sharesOutstanding": 367136992, + "bookValue": 1.439, + "fiftyDayAverage": 2.8894, + "fiftyDayAverageChange": -1.2394, + "fiftyDayAverageChangePercent": -0.4289472, + "twoHundredDayAverage": 4.00465, + "twoHundredDayAverageChange": -2.35465, + "twoHundredDayAverageChangePercent": -0.58797896, + "marketCap": 605776000, + "forwardPE": -1.1785715, + "priceToBook": 1.1466296, + "sourceInterval": 15, + "exchangeDataDelayedBy": 0, + "exchangeTimezoneName": "America/New_York", + "exchangeTimezoneShortName": "EDT", + "gmtOffSetMilliseconds": -14400000, + "esgPopulated": false, + "tradeable": false, + "cryptoTradeable": false, + "displayName": "Virgin Galactic", + "symbol": "SPCE" + }, + { + "language": "en-US", + "region": "US", + "quoteType": "EQUITY", + "typeDisp": "Equity", + "quoteSourceName": "Nasdaq Real Time Price", + "triggerable": false, + "customPriceAlertConfidence": "LOW", + "lastCloseTevEbitLtm": -0.644288, + "lastClosePriceToNNWCPerShare": -0.3064363061308179, + "currency": "USD", + "postMarketChangePercent": 4.0178533, + "postMarketTime": 1695851893, + "postMarketPrice": 2.33, + "postMarketChange": 0.089999914, + "regularMarketChange": 0.14, + "regularMarketTime": 1695844802, + "regularMarketPrice": 2.24, + "regularMarketDayHigh": 2.71, + "regularMarketDayRange": "2.02 - 2.71", + "regularMarketDayLow": 2.02, + "regularMarketVolume": 1150346, + "regularMarketPreviousClose": 2.1, + "bid": 2.25, + "ask": 2.26, + "bidSize": 11, + "askSize": 29, + "market": "us_market", + "messageBoardId": "finmb_250459761", + "fullExchangeName": "NYSE", + "longName": "Wheels Up Experience Inc.", + "financialCurrency": "USD", + "regularMarketOpen": 2.08, + "averageDailyVolume3Month": 1483406, + "averageDailyVolume10Day": 985700, + "fiftyTwoWeekLowChange": 1.26, + "fiftyTwoWeekLowChangePercent": 1.2857143, + "fiftyTwoWeekRange": "0.98 - 18.4", + "fiftyTwoWeekHighChange": -16.16, + "fiftyTwoWeekHighChangePercent": -0.87826085, + "fiftyTwoWeekChangePercent": -84.210526, + "regularMarketChangePercent": 6.66667, + "exchange": "NYQ", + "shortName": "Wheels Up Experience Inc.", + "fiftyTwoWeekLow": 0.98, + "fiftyTwoWeekHigh": 18.4, + "averageAnalystRating": "2.0 - Buy", + "firstTradeDateMilliseconds": 1605709800000, + "priceHint": 4, + "earningsTimestamp": 1692049140, + "earningsTimestampStart": 1699275895, + "earningsTimestampEnd": 1699621495, + "trailingAnnualDividendRate": 0.0, + "trailingAnnualDividendYield": 0.0, + "marketState": "POST", + "epsTrailingTwelveMonths": -22.36, + "epsForward": -6.0, + "epsCurrentYear": -10.3, + "priceEpsCurrentYear": -0.21747573, + "sharesOutstanding": 166804992, + "bookValue": 0.506, + "fiftyDayAverage": 2.127, + "fiftyDayAverageChange": 0.112999916, + "fiftyDayAverageChangePercent": 0.05312643, + "twoHundredDayAverage": 5.98105, + "twoHundredDayAverageChange": -3.74105, + "twoHundredDayAverageChangePercent": -0.6254838, + "marketCap": 373643168, + "forwardPE": -0.37333333, + "priceToBook": 4.4268775, + "sourceInterval": 15, + "exchangeDataDelayedBy": 0, + "exchangeTimezoneName": "America/New_York", + "exchangeTimezoneShortName": "EDT", + "gmtOffSetMilliseconds": -14400000, + "esgPopulated": false, + "tradeable": false, + "cryptoTradeable": false, + "displayName": "Wheels Up Experience", + "symbol": "UP" + } + ], + "useRecords": false, + "predefinedScr": true, + "versionId": 0, + "creationDate": 1473802201682, + "lastUpdated": 1473802201682, + "isPremium": false, + "iconUrl": "https://s.yimg.com/cv/apiv2/fin/img/assets/predefined_screeners/analytics.png" + } + ], + "error": null + } + } + } +} \ No newline at end of file