资源加载中... loading...

基于商品期货基本面的研究框架(二):商品期货中的反指席位查询:某方财富

Author: ianzeng123, Created: 2024-02-02 19:01:44, Updated: 2024-06-13 14:30:52

img

如果大家熟悉期货市场,一定会对东方财富这个“家人们”并不陌生,靠着2023年巨亏33亿的“神话”,成为了期货市场中天生反向指标的存在。为啥东财家人们总是被当做反向指标呢?其实,这是因为东方财富这家期货公司的客户大多是证券、基金里导流过来的新手。这些新手期民数量庞大,但资金普遍较少,而且连最基本的止损止盈都不会设置。他们大多数的时候都是看评论区做交易,手续费高得离谱,保证金也高得吓人,所以他们很容易受到市场情绪的影响,盲目跟风,没有自己的独立思考和判断。这种行为在期货市场中是非常危险的,因为一旦市场走势与他们的预期相反,他们就会陷入无法自拔的亏损中。

2023年期货市场三波大行情,纯碱暴跌、碳酸锂暴跌、欧线暴涨,东财家人们统统做错,真是让人大跌眼镜!尤其是欧线那波行情,一共是六个涨停板,东财家人们竟然在第二个涨停板就开始做空,简直是"头铁"到家了!大家都知道,期货市场九亏一赚,这些新手期民却将抗单、重仓、频繁交易等错误行为演绎得淋漓尽致。据说这个席位2023年亏损33亿之多,里面的散户平均存活周期不到三个月。但奇怪的是,为什么还有那么多新人源源不断地进来呢?原来都是冲着东方财富的巨大流量来的,新增客户量在期货公司里可是名列前茅。所以啊,做期货的朋友们,如果你做单之后心里没底,可以参考下东财的这个席位。要是是反向的,那你就稳了!

当然,玩笑归玩笑,东方财富作为一家流量巨大的平台,其客户群体中确实存在大量的新手期民。这些新手期民由于缺乏专业知识和经验,往往容易被市场波动所左右,成为了专业投资机构眼中的“大肥肉”。所以,虽然东方财富的客户席位被视为反向指标,但这并不意味着他们没有价值。对于有一定专业知识和经验的投资者来说,他们可以通过观察和分析东方财富的客户席位来获取市场的信息,从而更好地把握市场走势,做出更加明智的投资决策。

所以有很多期友希望可以实时的查看“天生反指”的东方财富,在不同合约的持仓布局情况以及建仓历史,今天我们将在优宽数据探索模块进行一下尝试。

东财席位重仓品种查询

我们打开优宽的数据探索模块,这里包含了有关期货品种各个维度的宏观和基本面数据,本次我们使用的是“会员成交量及持仓数据”,我们打开看一下。

可以看到这里包含了不同交易日内,不同期货公司对于不同品种的实时交易数据,包括成交量,成交量增减,持买单量,持买单量增减,持卖单量,持卖单量增减。我们的目标是东财财富的席位,并且我们要关注该席位重点操作的品种,所以我们设定规则,如果在该交易日内,东财家人在某个品种的持单买量或者持单卖量排名前五的话,我们就输出该合约名称和具体的买单和卖单的排名。

WITH RankedContracts AS (
    SELECT
        date,
        username,
        contract,
        COALESCE(long, 0) AS long,
        COALESCE(short, 0) AS short,
        ROW_NUMBER() OVER (PARTITION BY contract ORDER BY COALESCE(long, 0) DESC) AS long_rank,
        ROW_NUMBER() OVER (PARTITION BY contract ORDER BY COALESCE(short, 0) DESC) AS short_rank,
        CASE WHEN username LIKE '%东方财富%' THEN
            ROW_NUMBER() OVER (PARTITION BY contract ORDER BY COALESCE(long, 0) DESC) 
        END AS eastmoney_long_rank,
        CASE WHEN username LIKE '%东方财富%' THEN
            ROW_NUMBER() OVER (PARTITION BY contract ORDER BY COALESCE(short, 0) DESC) 
        END AS eastmoney_short_rank
    FROM
        futures_data.dtp
    WHERE
        date = '{{DATE}}'
)
SELECT
    date,
    username,
    contract,
    long,
    short,
    eastmoney_long_rank,
    eastmoney_short_rank
FROM
    RankedContracts
WHERE
    (long_rank <= 5 OR short_rank <= 5)
    AND username LIKE '%东方财富%'
ORDER BY
    contract,
    long_rank,
    short_rank;

这段sql代码首先获取特定日期(设置为外部参数)的期货交易数据,然后为每个合约计算 long 和 short 位置的排名。最后,过滤并展示满足条件的记录,如果持仓排名前五的会员名包含 ‘东方财富’,我们将需要的数据进行输出。

这里我们选择日期为2023年7月20日,可以看到东财家人们重仓了ag2308,和fu2309的合约,并且都是单边持有的空仓,分别排名第3和第5,并且呢没有一手的多仓进行对冲,确实很符合东财家人们“头铁”的风格。

东财席位建仓历史查询

当然我们并不满足于只获取东财家人们当天的重仓品种,我们还希望看到东财不同重仓品种的建仓历史,以及相关的期货合约的走势,去观察东财家人们究竟是“顺势而为”还是“逆势加仓”。这里我们希望查询东财建仓的历史是7天,也就是1周的时间,根据当天日期,获取东财席位在目标品种前面七天内持多和持空的数量,并且我们也结合期货每日行情表,观察目标品种的七日走势图。我们继续编写sql代码:

WITH spedate AS (
    SELECT DISTINCT date
    FROM futures_data.dtp
    WHERE date <= '{{DATE}}'
    ORDER BY date DESC
    LIMIT 7
),
specontract AS (
    WITH RankedContracts AS (
        SELECT
            date,
            username,
            contract,
            COALESCE(long, 0) AS long,
            COALESCE(short, 0) AS short,
            ROW_NUMBER() OVER (PARTITION BY contract ORDER BY COALESCE(long, 0) DESC) AS long_rank,
            ROW_NUMBER() OVER (PARTITION BY contract ORDER BY COALESCE(short, 0) DESC) AS short_rank,
            CASE WHEN username LIKE '%东方财富%' THEN
                ROW_NUMBER() OVER (PARTITION BY contract ORDER BY COALESCE(long, 0) DESC) 
            END AS eastmoney_long_rank,
            CASE WHEN username LIKE '%东方财富%' THEN
                ROW_NUMBER() OVER (PARTITION BY contract ORDER BY COALESCE(short, 0) DESC) 
            END AS eastmoney_short_rank
        FROM
            futures_data.dtp
        WHERE
            date = '{{DATE}}'
    )
    SELECT
        contract
    FROM
        RankedContracts
    WHERE
        (long_rank <= 5 OR short_rank <= 5)
        AND username LIKE '%东方财富%'
    ORDER BY
        contract,
        long_rank,
        short_rank
)
SELECT 
    dtp.date,
    dtp.username,
    dtp.contract,
    COALESCE(dtp.long, 0) AS long,
    COALESCE(dtp.short, 0) AS short,
    dqf.price_close
FROM
    futures_data.dtp dtp
JOIN
    daily_quotes.dqf dqf ON dtp.date = dqf.date AND dtp.contract = dqf.contract
WHERE
    dtp.contract IN (SELECT contract FROM specontract)
    AND dtp.date IN (SELECT date FROM spedate)
    AND dtp.username LIKE '%东方财富%'
ORDER BY
    dtp.date;

首先,在SQL代码中,通过spedate选取了不晚于指定日期 {{DATE}}(外部变量) 的最近七个不同的交易日期,并按照日期降序排列。其次,在 specontract 中,使用 RankedContracts 选择了指定日期 {{DATE}} 的期货交易数据。对每个合同的多仓和空仓进行排名计算,并额外为包含“东方财富”用户的记录计算排名。最后,从这些排名中筛选出多仓或空仓排名前五合约,并按照合约多仓排名、空仓排名进行排序。最终,在主查询中,选择了符合 specontract 中条件的期货交易数据。这包括“东方财富”用户在排名前五的多仓或空仓合约,另外结合期货行情表(daily_quotes.dqf)获取这七日目标合约的收盘价格,最后按照合同和日期进行排序。

但是,如果我们可能更关注的是单独的合约的建仓和实时价格趋势的展示,这里可以使用到数据探索模块另一个变量类型(DynamicList)。

image

这里我们要设置的DynamicList是不同的目标合约列表,所以在变量设置里编写sql代码:

WITH specontract AS (
    ***//和上述代码逻辑一致
)
SELECT * FROM specontract;

最后呈现的目标合约的选择是这样的下拉列表的格式:

image

这样呢,我们就可以在sql当中设置DynamicList变量,然后选择不同的目标合约进行绘制。

SELECT 
    ***//和上述代码逻辑一致
WHERE
    dtp.contract = '{{CHECKCONTRACT}}' //增添DynamicList变量筛选
    ***
ORDER BY
    ***;

通过最后设置dtp.contract = '{{CHECKCONTRACT}}',我们就可以对于目标的品种进行动态的筛选(请点击应用参数)。这里我们选择ag2308品种,可以看到白银期货价格在这七日内一路高歌,东财家人的空单数量也是处于比较高的水平,多单一手也没有增加,在一定程度上,确实符合东财家人“反向指标”的标准。

当然,我们之前的探索只是一个初步的尝试,实际上,我们还可以利用这些多维度的数据来进行更深入的信息挖掘和指标构建。例如,我们可以利用蜘蛛网指标等工具,对市场走势进行更全面的分析和预测。使用优宽的数据探索模块进行反向席位的查询,不仅简化了数据获取的流程,提高了分析的效率,更重要的是,它为我们提供了全面、实时的市场信息。这些信息对于我们在期货交易中进行实时信息筛选和交易决策具有重要的参考价值。总的来说,优宽的数据探索模块为我们提供了一个全新的视角和工具,使我们能够更加深入地理解和把握市场动态,为我们的交易决策提供有力支持。这无疑将使我们在期货市场中更具竞争力,更加从容地应对市场的挑战和机遇。

本系列课程旨在为大家介绍基本面分析在商品期货量化交易中的应用,其他相关文章请点击下面链接:


更多内容