#exchange #trading #leverage #market-data #order-book #backest

lfest

用于模拟交易和回测的杠杆永续期货交易所

195次发布 (66次破坏)

新功能 0.73.2 2024年8月22日
0.72.0 2024年8月3日
0.71.4 2024年7月31日
0.45.0 2024年2月27日
0.5.7 2021年3月29日

#7 in 金融

Download history 362/week @ 2024-05-02 42/week @ 2024-05-09 5/week @ 2024-05-16 2/week @ 2024-05-23 865/week @ 2024-05-30 1276/week @ 2024-06-06 301/week @ 2024-06-13 1055/week @ 2024-06-20 229/week @ 2024-06-27 510/week @ 2024-07-04 5/week @ 2024-07-11 404/week @ 2024-07-18 816/week @ 2024-07-25 786/week @ 2024-08-01 22/week @ 2024-08-08 109/week @ 2024-08-15

每月下载 1,788

自定义许可

505KB
6K SLoC

模拟交易杠杆期货交易所(LFEST)

☢️ 这是一个个人项目,使用时请自行承担风险。

lfest-rs 是一个具有杠杆头寸能力的模拟永续期货交易所。
您可以通过 MarketUpdate 枚举提供外部市场数据来更新 MarketState。您提供的是买卖价格或来自 蜡烛图 的信息。
宏(bbacandle)使得构建具体变体变得容易。
为了简化(以及性能),交易所不使用订单簿。
可以使用 ConfigContractSpecification 配置交易所。

特性

  • 💱 使用 fpdec crate 进行定点数算术,以实现超级快速且精确的数值计算。
  • 🧠 使用 newtype 模式 在函数边界强制执行正确的类型。
    示例包括
    BaseCurrency,
    QuoteCurrency,
    Fee,
    Leverage.
    这使得无法错误地将表示 USD 的值输入到期望表示 BTC 的值的函数中。
  • 📡 通过 MarketUpdate 类型及其相关宏实现灵活的市场数据集成。
  • 💹 集成性能跟踪。
    使用现有的 FullAccountTracker
    或者使用自己的 AccountTracker 特性。
  • ✔️ 良好的测试覆盖率和高频断言,以确保正确性。
  • 🔍 由于代码库小且简洁,因此可审计。
  • 📃 支持使用 linearinverse 期货合约。
  • ⛔ 订单过滤以确保价格和数量遵循某些规则。参见
    PriceFilter
    QuantityFilter
  • IsolatedMarginRiskEngine
  • 使用双重记账法以确保会计等式始终成立。

订单类型

支持以下订单类型:

  • Market:积极执行最佳买入/卖出报价
  • Limit:被动地将订单放入订单簿

性能指标

当使用 FullTrack AccountTracker 时,以下性能指标可用,
但您也可以通过实现 AccountTracker 特性来自定义任何性能指标。

  • win_ratio:胜利次数 / 总交易次数
  • profit_loss_ratio:平均胜利金额 / 平均损失金额
  • total_rpnl:总实现盈亏
  • sharpe:年化夏普比率
  • sortino:年化特林诺比率
  • cumulative fees:支付给交易所的总额度费用
  • max_drawdown_wallet_balance:钱包余额从高点下降的最大比例。
  • max_drawdown_total:包括未实现盈亏的回撤。
  • max_drawdown_duration:最长回撤的持续时间。
  • num_trades:执行的总交易次数。
  • turnover:执行的总数量。
  • trade_percentage:交易次数 / 总交易机会次数
  • buy_ratio:购买次数 / 总交易次数
  • limit_order_fill_ratio
  • limit_order_cancellation_ratio
  • historical_value_at_risk
  • cornish_fisher_value_at_risk
  • d_ratio

可能还有其他我遗漏的指标。其中一些指标的表现可能与你预期的不同,所以请确保查看代码。

如何使用

要在您的项目中使用此包,请在您的 Cargo.toml 中添加以下内容

[dependencies]
lfest = "*" # or lookup newest version on `crates.io`

然后继续在您的代码中使用它。有关示例,请参阅 示例

TODOs

  • 适当的清算(参见 update_stateExchange
  • 订单簿支持(使用 MatchingEngine
  • 资金利率(支持 settle_funding_periodClearingHouse
  • 多个账户(低优先级)
  • 多个市场(低优先级)
  • 多市场类似 SPAN 的投资组合 RiskEngine
  • 支持更新头寸的杠杆。
  • 支持自动去杠杆化
  • 基准测试
  • 更多单元测试。
  • 模糊测试?

贡献

非常愿意看到您使用并为此项目做出贡献。即使只是添加更多测试也是受欢迎的。

捐赠 💰 💸

如果您想支持此包的开发,请随时发送捐赠

Monero (XMR) 地址

47xMvxNKsCKMt2owkDuN1Bci2KMiqGrAFCQFSLijWLs49ua67222Wu3LZryyopDVPYgYmAnYkSZSz9ZW2buaDwdyKTWGwwb

monero

许可证

版权 (C) 2020 <Mathis Wellmann [email protected]>

本程序是自由软件:您可以按照自由软件基金会发布的 GNU Affero 通用公共许可证的条款重新分发和/或修改它,许可证版本为 3 或(根据您的选择)任何较新版本。

本程序以供使用为目的进行分发,但没有任何保证;甚至没有对商售性或特定用途适用性的暗示性保证。有关更多信息,请参阅GNU Affero通用公共许可证。

您应该已经随本程序收到了一份GNU Affero通用公共许可证的副本。如果没有,请参阅https://www.gnu.org/licenses/

GNU AGPLv3

依赖项

~5–13MB
~139K SLoC