Skip to content

Latest commit

 

History

History
181 lines (160 loc) · 5.19 KB

chart.md

File metadata and controls

181 lines (160 loc) · 5.19 KB

_chart

WARNING: the chart module is still in development; as such, it is currently prefixed with an underscore (_), i.e. as _chart, to reflect that the API is not final and may still change. Until this module is available as chart (without the underscore), you should expect that package upgrades MAY break.

Usage:

import yahooFinance from 'yahoo-finance2';

const query = 'AAPL';
const queryOptions = { period1: '2021-05-08', /* ... */ };
const result = await yahooFinance._chart(query, queryOptions);

{
  meta: {
    currency: 'USD',
    symbol: 'AAPL',
    exchangeName: 'NMS',
    instrumentType: 'EQUITY',
    firstTradeDate: new Date("1980-12-12T14:30:00.000Z"),
    regularMarketTime: new Date("2021-11-19T21:00:02.000Z"),
    gmtoffset: -18000,
    timezone: 'EST',
    exchangeTimezoneName: 'America/New_York',
    regularMarketPrice: 160.55,
    chartPreviousClose: 124.808,
    priceHint: 2,
    currentTradingPeriod: {
      pre: {
        timezone: 'EST',
        start: new Date("2021-11-19T09:00:00.000Z"),
        end: new Date("2021-11-19T14:30:00.000Z"),
        gmtoffset: -18000
      },
      regular: {
        timezone: 'EST',
        start: new Date("2021-11-19T14:30:00.000Z"),
        end: new Date("2021-11-19T21:00:00.000Z"),
        gmtoffset: -18000
      },
      post: {
        timezone: 'EST',
        start: new Date("2021-11-19T21:00:00.000Z"),
        end: new Date("2021-11-20T01:00:00.000Z"),
        gmtoffset: -18000
      }
    },
    dataGranularity: '1d',
    range: '',
    validRanges: [
      '1d',  '5d',  '1mo',
      '3mo', '6mo', '1y',
      '2y',  '5y',  '10y',
      'ytd', 'max'
    ]
  },
  quotes: [
    {
      date: new Date("2020-05-08T13:30:00.000Z"),
      high: 77.5875015258789,
      volume: 133838400,
      open: 76.41000366210938,
      low: 76.07250213623047,
      close: 77.53250122070312,
      adjclose: 76.78629302978516 // if requested
    },
    // ...
  ]
  events: {
    dividends: [
      { amount: 0.205, date: new Date("2020-05-08T13:30:00.000Z") },
      // ...
    ],
    splits: [
      {
        date: new Date("2020-08-31T13:30:00.000Z"),
        numerator: 4,
        denominator: 1,
        splitRatio: '4:1'
      },
      // ...
    ]
  }
}

The above includes a number of transforms from the original object format received from Yahoo, which makes the data a bit easier to work with. It uses the query default of { return: "array" }. However, certain charting libraries might actually prefer the original format, which you can get with { return: "object" }, as follows:

const query = 'AAPL';
const queryOptions = { period1: '2021-05-08', return: "object", /* ... */ };
const result = await yahooFinance._chart(query, queryOptions);

{
  meta: { /* same format as previous example */ },
  timestamp: [
    // These are the object keys used below.
    1598880600,
    1598967000,
    1599053400,
    // ...
  ],
  events: {
    dividends: {
      '1604673000': { amount: 0.205, date: new Date("2020-11-06T14:30:00.000Z") },
      '1612535400': { amount: 0.205, date: new Date("2021-02-05T14:30:00.000Z") },
      '1620394200': { amount: 0.22, date: new Date("2021-05-07T13:30:00.000Z") },
      '1628256600': { amount: 0.22, date: new Date("2021-08-06T13:30:00.000Z") },
      '1636119000': { amount: 0.22, date: new Date("2021-11-05T13:30:00.000Z") }
    },
    splits: {
      '1598880600': {
        date: new Date("2020-08-31T13:30:00.000Z"),
        numerator: 4,
        denominator: 1,
        splitRatio: '4:1'
      }
    }
  },
  indicators: {
    quote: [
      {
        high: [ 131,  134.8000030517578, 137.97999572753906, /* ... */ ],
        volume: [ 225702700, 151948100, 200119000, /* ... */ ],
        open: [ 127.58000183105469, 132.75999450683594, 137.58999633789062, /* ... */ ],
        low: [ 126, 130.52999877929688, 127, /* ... */ ],
        close: [ 129.0399932861328, 134.17999267578125, 131.39999389648438, /* ... */ ]
      }
    ],
    adjclose: [
      {
        adjclose: [ 128.0284881591797, 133.12820434570312,  130.3699951171875, /* ... */ ],
      }
    ]
  }
}

API

await yahooFinance._chart(query, queryOptions, moduleOptions);

Query term

Yahoo Symbol, e.g. "AAPL", "TSLA", etc.

Query Options

Name Type Default Description
period1 Date* required Starting period
period2 Date* (today) Ending period
useYfid boolean true
interval string "1d" Interval period (see below)
includePrePost boolean true
events string "div|split|earn" Event types to return, "|"-separated
lang string "en-US"
return string "array" "array" or "object", see examples above. Not sent to Yahoo.

Dates* can be:

  • A Date instance, e.g. new Date(something)
  • A string that can be parsed by Date(), e.g. "2020-01-01".
  • A unix timestamp, e.g. 1636119000000

Interval period can be one of 1m, 2m, 5m, 15m, 30m, 60m, 90m, 1h, 1d, 5d, 1wk, 1mo, 3mo.

Module Options

See Common Options.