新增FG609 7月前20会员逐日数据分析脚本和报告
This commit is contained in:
@@ -0,0 +1,106 @@
|
||||
# 玻璃 FG609 前20会员持仓排名 — 7月逐日
|
||||
|
||||
数据来源: CZCE 郑商所 (akshare.get_rank_table_czce)
|
||||
合约: FG609(2026年9月,当前主力)
|
||||
周期: 2026-07-01 ~ 2026-07-23 (17个交易日)
|
||||
|
||||
---
|
||||
|
||||
## 一、逐日总览
|
||||
|
||||
| 日期 | 总成交量 | 总多单 | 总空单 | 净头寸 | VolTop1 | Top1占比 |
|
||||
|---|---|---|---|---|---|---|
|
||||
| 07/01 | 1,930,182 | 949,206 | 1,324,156 | -374,950 | 东证期货 | 15.5% |
|
||||
| 07/02 | 1,477,486 | 937,099 | 1,326,235 | -389,136 | 东证期货 | 16.0% |
|
||||
| 07/03 | 1,618,011 | 950,716 | 1,279,121 | -328,405 | 东证期货 | 16.8% |
|
||||
| 07/06 | 1,647,953 | 916,094 | 1,297,613 | -381,519 | 东证期货 | 16.3% |
|
||||
| 07/07 | 1,730,408 | 1,021,142 | 1,456,665 | -435,523 | 东证期货 | 15.2% |
|
||||
| 07/08 | 1,663,671 | 973,767 | 1,330,893 | -357,126 | 东证期货 | 15.9% |
|
||||
| 07/09 | 1,430,861 | 979,649 | 1,370,384 | -390,735 | 东证期货 | 15.5% |
|
||||
| 07/10 | 1,800,991 | 934,281 | 1,297,305 | -363,024 | 东证期货 | 16.7% |
|
||||
| 07/13 | 1,638,225 | 975,465 | 1,411,878 | -436,413 | 东证期货 | 15.4% |
|
||||
| 07/14 | 1,458,782 | 981,524 | 1,422,912 | -441,388 | 东证期货 | 15.5% |
|
||||
| 07/15 | 1,485,987 | 976,429 | 1,416,227 | -439,798 | 东证期货 | 17.1% |
|
||||
| **07/16** | **1,981,774** | 1,095,204 | 1,537,419 | **-442,215** | 东证期货 | 15.3% |
|
||||
| **07/17** | **2,960,457** | 1,094,199 | 1,519,906 | -425,707 | 东证期货 | 14.6% |
|
||||
| 07/20 | 2,300,832 | 1,073,446 | 1,502,020 | -428,574 | **国泰君安** | 15.4% |
|
||||
| 07/21 | 2,026,738 | 1,056,659 | 1,439,583 | -382,924 | **国泰君安** | 16.2% |
|
||||
| 07/22 | 2,096,680 | 997,951 | 1,340,675 | -342,724 | **国泰君安** | 18.2% |
|
||||
| 07/23 | 2,068,815 | 977,891 | 1,324,813 | -346,922 | **国泰君安** | 15.4% |
|
||||
|
||||
## 二、重点会员逐日成交量
|
||||
|
||||
| 日期 | 国泰君安 | 东证期货 | 中信期货 | 永安期货 | 华泰期货 | 方正中期 |
|
||||
|---|---|---|---|---|---|---|
|
||||
| 07/01 | 233,783 | 299,440 | 259,117 | 45,015 | 147,842 | --- |
|
||||
| 07/02 | 199,925(-33k) | 236,489(-63k) | 216,100(-43k) | --- | 142,175 | 27,160 |
|
||||
| 07/03 | 188,489(-11k) | 271,786(+35k) | 217,696 | --- | 141,025 | 36,401 |
|
||||
| 07/06 | 180,733 | 269,269 | 214,732 | --- | 122,190 | 32,959 |
|
||||
| 07/07 | 217,992(+37k) | 263,822 | 223,750 | --- | 103,020 | 36,855 |
|
||||
| 07/08 | 201,416 | 263,706 | 221,831 | 30,318 | 121,393 | 33,206 |
|
||||
| 07/09 | 168,335(-33k) | 221,584(-42k) | 189,717(-32k) | --- | 86,397(-35k) | 23,539 |
|
||||
| 07/10 | 188,944 | 301,215(+80k) | 225,996(+36k) | 33,801 | 145,975(+60k) | 40,865(+17k) |
|
||||
| 07/13 | 237,251(+48k) | 252,675(-49k) | 211,025 | 30,497 | 104,144(-42k) | 29,512 |
|
||||
| 07/14 | 168,782(-68k) | 226,504(-26k) | 208,536 | --- | 86,121(-18k) | 24,781 |
|
||||
| 07/15 | 194,201(+25k) | 254,317(+28k) | 208,665 | --- | 87,238 | 30,096 |
|
||||
| **07/16** | 273,551(+80k) | 303,239(+49k) | 256,628(+48k) | 40,758 | 122,426(+35k) | 36,676 |
|
||||
| **07/17** | 367,306(+94k) | **432,210**(+129k) | 368,707(+112k) | --- | 187,645(+65k) | 69,986(+33k) |
|
||||
| 07/20 | 354,441 | 293,859(-138k) | 297,056(-72k) | --- | 155,125 | 40,688 |
|
||||
| 07/21 | 328,322(-26k) | 308,655(+15k) | 263,508(-34k) | 27,796 | 113,330(-42k) | 40,499 |
|
||||
| 07/22 | 381,347(+53k) | 294,420 | 300,350(+37k) | 36,730 | 123,276 | 41,792 |
|
||||
| 07/23 | 318,971(-62k) | 300,477 | 269,227(-31k) | --- | 120,984 | 36,205 |
|
||||
|
||||
## 三、重点会员逐日净头寸(多 - 空)
|
||||
|
||||
| 日期 | 国泰君安 | 东证期货 | 中信期货 | 永安期货 | 华泰期货 | 方正中期 |
|
||||
|---|---|---|---|---|---|---|
|
||||
| 07/01 | -92,666 | -95,915 | -109,038 | +6,574 | -68,428 | +60,825 |
|
||||
| 07/02 | -109,331 | -90,770 | -109,832 | -35,371 | -53,548 | +6,179 |
|
||||
| 07/03 | -102,242 | -87,013 | -89,675 | -30,395 | -40,001 | +6,503 |
|
||||
| 07/06 | -115,523 | -92,972 | -107,866 | -27,659 | -70,262 | +7,302 |
|
||||
| 07/07 | -122,252 | -99,256 | -117,756 | -25,952 | -18,146 | +7,059 |
|
||||
| 07/08 | -101,630 | -97,468 | -112,048 | +6,088 | -46,264 | +5,480 |
|
||||
| 07/09 | -116,054 | -104,643 | -111,114 | -32,427 | -71,119 | +9,083 |
|
||||
| 07/10 | -100,286 | -100,733 | -103,834 | +5,922 | -45,536 | +8,017 |
|
||||
| 07/13 | -119,242 | -108,172 | -125,378 | +10,977 | -17,849 | +10,657 |
|
||||
| 07/14 | -130,405 | -100,958 | -121,409 | -17,893 | -18,680 | +10,158 |
|
||||
| 07/15 | -126,199 | -98,211 | -127,246 | -17,504 | -71,785 | +8,840 |
|
||||
| **07/16** | **-126,934** | **-117,147** | **-126,616** | **+6,741** | -24,580 | +7,371 |
|
||||
| **07/17** | -116,531 | -105,050 | **-144,715** | -15,082 | -23,576 | +8,735 |
|
||||
| 07/20 | -86,493 | **-115,884** | **-141,896** | -20,301 | **-105,208** | +6,407 |
|
||||
| 07/21 | **-64,475** | **-124,442** | -102,917 | +5,466 | -32,130 | +3,932 |
|
||||
| 07/22 | **-48,705** | -99,658 | -102,830 | +308 | -48,643 | +3,158 |
|
||||
| 07/23 | **-45,296** | **-113,002** | -106,827 | +1,022 | -27,976 | +2,858 |
|
||||
|
||||
## 四、关键发现
|
||||
|
||||
### 1. 暴跌前后(7/16-7/17)的会员行为
|
||||
|
||||
**7/16(跌-2.11%,放量)**
|
||||
- 总成交量从148万→198万,放大34%
|
||||
- 东证、国泰君安、中信三家增量最猛:国泰君安+80k,东证+49k,中信+48k
|
||||
- 多空前10均有明显增仓,但净空头仍维持-44万
|
||||
|
||||
**7/17(跌-4.05%,放量暴跌)**
|
||||
- 总成交量飙至**296万**(月内最高,+50%)
|
||||
- 东证期货成交量**43.2万**(月内最高个股)
|
||||
- 中信期货净空飙至-144,715(月内最空)
|
||||
- 东证净空-105k,国泰君安净空-117k(但比16日略收窄)
|
||||
|
||||
### 2. 头把交椅易主
|
||||
|
||||
- **1-16日**:东证期货稳坐成交量第一(日均26万手)
|
||||
- **7/20起**:**国泰君安**反超东证,成交量连续四天第一(最高38万手)
|
||||
- 同时国泰君安**净空头寸急剧收窄**:从-127k(7/16)缩至-45k(7/23),在减空单
|
||||
|
||||
### 3. 全月净空格局
|
||||
|
||||
- 中信期货持续全月最空,净空维持在-10万~-14万
|
||||
- 东证期货净空稳定在-9万~-12万
|
||||
- 国泰君安7月下旬明显减空
|
||||
- 方正中期是上榜中**唯一持续净多**的会员(+3k~+10k)
|
||||
- 整个品种全月净空在-33万~-44万之间
|
||||
|
||||
### 4. 外资参与
|
||||
|
||||
- **7/23 高盛期货**空单183,405手排名空头第二,但此前的日子未在前20中出现过
|
||||
@@ -0,0 +1,124 @@
|
||||
"""拉取玻璃FG609 7月份所有交易日的前20会员持仓排名数据"""
|
||||
import akshare as ak
|
||||
import pandas as pd
|
||||
import time
|
||||
from datetime import date, timedelta
|
||||
|
||||
def to_int(x):
|
||||
if isinstance(x, str):
|
||||
return int(x.replace(",", ""))
|
||||
return int(x)
|
||||
|
||||
def get_rank_czce_safe(d):
|
||||
"""安全调用,失败重试"""
|
||||
try:
|
||||
return ak.get_rank_table_czce(date=d)
|
||||
except Exception as e:
|
||||
print(f" [{d}] 失败: {e}")
|
||||
return None
|
||||
|
||||
# 7月交易日(去掉周末)
|
||||
trading_days = []
|
||||
start = date(2026, 7, 1)
|
||||
end = date(2026, 7, 23)
|
||||
d = start
|
||||
while d <= end:
|
||||
if d.weekday() < 5: # Mon-Fri
|
||||
trading_days.append(d)
|
||||
d += timedelta(days=1)
|
||||
|
||||
print(f"共 {len(trading_days)} 个交易日")
|
||||
|
||||
all_data = {} # date_str -> DataFrame (FG609 member rank)
|
||||
|
||||
for dt in trading_days:
|
||||
ds = dt.strftime("%Y%m%d")
|
||||
print(f"拉取 {ds}...", end=" ", flush=True)
|
||||
rank = get_rank_czce_safe(ds)
|
||||
if rank and "FG609" in rank:
|
||||
df = rank["FG609"].copy()
|
||||
for col in ["vol", "vol_chg", "long_open_interest", "long_open_interest_chg",
|
||||
"short_open_interest", "short_open_interest_chg"]:
|
||||
df[col] = df[col].apply(to_int)
|
||||
df = df.sort_values("rank")
|
||||
all_data[ds] = df
|
||||
# 摘要
|
||||
total_vol = df["vol"].sum()
|
||||
top1 = df.iloc[0]
|
||||
top3_vol = df.head(3)["vol"].sum()
|
||||
long_sum = df["long_open_interest"].sum()
|
||||
short_sum = df["short_open_interest"].sum()
|
||||
print(f"OK vol={total_vol/10000:.0f}万 top1={top1['vol_party_name']}({top1['vol']/10000:.0f}万) net={long_sum-short_sum:+,}")
|
||||
else:
|
||||
print(f"SKIP(无FG609数据)")
|
||||
time.sleep(0.3)
|
||||
|
||||
print(f"\n成功获取 {len(all_data)} 天数据")
|
||||
|
||||
# ====== 汇总:逐日总成交量 & 前5会员 ======
|
||||
print("\n" + "="*80)
|
||||
print("【逐日汇总】FG609 前20会员成交量 & 多空净头寸")
|
||||
print("="*80)
|
||||
print(f"{'日期':>8} {'总成交量':>10} {'总多单':>10} {'总空单':>10} {'净头寸':>10} {'VolTop1':<18} {'VolTop1占比':>8}")
|
||||
print("-"*80)
|
||||
for ds in sorted(all_data.keys()):
|
||||
df = all_data[ds]
|
||||
tv = df["vol"].sum()
|
||||
ls = df["long_open_interest"].sum()
|
||||
ss = df["short_open_interest"].sum()
|
||||
t1 = df.iloc[0]
|
||||
share = t1["vol"] / tv * 100
|
||||
d = f"{ds[:4]}-{ds[4:6]}-{ds[6:]}"
|
||||
print(f"{d:>8} {tv:>10,} {ls:>10,} {ss:>10,} {ls-ss:>10,} {t1['vol_party_name']:<18} {share:>7.1f}%")
|
||||
|
||||
# ====== 重点会员逐日变化 ======
|
||||
key_members = ["国泰君安(代客)", "东证期货(代客)", "中信期货(代客)",
|
||||
"永安期货(代客)", "华泰期货(代客)", "方正中期(代客)"]
|
||||
print("\n" + "="*100)
|
||||
print("【重点会员逐日成交量】")
|
||||
print("="*100)
|
||||
header = f"{'日期':>8}"
|
||||
for m in key_members:
|
||||
header += f" {m:<16}"
|
||||
print(header)
|
||||
print("-"*100)
|
||||
for ds in sorted(all_data.keys()):
|
||||
df = all_data[ds]
|
||||
line = f"{ds[:4]}-{ds[4:6]}-{ds[6:]:>8}"
|
||||
for m in key_members:
|
||||
row = df[df["vol_party_name"] == m]
|
||||
if not row.empty:
|
||||
vol = row.iloc[0]["vol"]
|
||||
chg = row.iloc[0]["vol_chg"]
|
||||
line += f" {vol:>6,}({chg:>+6,})"
|
||||
else:
|
||||
line += f" {'---':>16}"
|
||||
print(line)
|
||||
|
||||
# ====== 重点会员逐日净头寸(多-空) ======
|
||||
print("\n" + "="*100)
|
||||
print("【重点会员逐日净头寸(多单-空单)】")
|
||||
print("="*100)
|
||||
header = f"{'日期':>8}"
|
||||
for m in key_members:
|
||||
header += f" {m:<16}"
|
||||
print(header)
|
||||
print("-"*100)
|
||||
for ds in sorted(all_data.keys()):
|
||||
df = all_data[ds]
|
||||
line = f"{ds[:4]}-{ds[4:6]}-{ds[6:]:>8}"
|
||||
for m in key_members:
|
||||
row = df[df["vol_party_name"] == m]
|
||||
if not row.empty:
|
||||
r = row.iloc[0]
|
||||
net = r["long_open_interest"] - r["short_open_interest"]
|
||||
line += f" {net:>+8,}"
|
||||
else:
|
||||
# try other name columns
|
||||
row_l = df[df["long_party_name"] == m]
|
||||
row_s = df[df["short_party_name"] == m]
|
||||
long_v = row_l.iloc[0]["long_open_interest"] if not row_l.empty else 0
|
||||
short_v = row_s.iloc[0]["short_open_interest"] if not row_s.empty else 0
|
||||
net = long_v - short_v
|
||||
line += f" {net:>+8,}"
|
||||
print(line)
|
||||
Reference in New Issue
Block a user