# Alpaca Finance 自动化金库研究

By [mazemax](https://paragraph.com/@mazemax) · 2022-05-13

---

1\. **项目简介**

Alpaca Finance（羊驼金融）是部署在BSC和Fantom上的DeFi项目，主要融合了借贷（lending）、流动性挖矿（Yield Farming）等内容，其特点是为用户提供了杠杠流动性挖矿（Leverage Yield Darming, LYF）服务且结合自身代币经济体系为用户带来更高的挖矿收益。Alpaca Finance采用开杠杆的方式为DeFi世界解决两个问题。首先，小资金量用户参与流动性挖矿收益低，而使用杠杆来允许用户从借贷池中贷出一部分资金参与挖矿，放大了小资金量用户的收益。第二，不同于Compound, Aave等主流Lending协议采用的超额抵押，杠杆的方式同样增加了借贷池中的资金利用率。另外，使用杠杆的同时放大了用户的挖矿收益，但同时也放大了用户的风险。例如在借出资产价格波动性行情下，用户的贷款价值（Debt Value）接近其头寸（Position Value）价值，导致其被强制平仓，从而本金遭受损失。

  

在新版本中，为最大程度降低杠杆挖矿中用户被清算的风险，同时保持稳定的挖矿收益。Alpaca Finance推出了最新的“自动化金库”服务，采用同时开立多空两个仓位对冲资产价格波动导致的杠杆风险。“自动化金库”主要使用了两种策略，包括市场中性策略（Delta Neutral Vault）和Saving Neutral Vault。目前，市场中性策略已经被部署使用，允许用户最多开立8倍杠杆进行流动性挖矿。

  

(1) **术语**

\*\*Ib Token：\*\*计息代币，用户向借贷池中提供流动性的凭证，随着用户持有的时间越长，ib Token的价值越高，也就是累计的利息收益越高。Ib代币是fork Compound协议中的cToken的实现。

\*\*Position Value：\*\*仓位价值，也就是头寸价值。挖矿仓位的价值， 保证金 + 借入的资产 + 挖矿产出价值（LP代币价值）。

\*\*Debt Value：\*\*债务价值。债务本金和借款利息的总和。

\*\*Equity Value：\*\*权益价值。指如果平仓后以借入的资产能够期望获得的资产价值，也就是保证金价值。权益价值 = 仓位价值 - 债务价值

\*\*Debt Ratio：\*\*债务比率 = 债务价值/仓位价值

\*\*Liquidation Threshold：\*\*清算阈值。债务比率的临界值，一旦超过这个临界值，仓位进入清算环节。由于不同代币的价格波动性差异，相对稳定的代币对的清算阈值设定较高，例如BNB-ETH-LP为83.3%，而USDT-BUSD-LP挖矿的清算阈值为92%。

![](https://storage.googleapis.com/papyrus_images/ca479768c97d7859974a23b34768943f6be9816a0fd5a4b79def1c6cdf2243f6.png)

(2) **示例**

a. Alice 使用 3 倍杠杆建立 BNB-USDT 挖矿仓位

b. 她提供了 10 个BNB的自有资产（价值 3000 USDT），这是她的保证金，也就是权益价值。

c. 她借了 6000 USDT（是她提供的2倍），这是她的债务价值。

d. Alpaca协议将所有存入和借入的代币转换为 50:50 的比例，以创造用于挖矿的 LP 代币：15 BNB + 4500 USDT或总价值 30 BNB，这是她的仓位价值。**由于是卖出了其中的1500 USDT来买入5 BNB，所以这个仓位的净风险是做多了15 BNB。**

e. Alice 此时仓位的债务比率（负债/仓位价值）是约 66%（20 BNB/30 BNB）。如果在某一时刻，BNB价格下跌 > 36%，那么 Alice 的债务比率将超过 83.3%（BNB-USDT 池的清算阈值）。然后，清算机器人将调用智能合约来关闭她的仓位，偿还贷款和利息，并将任何剩余的资产以借来USDT的形式返还至她的钱包。

![](https://storage.googleapis.com/papyrus_images/cd5e4bffa83ae4e49af580df4e1078a69c9c0a0ac93c4bd104cec077e46a8b89.png)

![](https://storage.googleapis.com/papyrus_images/4ba5efb88f34e3e740db5fe9a521f83f92269556b4bd21c010378902720abd23.png)

2\. **旧版本**

(1) **技术架构**

a. **Alpaca代币产出**

![](https://storage.googleapis.com/papyrus_images/b0ce7f035212787b928a6518512ac732b07802db7262b1fa36567a21933c49e6.png)

Alpaca代币产出合约为FairLaunch，该合约是fork MasterChef合约挖矿逻辑实现的。为了鼓励用户向资金池中提供流动性，用户可以把流动性质押凭证ib Token质押在FairLaunch中，然后根据每个区块和质押权重给予用户Alpaca代币奖励。FairLaunch合约支持多种单币和LP代币，且每个质押池挖矿效率不同。

  

struct PoolInfo {

    address stakeToken; // 该池子质押代币地址

    uint256 allocPoint; // 该池子的Alpaca代币产出权重值，除以totalAlloPoint为挖矿效率

    uint256 lastRewardBlock; // 上一次触发分配奖励的时间戳
    
    uint256 accAlpacaPerShare; // 每枚质押代币累计的Alpaca挖矿奖励
    

    uint256 accAlpacaPerShareTilBonusEnd; // 在前期奖励周期中每枚代币的Alpaca累计奖励

  }

  

b. **杠杆挖矿**

![](https://storage.googleapis.com/papyrus_images/2092d9b54f4fcf75b9e47e5cf8c6e023222fdd3df69589cb66e2506f166d2312.png)

**角色：**

Vault：代币金库合约。允许用户出借或赎回代币，发放ib Token作为质押凭证（Shares）

FairLaunch：Alpaca代币挖矿合约。开通了多个代币质押挖矿池，产出Alpaca代币作为出借人或杠杆挖矿收益。

Liquidator：清算人。实时监听仓位健康度，必要时执行仓位清算。

Worker：仓位管理员合约。代替用户执行杠杆流动性挖矿开仓、平仓等操作。对于一个代币&一个DEX，都有一个专门的Worker接入。

Reinvestor：复投管理员。将DEX挖矿收益卖出并复投进资金池。

Strategy：策略合约。执行开仓、调仓、平仓时的策略逻辑，由Worker合约触发。

DEX：Alpaca对接的主流DEX协议，基本是fork Uniswap V2的实现。由策略合约触发DEX的Router合约，来实现添加代币对流动性，兑换代币等功能。

  

(2) **清算细节**

![](https://storage.googleapis.com/papyrus_images/36cdcb1dad980d42f3f49a849f4d4f3f3822b881b7f009796f5161eb9be13b59.png)

Vault：

![](https://storage.googleapis.com/papyrus_images/3ac9c6ea5f35709750ba8c79f10ff5a06d52bfbb1bc7be997de36699a340041b.jpg)

Worker: Liquidate(uint256 id)

![](https://storage.googleapis.com/papyrus_images/d7d22aaa70512f5ba95d463e5c05ab7bf69eaab376ae3ccf7219275f40f5e2cd.png)

Worker: \_removeShare(uint256 id)

![](https://storage.googleapis.com/papyrus_images/06c17793a32bc0f0d98b9b4f03b554e8f62d0640407adc22ae494070ed1590a4.png)

Strategy:

![](https://storage.googleapis.com/papyrus_images/5b400a0f9b5dfeece4cf82c21aa5537a91ed6edb87e81b3d07c1d4da1681e66d.png)

  

(3) **风险点：**

l \*\*坏账：\*\*在市场价格的高波动情况下，没有来及被清算的仓位会导致杠杆挖矿的净资产为负，从而导致借贷池中出借人的资产损失。

l 解决方案：在清算阈值到权益价值为0%之间设立了一个缓冲区间buffer。例如清算阈值为83.3%，缓冲区间为16.7%，一旦债务比率超过这个阈值之后，立即进去清算阶段。同时给予清算人5%的激励，以快速清算高风险仓位。

  

l \*\*出借人无法回收资产：\*\*在资金池利用率非常高的情况下，如果出借人在某一时刻大量提出资产，可能会发生无法提款的情况。

l 解决方案：Alpaca使用了“三阶模型”的利率模型来优化资金利用率到达 90% 时候的情况。当资金利用率急剧上升超过了 90% 时 (利率范围为20% - 150%)，借贷利率也会飙升，这将鼓励更多的出借人存入资金，以及借款人及时归还未偿还的贷款，优化资金池利用率，使利用率保持在低于90%左右的水平。

  

l \*\*杠杆放大滑点损失：\*\*由于开闭仓需要卖出部分资产，所以当资金量较大，且DEX资金池流动性相对较低的情况下，卖出滑点损失会较大。例如DEX资金池中BUSD流动性为1亿美金，Alice卖出100万美金BUSD来配平资产，此时会损失4%的滑点价格。

l 解决方案：用户可以分别开立多个仓位，且不要频繁的关闭仓位。另外，对于较大仓位的用户，Alpaca也提供了一种”Minimize Trading”策略来减小滑点。

  

l \*\*APY为负：\*\*这是可能发生的情况。当借款利率高于流动性挖矿收益的时候就会发生，会导致仓位被清算。原因为贷款池资金利用率过高或者流动性挖矿产出代币（例如Pancake Swap中的Cake代币）价格过低。

l 解决方案：用户及时平仓或追加抵押保证金（使权益价值增加，负债比率降低），且不要向资金利用率过高的资金池中贷款。Alpaca官方可能会临时调整借款利率，鼓励更多的出借人添加流动性、更多的贷款人归还资产，从而降低资产利用率。

  

l \*\*清算：\*\*当权益价值接近仓位价值，也就是债务比例达到了清算阈值的时候，仓位可能被清算。

l 解决方案：用户可以选择低杠杆来降低风险，且实时关注资产价格波动变化，及时平仓。Alpaca也提供了新的对冲策略“自动化金库”来降低被清算风险。

  

l \*\*智能合约代码漏洞：\*\*常见的DeFi合约攻击手法例如重入攻击、闪电贷攻击、恶意操纵预言机攻击、管理员私钥被盗等，导致项目几乎全部资金流动性被转移。

l 解决方案：Alpaca项目智能合约已经过十几次专业机构审计，已安全稳定运行一年，目前尚无发现严重漏洞，有待进一步观察。

  

3\. **新版本：自动化金库**

(1) **市场中性策略**

为了降低杠杆挖矿中用户仓位被清算的风险，同时保证正常的杠杆挖矿收益。Alpaca推出了市场中性策略，使用同时开立两个仓位同时做多和做空波动性资产来对冲价格波动。同时实时监控价格波动，采用重新平衡机制重新开立仓位来保持资产风险敞口为零。该策略不需要也不存在清算机制，于是用户无需担心杠杆被清仓的风险，同时保持较高的挖矿APY收益。

![](https://storage.googleapis.com/papyrus_images/8fca7b5b464bfe1342c303a4e95a73c7526797bbf09b2b797242d766b41e0c17.png)

例如：对于3倍杠杆，同时开立1/4多头和3/4空头仓位。如下图所示，BNB 的多头敞口(最左边) 和空头敞口 (最右边) 大小相同。

Alice有4 BNB，且此时1 BNB = 100 USDT，开3倍杠杆。

仓位1：

抵押1BNB，借入200USDT。卖出50USDT，获得0.5BNB。

配平1.5 BNB：150 USDT，开始质押挖矿。

风险敞口：做多1.5 BNB & 做空50 USDT

仓位2：

抵押3BNB，借6 BNB。卖出4.5BNB，获得450 USDT。

配平4.5 BNB：450 USDT，开始质押挖矿、

风险敞口：做空1.5 BNB & 做多450 USDT

  

**假设USDT价格锚定美金的不变的情况下，两仓位BNB总的风险敞口为零。**

  

**重新平衡：**

随着时间的推移，由于复投的累积、借贷利息和波动性资产的价格变动，仓位不会保持中性。自动化的市场中性策略，允许仓位在窄幅范围内波动，以免重新平衡过于频繁，但一旦敞口超过预定的阈值，自动化金库将触发重新平衡以重置敞口回到零。平衡阈值的设置是根据过去一年的市场数据回测设定的。但是过于频繁地重新平衡会产生更高的交换费用，并造成仓位的无常损失。

![](https://storage.googleapis.com/papyrus_images/2d45d431596674a1ad144928295fb515e61e2a8e57fe3a3e01f72e48220e3d70.png)

**优势：**

与手动执行类似策略相比，自动化金库的仓位不会连接清算机器人，也不允许清算。同时该策略能保证对贷方的坏账风险实际上为0，因为该策略中的两个仓位相互对冲，即使在资产价格大幅波动之后，权益价值的百分比变化也很小。此外，一旦价格变动，平衡机器人会把仓位价格重新平衡至中性。例如对3倍杠杆的设置，波动性资产的价格在重新平衡之前可以向任一方向移动 40%，而权益价值只会变化小于 7.5%。并且通过重新平衡，权益价值的变化会小得多 (主要是因由交换滑点损失和重新平衡的无常损失)。

![https://docs.google.com/spreadsheets/d/15pHFfo_Pe66VD59bTP2wsSAgK-DNE_Xic8HEIUY32uQ/edit#gid=650365877](https://storage.googleapis.com/papyrus_images/4f6adaf9389eb7d20c235cca1fd724871cbc28f0e4e70c843ba88e445f8abd1e.png)

https://docs.google.com/spreadsheets/d/15pHFfo\_Pe66VD59bTP2wsSAgK-DNE\_Xic8HEIUY32uQ/edit#gid=650365877

(2) **实现细节**

![](https://storage.googleapis.com/papyrus_images/d8f6f76f3afdbf2eacf9009a716d51aaaa9b07ce457c54aef10aa6787944ae29.png)

**DeltaNeutralVault：deposit**

![](https://storage.googleapis.com/papyrus_images/a17cb4ab2e04537227f0ac6b4a58be83a90b8b3a7ba7736c64cf6e41b089e327.png)

**DeltaNeutralWorker：work**

![](https://storage.googleapis.com/papyrus_images/24503abe08e5c311d82246edc44f6c625bbaab9cf4cc10b997e942f97bbf5793.png)

**DeltaNeutralVault：rebalance**

![](https://storage.googleapis.com/papyrus_images/779ca048ba17b8664f865fdfc9b565ffc69b550c231bb96a129e881d23c45443.png)

**BNB-BUSD-x3 LYF config contract:**

  

![https://www.bscscan.com/address/0x5640ce665c4fAc707885A04059449DadAbe56Cf2#readProxyContract](https://storage.googleapis.com/papyrus_images/3775b97a29de46dcdb73a7307424429adab90184b8e879d20604421cba5a20df.png)

https://www.bscscan.com/address/0x5640ce665c4fAc707885A04059449DadAbe56Cf2#readProxyContract

(3) **风险点**

l \*\*再平衡延迟：\*\*当资产价格波动导致需要再平衡时，执行操作的延迟导致资产价格偏离预期，造成资产损失。可能原因：1. 区块链堵塞造成再平衡交易延迟落块。2. Alpaca自动化平衡机器人Rebalancer故障。

l 解决方案：Alpaca提供的基础设施能安全稳定的运行各种机器人。例如清算机器人已平稳运行了1年。当链上发生拥堵时，机器人也会调节gas策略，确保再平衡交易及时执行成功。

  

l \*\*稳定币脱锚：\*\*由于市场中性策略是为了对冲掉波动资产（如BNB）价格波动产生的风险敞口，但同时也放大了稳定币（如USDT）价格波动的风险敞口。在极端情况下，稳定币价格脱锚会导致仓位权益价值下降，但自动化金库策略又不提供清算服务，这可能会导致资金池坏账。

l 解决方案：使用Saving Neutral Strategy（但同时也会做多1倍BNB）

  

4\. **总结**

Alpaca推出的全新产品自动化金库，类似于链上对冲基金，当用户杠杆挖矿时自动分配一个多头和一个空头仓位，使波动性资产的总风险敞口为零，对冲其市场价格变化导致的清算风险。同时使用自动平衡机器人，实时监听市场价格，当负债比率超过平衡阈值时，执行链上重新平衡操作，使仓位价格回归中性。总体来讲，Aplaca Finance推出的这一产品很好的降低了用户仓位被清算的风险，同时保证了稳定的杠杆挖矿收益。目前产品只支持两个代币对都包含主流稳定币（BNB-USDT和BNB-BUSD），从这个角度看来，自动化金库能相对稳定运行。

但是从风险角度来看，自动化金库严重依赖于平衡机器人的稳定与安全性。由于不存在清算环节，如果平衡机器人在极端市场行情下发生故障，也可能导致代币价格严重偏离市场中性，用户杠杆仓位资不抵债，而造成真实的坏账情况。另外，由于市场中性策略进一步放大了稳定币的风险敞口，那么在稳定币价格脱锚的情况下，会造成更严重的权益价值损失，造成更严重的坏账风险。总之此产品运行时间不长，有待市场进一步验证。

5\. **References**

Official Doc：[https://docs.alpacafinance.org/](https://docs.alpacafinance.org/)

Yield Farming Calculator：[https://docs.google.com/spreadsheets/d/15pHFfo\_Pe66VD59bTP2wsSAgK-DNE\_Xic8HEIUY32uQ/edit#gid=0](https://docs.google.com/spreadsheets/d/15pHFfo_Pe66VD59bTP2wsSAgK-DNE_Xic8HEIUY32uQ/edit#gid=0)

BNB-BUSD Market Neutral Test Data：[https://docs.google.com/spreadsheets/d/1GdXCzQMdAGspJbGIfF6Yr-4VpRMcmIXQ4AS1QMNzZeQ/edit#gid=1215699436](https://docs.google.com/spreadsheets/d/1GdXCzQMdAGspJbGIfF6Yr-4VpRMcmIXQ4AS1QMNzZeQ/edit#gid=1215699436)

Deployed Contract Addresses：[https://github.com/alpaca-finance/bsc-alpaca-contract/blob/main/.mainnet.json](https://github.com/alpaca-finance/bsc-alpaca-contract/blob/main/.mainnet.json)

Alpaca Finance：[https://app.alpacafinance.org/](https://app.alpacafinance.org/)

Architecture：[https://alpaca-doc.s3.ap-southeast-1.amazonaws.com/lyf/Export-849cfdb0-24b6-4655-a19b-1734b8a1c2b3/Contract+Documentation+4c48a0c0db7442c6aa0268dd110e6b80.html](https://alpaca-doc.s3.ap-southeast-1.amazonaws.com/lyf/Export-849cfdb0-24b6-4655-a19b-1734b8a1c2b3/Contract+Documentation+4c48a0c0db7442c6aa0268dd110e6b80.html)

---

*Originally published on [mazemax](https://paragraph.com/@mazemax/alpaca-finance)*
