dragonTiger · Dragon-Tiger List
sdk.dragonTiger exposes A-share Dragon-Tiger (龙虎榜) data: daily listing details, per-stock aggregate stats, institutional buying/selling, brokerage branch rankings, and the seat-level breakdown of a single stock on a given day.
import { StockSDK } from 'stock-sdk'
const sdk = new StockSDK()
const detail = await sdk.dragonTiger.detail({ startDate: '20240101', endDate: '20240131' })Methods
| Method | Description |
|---|---|
dragonTiger.detail(options) | Daily Dragon-Tiger listings over a date range |
dragonTiger.stockStats(period?) | Per-stock aggregate stats (listing count, cumulative buy/sell amount, ...) |
dragonTiger.institution(options) | Institutional buy/sell stats over a date range |
dragonTiger.branchRank(period?) | Brokerage branch (seat) ranking |
dragonTiger.seatDetail(symbol, date) | Seat-level breakdown for one stock on one day (buy + sell side) |
All amount fields are in CNY. Items with a date follow the unified data contract and carry
date/timestamp(number | null) /tz. Exact fields follow the implementation.
Dragon-Tiger is post-close data — today's rows arrive in the evening
The exchanges compile the Dragon-Tiger list after the close and publish it in the evening. Querying today's date during trading hours (before the 15:00 close) will never return today's rows — that is the source's normal timing, not a call failure.
For example, querying { startDate: '20260730', endDate: '20260803' } intraday on Monday returns only 07-30 and 07-31; 08-03 shows up once it is published that evening.
Schedule jobs to run after the close that evening (the next day is safer still), or check the market state first with sdk.calendar.marketStatus().
dragonTiger.detail
Fetch daily Dragon-Tiger listings over a date range. Each record represents one stock's listing on one day.
Example
const details = await sdk.dragonTiger.detail({
startDate: '20240101', // YYYYMMDD
endDate: '20240131',
})
console.log(`${details.length} listings in January`)
// Sort by net buy amount, take top 10
const topNet = [...details]
.sort((a, b) => (b.netBuyAmount ?? 0) - (a.netBuyAmount ?? 0))
.slice(0, 10)
for (const d of topNet) {
console.log(`${d.date} ${d.name}(${d.code}) net buy ${d.netBuyAmount}`)
}Returns
DragonTigerDetailItem[]. Representative fields:
| Field | Description |
|---|---|
code / name | Stock code / name |
date | Listing date |
close | Closing price for the day (CNY, number | null) |
changePercent | Daily change as a percentage (e.g. 5.2) |
netBuyAmount | Net buy amount on the list (CNY) |
buyAmount / sellAmount | Buy / sell amount on the list (CNY) |
dealAmount | Turnover on the list (CNY) |
totalAmount | Stock's total market turnover that day (CNY) |
netBuyRatio | Net buy amount as a share of total turnover (percentage) |
turnoverRate | Turnover rate (percentage) |
reason | Reason for listing |
afterChange1d / afterChange2d / afterChange5d / afterChange10d | Change N days after listing (percentage) |
Exact fields follow the implementation.
dragonTiger.stockStats
Per-stock aggregate stats, surfacing the most active names over a period.
Example
const stats = await sdk.dragonTiger.stockStats('3month')
const hot = stats
.filter(s => (s.count ?? 0) >= 5)
.sort((a, b) => (b.totalNetAmount ?? 0) - (a.totalNetAmount ?? 0))
console.log(`${hot.length} stocks listed 5+ times in the last 3 months`)Parameters
period?: '1month' | '3month' | '6month' | '1year', defaults to the last month per implementation.
Returns
DragonTigerStockStatItem[]. Representative fields:
| Field | Description |
|---|---|
code / name | Stock code / name |
latestDate | Most recent listing date |
close / changePercent | Latest close (CNY) / change (percentage) |
count | Number of listings in the period |
totalBuyAmount / totalSellAmount | Cumulative buy / sell amount (CNY) |
totalNetAmount | Cumulative net amount (CNY) |
totalDealAmount | Cumulative turnover (CNY) |
buyOrgCount / sellOrgCount | Cumulative buy- / sell-side institution counts |
Exact fields follow the implementation.
dragonTiger.institution
Institutional seat buy/sell stats over a date range.
Example
const inst = await sdk.dragonTiger.institution({
startDate: '20240101',
endDate: '20240131',
})
const netBuy = inst.filter(i => (i.orgNetAmount ?? 0) > 0)
console.log(`${netBuy.length} records with net institutional buying`)Returns
DragonTigerInstitutionItem[]. Representative fields:
| Field | Description |
|---|---|
code / name | Stock code / name |
date | Listing date |
close / changePercent | Close (CNY) / change (percentage) |
buyOrgCount / sellOrgCount | Buy- / sell-side institution counts |
orgBuyAmount / orgSellAmount | Institutional buy / sell amount (CNY) |
orgNetAmount | Institutional net buy amount (CNY) |
Exact fields follow the implementation.
dragonTiger.branchRank
Brokerage branch (seat) ranking, ranked by cumulative buy/sell amount over the period.
Example
const branches = await sdk.dragonTiger.branchRank('1month')
const topBuy = [...branches]
.sort((a, b) => (b.totalBuyAmount ?? 0) - (a.totalBuyAmount ?? 0))
.slice(0, 10)
for (const b of topBuy) {
console.log(`${b.name} cumulative buy ${b.totalBuyAmount}`)
}Parameters
period?: '1month' | '3month' | '6month' | '1year'.
Returns
DragonTigerBranchItem[]. Representative fields:
| Field | Description |
|---|---|
code | Branch code |
name | Branch name |
totalBuyAmount / totalSellAmount | Cumulative buy / sell amount (CNY) |
buyCount / sellCount | Buy / sell listing counts |
totalCount | Total listing count |
Exact fields follow the implementation.
dragonTiger.seatDetail
Seat-level breakdown of one stock's listing on a given day. The buy side and sell side are returned together, distinguished by side.
Example
const seats = await sdk.dragonTiger.seatDetail('600519', '20240115')
const buySide = seats.filter(s => s.side === 'buy')
const sellSide = seats.filter(s => s.side === 'sell')
console.log(`${buySide.length} buy-side seats`)
buySide.forEach(s => console.log(` ${s.branchName} bought ${s.buyAmount}`))
console.log(`${sellSide.length} sell-side seats`)
sellSide.forEach(s => console.log(` ${s.branchName} sold ${s.sellAmount}`))Parameters
| Parameter | Type | Description |
|---|---|---|
symbol | string | Stock symbol, e.g. '600519' / 'sh600519' |
date | string | Listing date, e.g. '20240115' |
Returns
DragonTigerSeatItem[]. Representative fields:
| Field | Description |
|---|---|
rank | Seat rank |
branchName | Brokerage branch / seat name |
buyAmount / buyAmountRatio | Buy amount (CNY) / share (percentage) |
sellAmount / sellAmountRatio | Sell amount (CNY) / share (percentage) |
netAmount | Net amount (CNY) |
side | 'buy' (buy side) / 'sell' (sell side) |
Exact fields follow the implementation.