核心概念
- 金库在毕业时获得募资的 30%(以股票计),只能在上架指定的池子中、健康门打开时以这只股票与 USDG 进行交易。
- 七种策略:分批止盈、回购销毁、固定仓位、再平衡、按比例回购、循环、预留现金的分批止盈;均在发射时冻结,owner 只能通过两天控制器升级逻辑。
- keeper 是任何人都可以运行的机器人,负责发送每个动作并获得产出的 0.1%;金库的收益用于回购代币并销毁。
- 持币人对金库本身没有索取权(目前没有,后续可以增加)。分批止盈、再平衡、循环有回测模型,其余没有。
金库模型
一次发射创建一个金库。毕业时金库获得募资的 30%(以股票计),运行发币人在发射前选定的一种策略。金库只能在上架指定的池子中, 以这只股票与 USDG 进行交易,且仅在健康门打开时交易:Chainlink 价格新鲜、交易日历显示开盘、池价与这个价格和池子自身 600 秒 均价的偏差都在 0.5% 以内、每笔交易在偏离价格 1% 的滑点限制内成交。休市、价格过期或池价被推离时,股票一侧的交易即暂停;代币一侧 照常交易。
所有策略共用一套基础流程。keeper 是任何人都可以运行的机器人,动作到期即发送,获得动作产出的 0.1%(bountyBps 10)。通过税收份额或捐赠转入的
股票计为收入,须先由 book() 按当时价格记账,策略方可使用。留作销毁的股票存放在 buybackStock;buyback() 用其在代币自身的池子中
买入代币,最多每 10 秒一次,按池子 600 秒均价定价、价格冲击不超过 3%,买入的代币全部销毁。买入侧的池子手续费由 collectFees() 记入
buybackStock,卖出侧的池子手续费由同一次调用销毁。被销毁的共有三项:开盘加价、回购、池子手续费的代币一侧。
七种策略
分批止盈(Lots,类型 0)
持有股票,上涨至目标价时卖出一部分,回落后再买回。所得利润用于买入代币并销毁。
毕业股票按当日价格记为一个 lot。价格高出成本 tp1Bps 时卖出一半,再高出 tp2Bps 时卖出其余;本金换回 USDG,利润以股票形式留待
销毁。价格比上次卖出价低 dipBps 时,以 USDG 的 lotBps 买入一个新 lot。止损为可选项,是 lot 低于成本卖出的唯一途径。
动作:上涨:tp1Bps 时卖出半个 lot,tp2Bps 时卖出其余;下跌:比上次卖出价低 dipBps 时买入新 lot;设置止损时,低于成本 stopBps 卖出;费用到账:记为新 lot;buyback() 每次使用 500 USDG 的利润(buybackChunkUsdg)。 发射时冻结:上表中的每个数字,以及上架的门限。owner 可通过两天控制器升级的:仅逻辑;升级必须沿用相同的冻结配置。回测模型:有。
| 字段 | 含义 | 范围或下限 | 发布默认值 |
|---|---|---|---|
tp1Bps | 第一档止盈,高于成本 | 大于 0;没有执行成本下限 | 发币人定 |
tp2Bps | 第二档止盈 | 0(整个 lot 在 tp1Bps 卖出),或大于 tp1Bps | 发币人定 |
dipBps | 触发买入的回调幅度,即低于上次卖出价的幅度 | 0 到 100% 之间 | 发币人定 |
stopBps | 低于成本卖出;0 = 永不 | 小于 100% | 发币人定 |
lotBps | 一次回调买入所用的 USDG 储备份额 | 发币人定 | |
buybackChunkUsdg | 一次回购的出价 | 500 USDG |
回购销毁(Buy-back,类型 1)
股票始终持有不动。每一笔手续费都用于买入代币并销毁。
金库不开设股票仓位。毕业股票受保护,永不支出。每笔税收份额、池子手续费和捐赠均计入 buybackStock,由 buyback() 分块销毁。动作:上涨或下跌:不操作;费用到账:由 buyback() 支出,每 10 秒一块。 冻结:受保护的毕业股票和回购节奏。可升级:仅逻辑。回测模型:无。
| 字段 | 含义 | 范围或下限 | 发布默认值 |
|---|---|---|---|
stopBps | 接受;非零值必须大于滑点 + 池费率 + 报酬 | 0 | |
tp1Bps、tp2Bps、dipBps、lotBps | 接受但忽略 |
固定仓位(Spot,类型 2)
股票和现金按固定比例持有,例如股票七成、现金三成。上涨较多时少量卖出,下跌较多时少量买入,每次按固定金额交易。 金库将可交易价值的目标比例以股票形式持有,比例偏出目标周围的区间时通过交易恢复。由一个 policy 合约提议动作,金库依据冻结的限制核对 后再执行兑换。单笔规模为固定的 USDG 金额。
动作:上涨:股票占比越过 targetBps + 区间:卖出至目标;高于平均成本的收益按 payoutBps 计入 buybackStock;下跌:股票占比跌破 targetBps − 区间:买入至目标;费用到账:按当时价格记入库存。 冻结:六个字段和 policy。可升级:仅逻辑。回测模型:无。
| 字段 | 含义 | 范围或下限 | 发布默认值 |
|---|---|---|---|
targetBps | 持有股票的可交易价值份额 | 20% 到 90% | 发币人定 |
deadbandBps | 目标周围的区间 | 至少 2 × (滑点 + 池费率 + 报酬);小于目标;目标 + 区间小于 100% | 发币人定 |
cooldown | 两次动作的最短间隔 | 60 秒 | 前端建议 600 秒 |
payoutBps | 卖出收益中送去销毁的份额 | 0 到 100% | 发币人定 |
maxTradeUsdg | 单次动作的最大交易额 | 上架的 minLotUsdg(5 USDG)到 sellChunkUsdg(2,000 USDG) | 发币人定 |
maxDailyTurnoverUsdg | 一个美股交易日的最大交易额 | maxTradeUsdg 到 24 × maxTradeUsdg | 发币人定 |
再平衡(Rebalance,类型 3)
同样按固定比例持有,每次调整持仓的一定百分比,金库规模越大,单笔交易越大。 卖出所得净现金先用于覆盖卖出部分的成本和已记录的亏损,剩余收益方用于销毁。
动作:上涨:卖出超出目标的部分,一次最多为可交易股票的 sellBps;下跌:买入至目标,一次最多为可用 USDG 的 buyBps;费用到账:按当时价格记入库存。 冻结:全部字段和 policy。可升级:仅逻辑。回测模型:有。
| 字段 | 含义 | 范围或下限 | 发布默认值 |
|---|---|---|---|
targetBps | 持有股票的可交易价值份额 | 20% 到 90% | 发币人定 |
| 区间 | 目标周围的区间 | 至少池费率 + 报酬;小于目标;目标 + 区间小于 100% | 发币人定 |
cooldown | 两次动作的最短间隔 | 60 秒 | 前端建议 600 秒 |
payoutBps | 卖出收益中送去销毁的份额 | 0 到 100% | 发币人定 |
buyBps、sellBps | 单次上限,按现金或可交易股票的份额计 | 0.01% 到 25% | 发币人定 |
| 当日买入、当日卖出 | 当日上限,各自采用对应的基数 | 0.01% 到 100% | 发币人定 |
按比例回购(类型 4)
交易方式与分批止盈相同,只是每次回购仅使用回购预算的十分之一。
相对分批止盈只改动一处:每次 buyback() 支出待用 buybackStock 的十分之一,不足上架最小 lot 时提高至最小 lot,因此任何规模的预算都在相同
的步数内出清。
参数:tp1Bps、tp2Bps、dipBps、lotBps 同分批止盈;非零 stopBps 必须大于滑点 + 池费率 + 报酬;回购份额固定为 10%。
冻结与可升级:同分批止盈。回测模型:交易规则沿用分批止盈的模型。
循环(Cycle,类型 5)
交易方式与分批止盈相同,卖出后股票若继续上涨,再买回一次。
在分批止盈基础上增加一次再入场:一次实际卖出之后,价格比该次卖出价高 dipBps 时再买入一次,规模与回调买入相同,前提是已过至少 600 秒且有更新的
价格报告。任何一次买入都会消耗这一入场机会。回购每次支出预算的十分之一,与按比例回购相同。
动作:上涨:止盈同分批止盈;卖出后价格再高出 dipBps,回补买入一次;下跌:回调买入同分批止盈;设置止损时执行止损;费用到账:记为 lot;回购每次十分之一。 档位下限由金库自行检查,报价环节不检查:低于下限的报价会被接受,但在发射时失败。冻结与可升级:同分批止盈。回测模型:有。
| 字段 | 含义 | 范围或下限 | 发布默认值 |
|---|---|---|---|
tp1Bps、dipBps | 同分批止盈 | 至少 2 × (滑点 + 池费率):1% 滑点默认值下,0.05% 的池 2.1%,0.30% 的池 2.6% | 发币人定 |
tp2Bps、lotBps | 同分批止盈 | 同分批止盈 | 发币人定 |
stopBps | 同分批止盈;非零值必须大于滑点 + 池费率 + 报酬 | 发币人定 |
预留现金的分批止盈(Lots with reserve,类型 6)
交易方式与分批止盈相同,只是先将一部分毕业股票换成现金,以便第一次下跌时即可抄底。
毕业时金库获得确切的股票本金,其中 reserveBps 为储备目标。没有到期的止损或止盈时,keeper 每次调用将毕业股票卖出一块换成
USDG(上架的 sellChunkUsdg,偏离预言机不超过 maxSlippageBps,从不按仅由池子担保的价格),并将抄底参考价移至此次卖出价。卖出所得
为储备而非利润,从不用于回购。目标份额卖出完毕后,规则即为分批止盈,抄底使用储备现金。
动作:毕业后:分块卖出毕业股票,直至其中 reserveBps 转为现金;上涨:止盈同分批止盈;下跌:使用储备抄底,同分批止盈,受可选
限额约束;设置止损时执行止损;费用到账:记为 lot;buyback() 每次使用 500 USDG 的利润,同分批止盈。档位下限同循环,检查方式也相同。
冻结与可升级:同分批止盈。回测模型:没有。
| 字段 | 含义 | 范围或下限 | 发布默认值 |
|---|---|---|---|
tp1Bps、dipBps | 同分批止盈 | 至少 2 × (滑点 + 池费率),同循环 | 发币人定 |
tp2Bps、lotBps、stopBps | 同分批止盈 | 同分批止盈 | 发币人定 |
reserveBps | 卖出作为储备现金的毕业股票份额 | 0 到 50%;0 即普通分批止盈;超过 50% 发射回滚 | 发币人定 |
cashFloorBps | 抄底时必须保留的现金 | 0 到 100%;0 = 不设底线 | 0 |
dipBudgetBps | 金库存续期内所有抄底的支出上限 | 0 到 100%;0 = 不设预算 | 0 |
maxDipBuys | 金库存续期内的抄底次数上限 | 0 = 不限 | 0 |
底线和预算均按毕业股票的 USDG 价值计,在毕业记账时冻结;之后的卖出、费用和价格变化均不改变它们。配置为 engine 版本 3、schema 4,
搭配 V2LotReservePolicy:words[0] 是 reserveBps,words[1] 打包 cashFloorBps(0 到 15 位)、dipBudgetBps(16 到 31 位)和
maxDipBuys(32 到 47 位),words[2] 为零。
策略比较
毕业时金库仅获得股票,USDG 为零。固定仓位和再平衡在第一次动作时即将股票卖至目标比例,换出现金;预留现金的分批止盈在毕业后 分块卖出选定的份额;分批止盈、按比例回购和循环须等到第一次止盈或止损,才有现金用于抄底;回购销毁从不持有现金。
| 分批止盈 | 回购销毁 | 固定仓位 | 再平衡 | 按比例回购 | 循环 | 预留现金的分批止盈 | |
|---|---|---|---|---|---|---|---|
| 能否持有、使用现金 | 能,回调时以现金买入新 lot | 不持有,股票不交易 | 能,按目标比例管理 | 能,按目标比例管理 | 能,同分批止盈 | 能,同分批止盈 | 能,毕业时建立储备 |
| 毕业后的现金来源 | 等待止盈或止损卖出;不主动建立初始现金仓 | 不卖出股票,没有现金仓 | 股票占比高于目标时主动卖出换成 USDG,无需等待止盈;每次最多 maxTradeUsdg | 同固定仓位;每次最多卖出可交易股票的 sellBps | 同分批止盈 | 先通过止盈或止损获得现金,再抄底或回补;初始仍为零现金 | 毕业后分块卖出毕业股票的 reserveBps(0 到 50%);之后同分批止盈 |
| 下跌时持有股票 | 是,抄底 | 是,从不交易 | 买回目标 | 买回目标 | 是,抄底 | 是,抄底 | 是,用储备抄底 |
| 上涨时卖出 | 两档目标 | 不卖出 | 超出目标的部分 | 超出目标的部分 | 两档目标 | 两档目标 | 两档目标 |
| 卖出后再买回 | 只在回调时 | 不买 | 跌破区间时 | 跌破区间时 | 只在回调时 | 回调时,或继续上涨时 | 回调时,包括第一次 |
| 回购预算来源 | 利润、池子手续费 | 全部收入 | 收益份额、池子手续费 | 收益份额、池子手续费 | 利润、池子手续费 | 利润、池子手续费 | 利润、池子手续费 |
| 回测模型 | 有 | 没有 | 没有 | 有 | 沿用分批止盈 | 有 | 没有 |
后续可能增加的功能
以下各项均处于计划或考虑阶段,后续可以增加;均不构成承诺。
- 分红和收入策略。 将已实现收入支付给持币人或质押者的金库,已存在于源码中,尚未注册。这类金库的持币人将对其收入拥有索取权; 现有的代理金库可以通过升级采用。
- 按净值的百分比再平衡。 交易限额按全部资产(包括金库自身的 LP 和等待回购的预算)的比例计算,而不仅按可交易部分; 目前仅有源码和测试,尚未注册。
- 去掉循环的档位下限。 使循环采用分批止盈的成本检查,0.01% 的档位也可以发射;计划于 v2.1 推出。
- 用 ETH 代替股票配对的发射。 计划为 v2.1:曲线和池子以 WETH 报价;持币人承担 ETH 的价格涨跌。
- 把池子手续费再投入流动性。 池子手续费用于加深锁定的池子,取代为回购提供资金。
- Builder 一键预设。 具名策略可直接填好发射表单,数字仍可修改。