集智データセット

銀行 香港ドル基準為替レートデータセット(多通貨・高頻度)

閲覧 466ダウンロード 72サイズ: 0.65形式: CSV2024/09/05

概要

       该数据集包含了银行一天内多种货币对港币的汇率变动情况。数据采集频率为每10秒一次,涵盖了17种不同货币的汇率变化,包括但不限于美元、人民币等主要国际货币。此数据集能够为金融分析、汇率预测模型、外汇市场研究等提供基础的数据支持。

数据集特点:

  • 时间跨度:一天(24小时)
  • 采样频率:每10秒一次
  • 货币种类:共17种货币对港币的汇率
  • 数据格式:结构化数据,适合使用CSV或其他表格形式存储
  • 应用场景:适用于时间序列分析、机器学习预测模型训练等

通过这个数据集,研究人员和开发者可以探索不同货币对之间的相关性,分析短期汇率波动模式,并尝试建立预测模型来预估未来的汇率走向。对于那些希望了解外汇市场动态并进行量化交易策略开发的人来说,这将是一个有价值的资源。

プレビュー

idtimecurrencysellbuy
12024-09-03 17:39:20美元/港元7.773507.82480
22024-09-03 17:39:20人民幣/港元1.088691.10139
32024-09-03 17:39:20英鎊/港元10.1687910.29224
42024-09-03 17:39:20日圓/港元0.053100.05384
52024-09-03 17:39:20澳元/港元5.223925.29908
62024-09-03 17:39:20紐元/港元4.787644.86627
72024-09-03 17:39:20加元/港元5.733645.80478
82024-09-03 17:39:20歐羅/港元8.561518.66949
92024-09-03 17:39:20瑞士法郎/港元9.094679.20896
102024-09-03 17:39:20丹麥克郎/港元1.146681.16238
112024-09-03 17:39:20挪威克郎/港元0.726020.74026
122024-09-03 17:39:20瑞典克郎/港元0.749390.76495
132024-09-03 17:39:20新加坡元/港元5.938635.98435
142024-09-03 17:39:20泰國銖/港元0.224400.23267
152024-09-03 17:39:20文萊元/港元5.938635.98435
162024-09-03 17:39:20南非蘭特/港元0.428050.44341
172024-09-03 17:39:30美元/港元7.773507.82480
182024-09-03 17:39:30人民幣/港元1.088681.10137
192024-09-03 17:39:30英鎊/港元10.1680110.29146
202024-09-03 17:39:30日圓/港元0.053100.05384
212024-09-03 17:39:30澳元/港元5.223925.29908
222024-09-03 17:39:30紐元/港元4.787644.86627
232024-09-03 17:39:30加元/港元5.733645.80478
242024-09-03 17:39:30歐羅/港元8.561518.66949
252024-09-03 17:39:30瑞士法郎/港元9.094679.20896
262024-09-03 17:39:30丹麥克郎/港元1.146661.16236
272024-09-03 17:39:30挪威克郎/港元0.726010.74025
282024-09-03 17:39:30瑞典克郎/港元0.749390.76495
292024-09-03 17:39:30新加坡元/港元5.938635.98435
302024-09-03 17:39:30泰國銖/港元0.224400.23267
312024-09-03 17:39:30文萊元/港元5.938635.98435
322024-09-03 17:39:30南非蘭特/港元0.428040.44339
332024-09-03 17:39:40美元/港元7.773507.82480
342024-09-03 17:39:40人民幣/港元1.088661.10136
352024-09-03 17:39:40英鎊/港元10.1680110.29146
362024-09-03 17:39:40日圓/港元0.053100.05384
372024-09-03 17:39:40澳元/港元5.223925.29908
382024-09-03 17:39:40紐元/港元4.787644.86627
392024-09-03 17:39:40加元/港元5.733645.80478
402024-09-03 17:39:40歐羅/港元8.561518.66949
412024-09-03 17:39:40瑞士法郎/港元9.094679.20896
422024-09-03 17:39:40丹麥克郎/港元1.146641.16234
432024-09-03 17:39:40挪威克郎/港元0.725720.73995
442024-09-03 17:39:40瑞典克郎/港元0.749320.76489
452024-09-03 17:39:40新加坡元/港元5.938635.98435
462024-09-03 17:39:40泰國銖/港元0.224400.23267
472024-09-03 17:39:40文萊元/港元5.938635.98435
482024-09-03 17:39:40南非蘭特/港元0.427830.44317
492024-09-03 17:39:50美元/港元7.773507.82480

サンプルコード (Python ローダ)

       在这种情况下,可以考虑使用门控循环单元(GRU),它是RNN的一种变体,与LSTM类似,但在参数量上更少,同样能够处理长期依赖的问题。

       我们将使用PyTorch库来实现一个基本的GRU模型。以下是使用PyTorch构建GRU模型的基本代码示例:

       首先,确保安装了必要的库:

pip install pandas numpy torch
import pandas as pd
import numpy as np
import torch
import torch.nn as nn
from torch.utils.data import Dataset, DataLoader
from sklearn.preprocessing import MinMaxScaler
from sklearn.model_selection import train_test_split

# 加载数据
data_path = 'exchange_rates.csv'  # 假设这是你的数据文件路径
df = pd.read_csv(data_path, parse_dates=['datetime'])  # 假设'datetime'是时间戳列

# 确保时间戳被正确解析
df['datetime'] = pd.to_datetime(df['datetime'])

# 将时间戳转换为数值特征(例如,Unix时间戳)
df['timestamp'] = df['datetime'].apply(lambda x: x.timestamp())

# 定义特征和目标变量
# 这里我们使用前n个货币对作为特征来预测USD对HKD的汇率
features = list(df.columns[2:-1])  # 假设除了第一个时间戳列外的所有其他列都是特征
target = 'USD_to_HKD'

# 数据预处理
scaler = MinMaxScaler()
df[features] = scaler.fit_transform(df[features])
df[target] = scaler.fit_transform(df[[target]])

# 准备训练数据
class ExchangeRateDataset(Dataset):
    def __init__(self, features, target, seq_length=10):
        self.features = features
        self.target = target
        self.seq_length = seq_length
        self.data_size = len(features) - seq_length

    def __len__(self):
        return self.data_size

    def __getitem__(self, index):
        start_index = index
        end_index = start_index + self.seq_length
        feature_seq = self.features[start_index:end_index]
        target_val = self.target[end_index]
        return feature_seq, target_val

seq_length = 10  # 序列长度
X = df[features].values
y = df[target].values
dataset = ExchangeRateDataset(X, y, seq_length)

# 划分数据集
train_size = int(0.8 * len(dataset))
train_dataset, test_dataset = torch.utils.data.random_split(dataset, [train_size, len(dataset) - train_size])

train_loader = DataLoader(train_dataset, batch_size=32, shuffle=True)
test_loader = DataLoader(test_dataset, batch_size=32, shuffle=False)

# 定义GRU模型
class GRUModel(nn.Module):
    def __init__(self, input_dim, hidden_dim, output_dim, n_layers):
        super(GRUModel, self).__init__()
        self.hidden_dim = hidden_dim
        self.n_layers = n_layers
        self.gru = nn.GRU(input_dim, hidden_dim, n_layers, batch_first=True)
        self.fc = nn.Linear(hidden_dim, output_dim)

    def forward(self, x):
        h0 = torch.zeros(self.n_layers, x.size(0), self.hidden_dim).requires_grad_()
        out, (hn) = self.gru(x, (h0.detach()))
        out = self.fc(out[:, -1, :])
        return out

input_dim = len(features)
hidden_dim = 32
output_dim = 1
n_layers = 1

model = GRUModel(input_dim, hidden_dim, output_dim, n_layers)

# 损失函数和优化器
criterion = nn.MSELoss()
optimizer = torch.optim.Adam(model.parameters(), lr=0.01)

# 训练模型
n_epochs = 100
early_stopping = EarlyStopping(patience=10, verbose=True)

for epoch in range(n_epochs):
    model.train()
    for i, (seq, labels) in enumerate(train_loader):
        optimizer.zero_grad()
        seq = seq.float()
        labels = labels.float()
        y_pred = model(seq)
        loss = criterion(y_pred, labels)
        loss.backward()
        optimizer.step()

    early_stopping(loss, model)
    if early_stopping.early_stop:
        print("Early stopping")
        break

print(f"Training complete after {epoch+1} epochs.")

       这段代码展示了如何使用PyTorch来定义一个GRU模型,并使用给定的数据集进行训练。注意,实际应用时可能需要根据数据的具体情况进行调整,比如调整序列长度、隐藏层大小、层数、学习率等超参数。此外,这里使用了一个简单的早停策略来防止过拟合。