cryptoservice.models
cryptoservice.models
Classes
Freq
Bases: str
, Enum
频率枚举 s1: 1秒 m1: 1分钟 m3: 3分钟 m5: 5分钟 m15: 15分钟 m30: 30分钟 h1: 1小时 h2: 2小时 h4: 4小时 h6: 6小时 h8: 8小时 h12: 12小时 d1: 1天 d3: 3天 w1: 1周 M1: 1个月
Functions
from_binance(binance_interval: str) -> Freq
classmethod
从 Binance 间隔转换为 Freq 枚举
Source code in src/cryptoservice/models/enums.py
HistoricalKlinesType
Bases: IntEnum
K线历史数据类型枚举
Functions
to_binance(kline_type: HistoricalKlinesType) -> binance_enums.HistoricalKlinesType
classmethod
转换为 Binance SDK 的 HistoricalKlinesType
SortBy
Bases: Enum
排序方式枚举
Univ
Bases: str
, Enum
数据集枚举
ErrorSeverity
Bases: Enum
错误严重程度枚举
DailyMarketTicker(symbol: str, last_price: Decimal, price_change: Decimal, price_change_percent: Decimal, volume: Decimal, quote_volume: Decimal, weighted_avg_price: Decimal, prev_close_price: Decimal, bid_price: Decimal, ask_price: Decimal, bid_qty: Decimal, ask_qty: Decimal, open_price: Decimal, high_price: Decimal, low_price: Decimal, open_time: int, close_time: int, first_id: int, last_id: int, count: int)
dataclass
Bases: BaseMarketTicker
24小时行情数据类.
ATTRIBUTE | DESCRIPTION |
---|---|
symbol |
交易对
TYPE:
|
last_price |
最新价格
TYPE:
|
price_change |
价格变动
TYPE:
|
price_change_percent |
价格变动百分比
TYPE:
|
volume |
成交量
TYPE:
|
quote_volume |
成交额
TYPE:
|
weighted_avg_price |
加权平均价
TYPE:
|
prev_close_price |
前收盘价
TYPE:
|
bid_price |
买一价
TYPE:
|
ask_price |
卖一价
TYPE:
|
bid_qty |
买一量
TYPE:
|
ask_qty |
卖一量
TYPE:
|
open_price |
开盘价
TYPE:
|
high_price |
最高价
TYPE:
|
low_price |
最低价
TYPE:
|
open_time |
开盘时间
TYPE:
|
close_time |
收盘时间
TYPE:
|
first_id |
第一个ID
TYPE:
|
last_id |
最后一个ID
TYPE:
|
count |
计数
TYPE:
|
KlineIndex
K线数据索引定义
ATTRIBUTE | DESCRIPTION |
---|---|
OPEN_TIME |
开盘时间
|
OPEN |
开盘价
|
HIGH |
最高价
|
LOW |
最低价
|
CLOSE |
收盘价
|
VOLUME |
成交量
|
CLOSE_TIME |
收盘时间
|
QUOTE_VOLUME |
成交额
|
TRADES_COUNT |
成交笔数
|
TAKER_BUY_VOLUME |
买方成交量
|
TAKER_BUY_QUOTE_VOLUME |
买方成交额
|
IGNORE |
忽略
|
KlineMarketTicker(symbol: str, last_price: Decimal, open_price: Decimal, high_price: Decimal, low_price: Decimal, volume: Decimal, close_time: int)
dataclass
Bases: BaseMarketTicker
K线行情数据类.
ATTRIBUTE | DESCRIPTION |
---|---|
symbol |
交易对
TYPE:
|
last_price |
最新价格
TYPE:
|
open_price |
开盘价
TYPE:
|
high_price |
最高价
TYPE:
|
low_price |
最低价
TYPE:
|
volume |
成交量
TYPE:
|
close_time |
收盘时间
TYPE:
|
PerpetualMarketTicker(symbol: str, open_time: int, raw_data: List[Any])
永续合约市场数据模型.
轻量级实现,使用 slots 来优化内存使用.
ATTRIBUTE | DESCRIPTION |
---|---|
symbol |
str # 交易对名称
|
open_time |
int # K线开始时间戳(毫秒)
|
raw_data |
List[Any] # 原始K线数据
|
Source code in src/cryptoservice/models/market_ticker.py
Functions
from_binance_futures(symbol: str, kline: List[Any]) -> PerpetualMarketTicker
classmethod
从 Binance 永续合约K线数据创建实例.
PARAMETER | DESCRIPTION |
---|---|
symbol
|
交易对名称
TYPE:
|
kline
|
Binance K线数据列表 [ Open time, Open, High, Low, Close, Volume, Close time, Quote asset volume, Number of trades, Taker buy base asset volume, Taker buy quote asset volume, Ignore
TYPE:
|
Source code in src/cryptoservice/models/market_ticker.py
SymbolTicker(symbol: str, last_price: Decimal)
dataclass
Bases: BaseMarketTicker
单个交易币的行情数据类.
ATTRIBUTE | DESCRIPTION |
---|---|
symbol |
交易对
TYPE:
|
last_price |
最新价格
TYPE:
|
UniverseConfig(start_date: str, end_date: str, t1_months: int, t2_months: int, t3_months: int, delay_days: int, quote_asset: str, top_k: int | None = None, top_ratio: float | None = None)
dataclass
Universe配置类.
ATTRIBUTE | DESCRIPTION |
---|---|
start_date |
开始日期 (YYYY-MM-DD)
TYPE:
|
end_date |
结束日期 (YYYY-MM-DD)
TYPE:
|
t1_months |
T1时间窗口(月),用于计算mean daily amount
TYPE:
|
t2_months |
T2滚动频率(月),universe重新选择的频率
TYPE:
|
t3_months |
T3合约最小创建时间(月),用于筛除新合约
TYPE:
|
delay_days |
延迟天数
TYPE:
|
quote_asset |
计价币种
TYPE:
|
top_k |
选取的top合约数量
TYPE:
|
top_ratio |
选取的top合约比率 (例如 0.8 表示 top 80%)
TYPE:
|
Functions
to_dict() -> dict[str, Any]
转换为字典格式
Source code in src/cryptoservice/models/universe.py
UniverseDefinition(config: UniverseConfig, snapshots: list[UniverseSnapshot], creation_time: datetime, description: str | None = None)
dataclass
Universe定义类,包含完整的universe历史.
ATTRIBUTE | DESCRIPTION |
---|---|
config |
Universe配置
TYPE:
|
snapshots |
时间序列的universe快照列表
TYPE:
|
creation_time |
创建时间
TYPE:
|
description |
描述信息
TYPE:
|
Functions
to_dict() -> dict[str, Any]
转换为字典格式
Source code in src/cryptoservice/models/universe.py
from_dict(data: dict[str, Any]) -> UniverseDefinition
classmethod
从字典创建Universe定义
Source code in src/cryptoservice/models/universe.py
save_to_file(file_path: Path | str) -> None
保存universe定义到文件
Source code in src/cryptoservice/models/universe.py
load_from_file(file_path: Path | str) -> UniverseDefinition
classmethod
从文件加载universe定义
get_symbols_for_date(target_date: str, date_type: str = 'usage') -> list[str]
获取指定日期的universe交易对列表
PARAMETER | DESCRIPTION |
---|---|
target_date
|
目标日期 (YYYY-MM-DD)
TYPE:
|
date_type
|
日期类型, "usage" (默认) 或 "effective". - "usage": 查找覆盖该使用日期的快照 - "effective": 查找在该生效日期生成的快照
TYPE:
|
RETURNS | DESCRIPTION |
---|---|
list[str]
|
List[str]: 该日期对应的交易对列表 |
Source code in src/cryptoservice/models/universe.py
get_snapshot_for_date(target_date: str, date_type: str = 'usage') -> UniverseSnapshot | None
获取指定日期的UniverseSnapshot
PARAMETER | DESCRIPTION |
---|---|
target_date
|
目标日期 (YYYY-MM-DD)
TYPE:
|
date_type
|
日期类型, "usage" (默认) 或 "effective".
TYPE:
|
RETURNS | DESCRIPTION |
---|---|
UniverseSnapshot | None
|
UniverseSnapshot | None: 对应的快照,如果未找到则返回None |
Source code in src/cryptoservice/models/universe.py
get_schema() -> dict[str, Any]
classmethod
获取Universe定义的JSON Schema
RETURNS | DESCRIPTION |
---|---|
Dict
|
JSON Schema定义
TYPE:
|
Source code in src/cryptoservice/models/universe.py
491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 |
|
get_schema_example() -> dict[str, Any]
classmethod
获取Universe定义的示例数据
RETURNS | DESCRIPTION |
---|---|
Dict
|
符合schema的示例数据
TYPE:
|
Source code in src/cryptoservice/models/universe.py
export_schema_to_file(file_path: Path | str, include_example: bool = True) -> None
导出schema定义到文件
PARAMETER | DESCRIPTION |
---|---|
file_path
|
输出文件路径
TYPE:
|
include_example
|
是否包含示例数据
TYPE:
|
Source code in src/cryptoservice/models/universe.py
validate_against_schema() -> dict[str, Any]
验证当前universe定义是否符合schema
RETURNS | DESCRIPTION |
---|---|
Dict
|
验证结果
TYPE:
|
Source code in src/cryptoservice/models/universe.py
UniverseSnapshot(effective_date: str, start_date: str, end_date: str, start_date_ts: str, end_date_ts: str, calculated_t1_start: str, calculated_t1_end: str, calculated_t1_start_ts: str, calculated_t1_end_ts: str, symbols: list[str], mean_daily_amounts: dict[str, float], metadata: dict[str, Any] | None = None)
dataclass
Universe快照类,表示某个时间点的universe状态.
ATTRIBUTE | DESCRIPTION |
---|---|
effective_date |
生效日期(重平衡日期,通常是月末)
TYPE:
|
start_date |
实际下载数据开始时间
TYPE:
|
end_date |
实际下载数据结束日期
TYPE:
|
start_date_ts |
实际使用开始时间戳 (毫秒)
TYPE:
|
end_date_ts |
实际使用结束时间戳 (毫秒)
TYPE:
|
calculated_t1_start |
数据计算周期开始日期(T1回看的开始日期)
TYPE:
|
calculated_t1_end |
数据计算周期结束日期(通常等于重平衡日期)
TYPE:
|
calculated_t1_start_ts |
数据计算周期开始时间戳 (毫秒)
TYPE:
|
calculated_t1_end_ts |
数据计算周期结束时间戳 (毫秒)
TYPE:
|
symbols |
该时间点的universe交易对列表(基于period内数据计算得出)
TYPE:
|
mean_daily_amounts |
各交易对在period内的平均日成交量
TYPE:
|
metadata |
额外的元数据信息
TYPE:
|
Note
在月末重平衡策略下: - effective_date: 重平衡决策的日期(如2024-01-31) - period: 用于计算的数据区间(如2023-12-31到2024-01-31) - 含义: 基于1月份数据,在1月末选择2月份的universe
Functions
create_with_inferred_periods(effective_date: str, t1_months: int, symbols: list[str], mean_daily_amounts: dict[str, float], metadata: dict[str, Any] | None = None, next_effective_date: str | None = None) -> UniverseSnapshot
classmethod
创建快照并自动推断周期日期和时间戳
根据重平衡日期(effective_date)和回看窗口(t1_months), 自动计算数据计算的时间区间和对应的时间戳。
PARAMETER | DESCRIPTION |
---|---|
effective_date
|
重平衡生效日期(建议使用月末日期)
TYPE:
|
t1_months
|
T1时间窗口(月),用于回看数据计算
TYPE:
|
symbols
|
交易对列表
TYPE:
|
mean_daily_amounts
|
平均日成交量(基于计算周期内的数据)
TYPE:
|
metadata
|
元数据
TYPE:
|
next_effective_date
|
下一次重平衡日期(用于确定使用周期结束日期)
TYPE:
|
RETURNS | DESCRIPTION |
---|---|
UniverseSnapshot
|
带有推断周期日期和时间戳的快照
TYPE:
|
Example
对于月末重平衡策略: effective_date="2024-01-31", t1_months=1 -> period: 2023-12-31 to 2024-01-31 (用于计算universe) -> usage: 2024-02-01 to 2024-02-29 (实际使用期间) 含义:基于1月份数据,在1月末选择2月份universe
Source code in src/cryptoservice/models/universe.py
create_with_dates_and_timestamps(usage_t1_start: str, usage_t1_end: str, calculated_t1_start: str, calculated_t1_end: str, symbols: list[str], mean_daily_amounts: dict[str, float], metadata: dict[str, Any] | None = None) -> UniverseSnapshot
classmethod
创建快照,明确指定所有日期和时间戳
PARAMETER | DESCRIPTION |
---|---|
usage_t1_start
|
实际使用开始日期
TYPE:
|
usage_t1_end
|
实际使用结束日期
TYPE:
|
calculated_t1_start
|
数据计算周期开始日期
TYPE:
|
calculated_t1_end
|
数据计算周期结束日期
TYPE:
|
symbols
|
交易对列表
TYPE:
|
mean_daily_amounts
|
平均日成交量
TYPE:
|
metadata
|
元数据
TYPE:
|
RETURNS | DESCRIPTION |
---|---|
UniverseSnapshot
|
快照实例
TYPE:
|
Source code in src/cryptoservice/models/universe.py
validate_period_consistency(expected_t1_months: int) -> dict[str, Any]
验证周期日期的一致性
检查存储的period日期是否与预期的T1配置一致。 适用于月末重平衡和其他重平衡策略。
PARAMETER | DESCRIPTION |
---|---|
expected_t1_months
|
期望的T1月数
TYPE:
|
RETURNS | DESCRIPTION |
---|---|
Dict
|
验证结果,包含一致性检查和详细信息
TYPE:
|
Source code in src/cryptoservice/models/universe.py
to_dict() -> dict[str, Any]
转换为字典格式
Source code in src/cryptoservice/models/universe.py
get_period_info() -> dict[str, str]
获取周期信息
RETURNS | DESCRIPTION |
---|---|
Dict
|
包含周期相关的详细信息
TYPE:
|
Source code in src/cryptoservice/models/universe.py
get_usage_period_info() -> dict[str, str]
获取Universe使用周期信息
返回该快照对应的实际使用期间和计算期间。
RETURNS | DESCRIPTION |
---|---|
Dict
|
包含两个关键时间范围的信息
TYPE:
|
Source code in src/cryptoservice/models/universe.py
IntegrityReport(total_symbols: int, successful_symbols: int, failed_symbols: List[str], missing_periods: List[Dict[str, str]], data_quality_score: float, recommendations: List[str])
dataclass
数据完整性报告