想上 Kaggle 排行榜?三井物产赛优胜者的「预测破分指南」,现在能领

前言

数据科学圈的严肃赛事,日本三井物产主办的kaggle商品预测挑战赛简直就是时序建模领域的精准练兵场。
这一次的竞赛直击大宗商品贸易的核心痛点,拥有多个市场价差序列预测。数据源含金量直接拉满!
涵盖了LME伦敦交易所、JPX日本交易所等全球核心市场,金属、能源】外汇三大类数据全量开放。
但是难度可不小,不仅要处理跨时区数据同步问题,还要应对政策突变等不可控的变量,对模型的鲁棒性和适应性是一个极大的考验。更关键的是评估指标用的还是改良版的夏普比率,直接和真实交易的风险调整后收益挂钩,完全对标实战标准。

适合人群

金融工程专业寻求实战突破的在校生、量化交易岗位需要提升的从业者、投资研究领域希望构建量化能力的研究员、追求稳定超额的个人交易者。

你能得到什么?

  • 在进攻机构量化部门脱颖而出。
  • 在资管公司策略研究岗位展现独特价值。
  • 在自营交易团队中称为核心决策者。
  • 在投资领域建立专业权威。

这不是一个简单的AI技术分享,而是能直接提升你市场盈利能力的实战体系

从理论到时间,从数据到收益-----掌握商品期货定价的核心技术,让你在量化交易的道路上少走很多的弯路。

废话不多说,正文开始

环境配置

安装pytorch、tensorflow

# 检查PyTorch
import torch
print("PyTorch版本:", torch.__version__)
print("CUDA是否可用:", torch.cuda.is_available())
print("CUDA版本:", torch.version.cuda if torch.cuda.is_available() else "不可用")

# 简单的张量操作测试
x = torch.tensor([1.0, 2.0, 3.0])
y = torch.tensor([4.0, 5.0, 6.0])
z = x + y
print("张量加法测试:", z)

# 检查设备信息
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
# 检查TensorFlow
import tensorflow as tf
print("TensorFlow版本:", tf.__version__)
print("TensorFlow路径:", tf.__file__)

# 检查GPU支持
print("GPU设备列表:", tf.config.list_physical_devices('GPU'))
print("可用的GPU数量:", len(tf.config.list_physical_devices('GPU')))

# 简单的TensorFlow操作测试
hello = tf.constant('Hello, TensorFlow!')
print(hello.numpy().decode())

# 创建简单的计算
a = tf.constant([[1, 2], [3, 4]])
b = tf.constant([[5, 6], [7, 8]])
c = tf.matmul(a, b)
print("矩阵乘法测试:")
print(c.numpy())
# 综合信息和系统检查
import sys
import platform

print("Python版本:", sys.version)
print("操作系统:", platform.system(), platform.release())
print("Anaconda环境信息:")

# 检查当前环境
import os
print("当前环境:", os.environ.get('CONDA_DEFAULT_ENV', 'base'))

print("\n=== 深度学习框架状态 ===")
print("✓ PyTorch 安装成功" if 'torch' in sys.modules else "✗ PyTorch 未正确安装")
print("✓ TensorFlow 安装成功" if 'tensorflow' in sys.modules else "✗ TensorFlow 未正确安装")

查看依赖包是否已完成安装

# 综合信息和系统检查
import sys
import platform
import importlib
import math
import itertools
import gc
import os
import warnings
from typing import Any, Dict, List, Tuple, Optional, Union
from datetime import datetime

# 数据科学和数值计算
import numpy as np
import pandas as pd

# 机器学习和特征工程
from sklearn.preprocessing import StandardScaler
from sklearn.feature_selection import RFE, SelectFromModel, mutual_info_regression
from sklearn.inspection import permutation_importance
from sklearn.ensemble import RandomForestRegressor
from sklearn.linear_model import Lasso, Ridge, ElasticNet
from sklearn.multioutput import MultiOutputRegressor
from sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score
from sklearn.model_selection import KFold, train_test_split

# 统计分析和节假日
from scipy.stats import skew, kurtosis
import holidays

# 可视化
import matplotlib.pyplot as plt
import seaborn as sns
from matplotlib import rcParams
from IPython.display import display, HTML

# 机器学习框架
import lightgbm as lgb
import xgboost as xgb
import catboost as cb

# 深度学习和优化
import torch
import torch.nn as nn
import torch.optim as optim
from torch.utils.data import DataLoader, TensorDataset, Dataset
import optuna
from optuna.samplers import TPESampler
from optuna.pruners import MedianPruner

# 可解释AI
import shap

# 系统监控
import psutil

# 警告设置
warnings.filterwarnings("ignore", category=RuntimeWarning)
warnings.filterwarnings("ignore", category=FutureWarning, module="seaborn")
warnings.filterwarnings('ignore')

# 设置图形样式
plt.rcParams['font.sans-serif'] = ['DejaVu Sans']
plt.rcParams['axes.unicode_minus'] = False
sns.set_style("whitegrid")
plt.rcParams['figure.figsize'] = [12, 8]
# 检查包是否已安装
import importlib
import sys

# 要检查的包列表
packages = [
    'numpy', 'pandas', 'sklearn', 'matplotlib', 'seaborn', 
    'xgboost', 'lightgbm', 'catboost', 'jupyter', 'optuna', 
    'shap', 'scipy', 'psutil', 'holidays', 'torch', 
    'tensorflow', 'keras', 'transformers', 'datasets', 
    'accelerate', 'wandb', 'tqdm'
]

print("检查包安装状态:")
print("=" * 50)

installed = []
not_installed = []

for package in packages:
    try:
        # 特殊处理:scikit-learn的包名是sklearn
        if package == 'sklearn':
            importlib.import_module('sklearn')
        else:
            importlib.import_module(package)
        installed.append(package)
        print(f"✓ {package:20} 已安装")
    except ImportError:
        not_installed.append(package)
        print(f"✗ {package:20} 未安装")

print("\n" + "=" * 50)
print(f"总计: {len(installed)}/{len(packages)} 个包已安装")
print(f"已安装: {len(installed)} 个")
print(f"未安装: {len(not_installed)} 个")

if not_installed:
    print("\n未安装的包:")
    for package in not_installed:
        print(f"  - {package}")
    
    print("\n安装命令:")
    for package in not_installed:
        # 特殊处理包名
        install_name = package
        if package == 'sklearn':
            install_name = 'scikit-learn'
        print(f"pip install {install_name}")

数据说明

展示不同金融市场的数据情况。

先是一个总表,列出四大类资产:金属、日本期货、美股、外汇,分别说明它们包含哪些数据指标。

然后专门用一块区域详细介绍伦敦金属交易所的数据,说明它包含铝、铜、铅、锌这四种金属的价格信息,特别解释了为什么只提供收盘价——因为金属市场最关注的就是这个权威的基准价格。

# 创建主要数据表格
data = {
    '资产类别': ['伦敦金属交易所(LME)金属', '日本交易所(JPX)期货', '美国股票 / ETF', '全球外汇货币对'],
    '标识前缀': ['LME', 'JPX', 'US_Stock', 'FX'],
    '核心特征': [
        '仅含"收盘价",聚焦工业金属,指标维度单一但品种聚焦',
        '含"完整期货交易维度"(开盘 / 最高 / 最低 / 收盘 / 成交量 / 结算价 / 持仓量),品种细分明确',
        '含"复权后股价维度"(开盘 / 最高 / 最低 / 收盘 / 成交量),覆盖"个股 + 全类型 ETF"',
        '仅含"货币对收盘价",覆盖"主要 / 交叉 / 新兴市场货币",品类全面'
    ]
}

df = pd.DataFrame(data)

# 创建带样式的表格
styled_table = df.style.set_table_styles([
    {'selector': 'th', 'props': [
        ('background-color', '#2E86AB'),
        ('color', 'white'),
        ('font-weight', 'bold'),
        ('padding', '15px'),
        ('text-align', 'center'),
        ('font-size', '14px'),
        ('border', '2px solid #1C6EA4')
    ]},
    {'selector': 'td', 'props': [
        ('padding', '12px'),
        ('border', '1px solid #AAAAAA'),
        ('text-align', 'left'),
        ('font-size', '13px')
    ]},
    {'selector': '', 'props': [
        ('border-collapse', 'collapse'),
        ('width', '100%'),
        ('box-shadow', '0 4px 8px rgba(0,0,0,0.1)'),
        ('margin-bottom', '20px')
    ]}
]).set_properties(**{
    'background-color': '#F8F9FA'
}).set_properties(subset=pd.IndexSlice[::2, :], **{
    'background-color': '#E9ECEF'
})

# 显示标题和表格
display(HTML('<h2 style="color: #2E86AB; text-align: center;">📊 全球市场多品种标准化原始指标</h2>'))
display(HTML('<p style="text-align: center; color: #666; font-size: 14px;">提供的数据覆盖了全球市场多品种的标准化原始指标,分别来自于"金属、期货、美股/ETF、外汇"</p>'))

styled_table

# 显示LME详细信息
display(HTML('''
<div style="background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); padding: 20px; border-radius: 10px; margin: 20px 0; color: white;">
    <h3 style="margin-top: 0; color: white;">🔩 LME (伦敦金属交易所) 详细信息</h3>
    <p>包含四个核心的工业金属品种,分别为:</p>
    <div style="display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px; margin: 15px 0;">
        <div style="background: rgba(255,255,255,0.2); padding: 10px; border-radius: 5px;">
            <strong>AH</strong> - 铝
        </div>
        <div style="background: rgba(255,255,255,0.2); padding: 10px; border-radius: 5px;">
            <strong>CA</strong> - 铜 (LME核心工业金属)
        </div>
        <div style="background: rgba(255,255,255,0.2); padding: 10px; border-radius: 5px;">
            <strong>PB</strong> - 铝
        </div>
        <div style="background: rgba(255,255,255,0.2); padding: 10px; border-radius: 5px;">
            <strong>ZS</strong> - 锌
        </div>
    </div>
    <p style="background: rgba(255,255,255,0.1); padding: 15px; border-radius: 5px; border-left: 4px solid #FFD700;">
        <strong>数据特征:</strong>提供的数据指标仅包含收盘价。这是因为金属市场的核心需求就是"权威定价基准",收盘价是唯一能满足全产业链(贸易、套期保值、分析)的核心指标。
    </p>
</div>
'''))

在这里插入图片描述
主要分两块内容:

第一块是数据指标说明,列出了7个关键交易数据,包括开盘价、最高价、最低价、收盘价这些基本价格,还有成交量、结算价、持仓量这些反映市场活跃度和资金动向的指标。

第二块是具体的交易品种,重点介绍了黄金和铂金的期货产品,分标准版和迷你版两种规格,标准版适合机构投资者,迷你版门槛低适合个人投资者。另外还提到了橡胶期货这个工业品。

最后有个总结,点出日本交易所数据的特点是信息完整、品种覆盖全面,能满足不同投资者的需求。

# 创建JPX数据指标表格
jpx_indicators = {
    '数据指标': ['Open(开盘价)', 'High(最高价)', 'Low(最低价)', 'Close(收盘价)', 'Volume(成交量)', 'settlement_price(结算价)', 'open_interest(持仓量)'],
    '说明': [
        '开盘价',
        '最高价', 
        '最低价',
        '收盘价 - 经典"OHLC"价格维度',
        '当日交易总量,反映市场活跃度',
        '期货持有维度,用于当日盈亏计算和持仓估值',
        '未平仓合约数,反映市场多空情绪和资金规模'
    ]
}

df_indicators = pd.DataFrame(jpx_indicators)

# 创建交易品种数据
trading_products = {
    '类别': ['贵金属期货', '贵金属期货', '贵金属期货', '贵金属期货', '贵金属期货', '工业商品期货'],
    '品种': ['黄金(Mini 迷你)', '黄金(Rolling-Spot 连续现货)', '黄金(Standard 标准)', '铂金(Mini)', '铂金(Standard)', 'RSS3 橡胶期货'],
    '说明': [
        '黄金的缩小版本,更小交易单位',
        '连续现货黄金',
        '标准规格黄金期货',
        '铂金的缩小版本,更小交易单位', 
        '标准规格铂金期货',
        '天然橡胶主流品种'
    ]
}

df_products = pd.DataFrame(trading_products)

# 样式设置
styled_indicators = df_indicators.style.set_table_styles([
    {'selector': 'th', 'props': [
        ('background-color', '#8B4513'),
        ('color', 'white'),
        ('font-weight', 'bold'),
        ('padding', '12px'),
        ('text-align', 'center'),
        ('font-size', '13px'),
        ('border', '2px solid #654321')
    ]},
    {'selector': 'td', 'props': [
        ('padding', '10px'),
        ('border', '1px solid #AAAAAA'),
        ('text-align', 'left'),
        ('font-size', '12px')
    ]}
]).set_properties(**{
    'background-color': '#FAF0E6'
}).hide(axis='index')

styled_products = df_products.style.set_table_styles([
    {'selector': 'th', 'props': [
        ('background-color', '#2F4F4F'),
        ('color', 'white'),
        ('font-weight', 'bold'),
        ('padding', '12px'),
        ('text-align', 'center'),
        ('font-size', '13px'),
        ('border', '2px solid #1C2F2F')
    ]},
    {'selector': 'td', 'props': [
        ('padding', '10px'),
        ('border', '1px solid #AAAAAA'),
        ('text-align', 'left'),
        ('font-size', '12px')
    ]}
]).set_properties(**{
    'background-color': '#F5F5F5'
}).hide(axis='index')

# 显示完整内容
display(HTML('''
<div style="background: linear-gradient(135deg, #D4AF37 0%, #FFD700 100%); padding: 25px; border-radius: 15px; margin: 20px 0; color: #2F4F4F; box-shadow: 0 8px 25px rgba(0,0,0,0.15);">
    <h2 style="text-align: center; margin-top: 0; color: #2F4F4F; text-shadow: 1px 1px 2px rgba(255,255,255,0.5);">🏯 JPX(日本交易所集团)</h2>
</div>
'''))

display(HTML('<h3 style="color: #8B4513; border-left: 5px solid #8B4513; padding-left: 10px;">📈 数据指标维度</h3>'))
styled_indicators

display(HTML('<h3 style="color: #2F4F4F; border-left: 5px solid #2F4F4F; padding-left: 10px; margin-top: 30px;">🏷️ 交易品种</h3>'))
styled_products

display(HTML('''
<div style="background: linear-gradient(135deg, #87CEEB 0%, #4682B4 100%); padding: 20px; border-radius: 10px; margin: 25px 0; color: white; border-left: 6px solid #FF6347;">
    <h4 style="margin-top: 0; color: white;">💡 交易品种说明</h4>
    <p style="margin-bottom: 0; line-height: 1.6;">
        <strong>Mini 品种:</strong>可以视为 Standard 的缩小版本,可以以更小的单位与门槛进行交易,适合小额投资者参与。
    </p>
</div>

<div style="background: #F8F9FA; padding: 15px; border-radius: 8px; border: 2px dashed #28A745; margin: 15px 0;">
    <h4 style="color: #28A745; margin-top: 0;">🎯 核心特点总结</h4>
    <ul style="margin-bottom: 0;">
        <li>提供完整的期货交易维度(OHLC + 成交量 + 结算价 + 持仓量)</li>
        <li>覆盖贵金属和工业商品两大类别</li>
        <li>包含标准版和迷你版,满足不同投资者需求</li>
        <li>RSS3橡胶期货是天然橡胶的主流交易品种</li>
    </ul>
</div>
'''))

在这里插入图片描述
第一部分是数据指标说明,列出了5个关键数据,都是经过复权调整后的价格,包括开盘、最高、最低、收盘价和成交量。复权处理是为了消除分红、拆股对价格的影响,让历史数据更准确。
这些数据适合做长期投资分析,覆盖了从全球市场到具体行业的各种投资选择。

# 创建数据指标表格
data_indicators = {
    '数据指标': ['adj_open(复权开盘价)', 'adj_high(复权最高价)', 'adj_low(复权最低价)', 'adj_close(复权收盘价)', 'adj_volume(成交量)'],
    '说明': [
        '复权后的开盘价格',
        '复权后的最高价格',
        '复权后的最低价格',
        '复权后的收盘价格',
        '成交量(无需复权),反映交易活跃度'
    ]
}

df_indicators = pd.DataFrame(data_indicators)

# 创建资产覆盖表格
asset_coverage = {
    '资产类别': ['宽基/区域 ETF', '宽基/区域 ETF', '宽基/区域 ETF', '宽基/区域 ETF', 
               '商品 ETF', '商品 ETF', '商品 ETF', '商品 ETF',
               '债券 ETF', '债券 ETF', '债券 ETF', '债券 ETF',
               '行业个股-能源', '行业个股-能源', '行业个股-矿业', '行业个股-矿业',
               '行业个股-金融', '行业个股-金融', '行业个股-工业',
               '杠杆/主题 ETF', '杠杆/主题 ETF'],
    '代码/名称': ['ACWI(全球股票)', 'VT(全球股票)', 'VEA(发达市场)', 'VWO(新兴市场)',
                'GLD(黄金)', 'SLV(白银)', 'GDX(黄金矿业)', 'NUGT(3倍做多黄金矿业)',
                'AGG(美国总债)', 'BND(美国国债)', 'BNDX(国际国债)', 'TIP(通胀保值债券)',
                'CVX(雪佛龙)', 'EOG', 'RIO(力拓)', 'VALE(淡水河谷)',
                'TD(道明银行)', 'MS(摩根士丹利)', 'CAT(卡特彼勒)',
                'YINN(3倍做多中国指数)', 'URA(铀矿主题)'],
    '特点': [
        '全球股票市场覆盖', '全球股票市场覆盖', '发达市场参考', '新兴市场投资',
        '实物黄金投资', '实物白银投资', '黄金矿业公司', '3倍杠杆黄金矿业',
        '美国整体债券市场', '美国国债', '国际国债', '通胀保护债券',
        '能源巨头', '能源公司', '跨国矿业', '巴西矿业巨头',
        '加拿大银行', '投资银行', '重型机械制造',
        '3倍杠杆中国指数', '铀矿主题投资'
    ]
}

df_assets = pd.DataFrame(asset_coverage)

# 样式设置
styled_indicators = df_indicators.style.set_table_styles([
    {'selector': 'th', 'props': [
        ('background-color', '#1E3A8A'),
        ('color', 'white'),
        ('font-weight', 'bold'),
        ('padding', '12px'),
        ('text-align', 'center'),
        ('font-size', '13px'),
        ('border', '2px solid #1E40AF')
    ]},
    {'selector': 'td', 'props': [
        ('padding', '10px'),
        ('border', '1px solid #E5E7EB'),
        ('text-align', 'left'),
        ('font-size', '12px')
    ]}
]).set_properties(**{
    'background-color': '#EFF6FF'
}).hide(axis='index')

# 为资产表格设置条件格式
def asset_color(val):
    colors = {
        '宽基/区域 ETF': '#3B82F6',
        '商品 ETF': '#F59E0B', 
        '债券 ETF': '#10B981',
        '行业个股-能源': '#EF4444',
        '行业个股-矿业': '#8B5CF6',
        '行业个股-金融': '#06B6D4',
        '行业个股-工业': '#84CC16',
        '杠杆/主题 ETF': '#EC4899'
    }
    return f'background-color: {colors.get(val, "white")}; color: white; font-weight: bold;'

styled_assets = df_assets.style.set_table_styles([
    {'selector': 'th', 'props': [
        ('background-color', '#1F2937'),
        ('color', 'white'),
        ('font-weight', 'bold'),
        ('padding', '12px'),
        ('text-align', 'center'),
        ('font-size', '13px'),
        ('border', '2px solid #374151')
    ]},
    {'selector': 'td', 'props': [
        ('padding', '8px'),
        ('border', '1px solid #E5E7EB'),
        ('text-align', 'left'),
        ('font-size', '12px')
    ]}
]).applymap(asset_color, subset=['资产类别'])

# 显示完整内容
display(HTML('''
<div style="background: linear-gradient(135deg, #1E3A8A 0%, #3B82F6 100%); padding: 25px; border-radius: 15px; margin: 20px 0; color: white; box-shadow: 0 8px 25px rgba(0,0,0,0.15);">
    <h2 style="text-align: center; margin-top: 0; color: white; text-shadow: 1px 1px 2px rgba(0,0,0,0.3);">🇺🇸 US_Stock 美国股票/ETF</h2>
    <p style="text-align: center; margin-bottom: 0; opacity: 0.9;">提供复权后数据,覆盖广泛的资产类别</p>
</div>
'''))

display(HTML('<h3 style="color: #1E3A8A; border-left: 5px solid #1E3A8A; padding-left: 10px;">📊 数据指标维度(复权后)</h3>'))
styled_indicators

display(HTML('<h3 style="color: #1F2937; border-left: 5px solid #1F2937; padding-left: 10px; margin-top: 30px;">📈 资产覆盖范围</h3>'))
styled_assets

display(HTML('''
<div style="background: linear-gradient(135deg, #059669 0%, #10B981 100%); padding: 20px; border-radius: 10px; margin: 25px 0; color: white;">
    <h4 style="margin-top: 0; color: white;">🎯 核心特点总结</h4>
    <div style="display: grid; grid-template-columns: repeat(2, 1fr); gap: 15px;">
        <div style="background: rgba(255,255,255,0.2); padding: 15px; border-radius: 8px;">
            <strong>📅 数据特征</strong>
            <ul style="margin-bottom: 0;">
                <li>提供完整的复权后价格数据</li>
                <li>包含OHLC价格维度 + 成交量</li>
                <li>适合长期投资分析</li>
            </ul>
        </div>
        <div style="background: rgba(255,255,255,0.2); padding: 15px; border-radius: 8px;">
            <strong>🌍 覆盖广度</strong>
            <ul style="margin-bottom: 0;">
                <li>全球市场ETF</li>
                <li>商品 & 债券ETF</li>
                <li>行业龙头个股</li>
                <li>杠杆 & 主题ETF</li>
            </ul>
        </div>
    </div>
</div>

<div style="background: #FEF3C7; padding: 15px; border-radius: 8px; border: 2px solid #F59E0B; margin: 15px 0;">
    <h4 style="color: #92400E; margin-top: 0;">💡 重要说明</h4>
    <p style="margin-bottom: 0; color: #92400E;">
        <strong>复权数据优势:</strong>消除了分红、拆股等公司行为对价格的影响,提供连续可比较的价格序列,特别适合长期趋势分析和回测研究。
    </p>
</div>
'''))

在这里插入图片描述
核心思路不是预测单个货币的价格,而是分析不同资产之间的相对表现。比如比较金属和股票、期货和外汇之间的收益率差异。

这个策略设计了424个预测标签,分成4组,分别预测未来1到4天内不同资产组合的收益差。举例来说,可以预测铅价和全球股票ETF之间的价差变化,或者铜和锌这两种金属之间的价格关系。

这种方法的优势在于能够发现跨市场的交易机会,通过同时做多和做空相关资产来降低风险,适合市场中性的投资策略。

# 创建标签组信息表格
label_groups = {
    '标签组': ['第1组', '第2组', '第3组', '第4组'],
    '预测天数': ['1天', '2天', '3天', '4天'],
    '标签数量': ['106个', '106个', '106个', '106个'],
    '预测目标': [
        '交易品收益率的差值(1天后)',
        '交易品收益率的差值(2天后)', 
        '交易品收益率的差值(3天后)',
        '交易品收益率的差值(4天后)'
    ]
}

df_labels = pd.DataFrame(label_groups)

# 创建差值类型示例表格
difference_examples = {
    '差值类型': ['跨类别差值', '跨类别差值', '同类别差值', '同类别差值'],
    '示例': [
        'LME_PB_Close(金属铅) - US_Stock_VT_adj_close(美股ETF)',
        'JPX_Gold_Standard_Futures_Close(黄金期货) - FX_USDJPY(外汇)',
        'LME_CA_Close(铜) - LME_ZS_Close(锌)',
        '金属内部价差比较'
    ],
    '市场关系': [
        '金属 vs 股票',
        '期货 vs 外汇',
        '金属内部价差',
        '同类别资产间比较'
    ]
}

df_differences = pd.DataFrame(difference_examples)

# 样式设置
styled_labels = df_labels.style.set_table_styles([
    {'selector': 'th', 'props': [
        ('background-color', '#7C3AED'),
        ('color', 'white'),
        ('font-weight', 'bold'),
        ('padding', '12px'),
        ('text-align', 'center'),
        ('font-size', '13px'),
        ('border', '2px solid #6D28D9')
    ]},
    {'selector': 'td', 'props': [
        ('padding', '10px'),
        ('border', '1px solid #E5E7EB'),
        ('text-align', 'center'),
        ('font-size', '12px')
    ]}
]).set_properties(**{
    'background-color': '#F3F4F6'
}).hide(axis='index')

styled_differences = df_differences.style.set_table_styles([
    {'selector': 'th', 'props': [
        ('background-color', '#059669'),
        ('color', 'white'),
        ('font-weight', 'bold'),
        ('padding', '12px'),
        ('text-align', 'center'),
        ('font-size', '13px'),
        ('border', '2px solid #047857')
    ]},
    {'selector': 'td', 'props': [
        ('padding', '10px'),
        ('border', '1px solid #E5E7EB'),
        ('text-align', 'left'),
        ('font-size', '12px')
    ]}
]).set_properties(**{
    'background-color': '#ECFDF5'
}).hide(axis='index')

# 显示完整内容
display(HTML('''
<div style="background: linear-gradient(135deg, #7C3AED 0%, #A78BFA 100%); padding: 25px; border-radius: 15px; margin: 20px 0; color: white; box-shadow: 0 8px 25px rgba(0,0,0,0.15);">
    <h2 style="text-align: center; margin-top: 0; color: white; text-shadow: 1px 1px 2px rgba(0,0,0,0.3);">💱 FX 外汇市场</h2>
    <p style="text-align: center; margin-bottom: 0; opacity: 0.9;">基于收盘价的跨市场价差预测</p>
</div>
'''))

display(HTML('''
<div style="background: #FEF3C7; padding: 15px; border-radius: 8px; border: 2px solid #F59E0B; margin: 15px 0;">
    <h4 style="color: #92400E; margin-top: 0;">📊 数据基础</h4>
    <p style="margin-bottom: 0; color: #92400E;">
        <strong>数据维度:</strong>仅包含收盘价,但通过巧妙的标签设计实现跨市场分析
    </p>
</div>
'''))

display(HTML('<h3 style="color: #7C3AED; border-left: 5px solid #7C3AED; padding-left: 10px;">🏷️ 标签体系结构</h3>'))
display(HTML('<p style="color: #666; font-size: 14px;">共有 <strong style="color: #7C3AED;">424个标签</strong>,分为4组,每组106个标签分别预测不同时间跨度的收益率差值</p>'))
styled_labels

display(HTML('<h3 style="color: #059669; border-left: 5px solid #059669; padding-left: 10px; margin-top: 30px;">🔄 收益率差值类型</h3>'))
display(HTML('''
<div style="background: #E0F2FE; padding: 12px; border-radius: 6px; margin: 10px 0; border-left: 4px solid #0284C7;">
    <strong>📈 收益率计算公式:</strong>
    <code style="background: #F1F5F9; padding: 4px 8px; border-radius: 4px; font-family: monospace;">
        r_t = (p_t - p_{t-1}) / p_{t-1}
    </code>
</div>
'''))
styled_differences

display(HTML('''
<div style="background: linear-gradient(135deg, #1E40AF 0%, #3B82F6 100%); padding: 20px; border-radius: 10px; margin: 25px 0; color: white;">
    <h4 style="margin-top: 0; color: white;">🎯 策略价值</h4>
    <div style="display: grid; grid-template-columns: repeat(2, 1fr); gap: 15px;">
        <div style="background: rgba(255,255,255,0.2); padding: 15px; border-radius: 8px;">
            <strong>🌐 跨市场分析</strong>
            <ul style="margin-bottom: 0;">
                <li>识别不同资产类别间的相对价值</li>
                <li>捕捉跨市场套利机会</li>
                <li>分散单一市场风险</li>
            </ul>
        </div>
        <div style="background: rgba(255,255,255,0.2); padding: 15px; border-radius: 8px;">
            <strong>⏰ 多时间维度</strong>
            <ul style="margin-bottom: 0;">
                <li>1-4天不同预测周期</li>
                <li>适应不同交易策略</li>
                <li>提供交易时机参考</li>
            </ul>
        </div>
    </div>
</div>

<div style="background: #FCE7F3; padding: 15px; border-radius: 8px; border: 2px solid #EC4899; margin: 15px 0;">
    <h4 style="color: #BE185D; margin-top: 0;">💡 创新特点</h4>
    <p style="margin-bottom: 0; color: #BE185D;">
        <strong>相对价值策略:</strong>不预测单一资产价格,而是预测资产间的相对表现差异,这种"配对交易"思路在市场中性策略中具有重要价值。
    </p>
</div>
'''))

在这里插入图片描述
在这里插入图片描述
以上仅为环境配置和数据的初步探查,如果您喜欢或者向了解更多,可以移步下面的连接,如果您仅仅想看本次竞赛解题思路,也可以移步公主号海水三千查看《三井物产商品预测怎么冲分?优胜者的 Transformer 建模思路,全在这了》!
链接https://blog.csdn.net/weixin_48152827/article/details/153417219?spm=1001.2014.3001.5502

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

顽强卖力

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值