LEND and BORROW function spotlight
This document explains the syntax and usage of two of Vektor’s core execution functions: LEND() and BORROW(). For a shorter summary with examples you could read our launch announcement here.
CALL function in the app to learn more.Summary
Vektor’s LEND and BORROW functions facilitate lending and/or borrowing of assets on multiple chains and venues supported by Vektor.
- Use the
LENDfunction to supply assets to a lending venue. - Use the
BORROWfunction to borrow assets from a lending venue.
The LEND and BORROW functions also have various powerful sub-functions that can be used to access current market information or monitor existing positions. This is covered in more detail below.
ASSETS.GET function. We plan to give users the ability to register their own assets, but for now you need to let us know if there is something missing that you need - we can add it quickly.Function Specifications
You can use the .MARKET and .MARKETS sub-functions to see current lend and borrow rates available in the market, or use LEND and BORROW (without sub-functions) to execute actual lend and borrow transactions on-chain. Then retrieve and monitor information about your different lend and borrow positions using the .POSITION and/or .POSITIONS sub-functions, or check aggregated account-level information like health factors using .ACCOUNT and/or .ACCOUNTS subfunctions.
| Function | Description |
|---|---|
LEND.MARKETS(...) |
Get the current market rates for lending an asset |
LEND.MARKET(...) |
Get the current market rate for lending an asset on a venue on a blockchain |
LEND(...) |
Supply an asset to a lending venue |
LEND.WITHDRAW(...) |
Withdraw an asset from a lending venue |
LEND.POSITIONS(...) |
Get info on supplied lending positions |
LEND.POSITION(...) |
Get info on a specific supplied lending position |
BORROW.MARKETS(...) |
Get the current market rates for borrowing an asset |
BORROW.MARKET(...) |
Get the current market rate for borrowing an asset on a venue on a blockchain |
BORROW(...) |
Borrow an asset from a lending venue |
BORROW.REPAY(...) |
Repay an asset to a lending venue |
BORROW.POSITIONS(...) |
Get info on borrowed positions |
BORROW.POSITION(...) |
Get info on a specific borrowed position |
BORROW.ACCOUNTS(...) |
Get account-level borrow info on multiple labels |
BORROW.ACCOUNT(...) |
Get account-level borrow info on a specific label |

LEND.MARKETS(...) Syntax and Examples
LEND.MARKETS is a powerful way to get an overview of the different lending conditions on multiple different assets, venues, and blockchains all in one view, with live updates.

LEND.MARKETS(...) Examples
Get the current lending rates of all assets, venues, and chains supported by Vektor (with sample output).
Get a table of lending rates for a single asset (ETH) across all venues and chains supported by Vektor (with sample output).
Get a table of lending rates for a selection of stable coins (USDC, USDT, DAI) across all venues and chains supported by Vektor.

Get a table of lending rates for all assets and venues on a specific chain.

Get a table of lending rates for a selection of assets, on all venues and chains except Polygon.

Get a table of lending rates for a selection of assets, on all chains, on a specific venue (Aave v2).

INCLUDE_ASSETS , EXCLUDE_ASSETS , INCLUDE_BLOCKCHAINS , EXCLUDE_BLOCKCHAINS , INCLUDE_VENUES and EXCLUDE_VENUES are optional arguments, so they must be represent by key=value (Python style). In these instances the value can be a list of assets, so use array notation [venue1,venue2,venue3].Get three separate tables at the same time, one each for three specific assets, across all venues and chains.

Shift+Enter to start a new line in the same command statement, or use the semicolon ;separator. Everything will be executed like a script, probably resulting in several view panes showing the output of each part.LEND.MARKET(...) Syntax and Examples
LEND.MARKET is very similar to LEND.MARKETS except that it outputs information about a particular lending market, as specified by an asset, venue, and blockchain that you provide. Unlike LEND.MARKETS, LEND.MARKET has required arguments instead of options.

LEND.MARKET(...) Examples
Get the current market rate for lending WETH on the Aave v3 venue on the Polygon blockchain (with sample output).

Get two current market rates, one for lending WETH on Aave v3 on Polygon, and another for lending DAI on Aave v2 on Ethereum (with sample output).

LEND(...) Syntax and Examples
If you omit any sub-function suffix, you can use LEND to actually prepare and execute an on-chain lend transaction. A lend transaction supplies your assets to a lending venue, typically in order to generate a return.
The key differences between LEND and LEND.MARKET[S] above are:
- Instead of providing
INCLUDE_BLOCKCHAINSorEXCLUDE_BLOCKCHAINSas optional parameters, it is necessary to provide aLABEL(a human-readable label for a blockchain address that you've registered in Vektor) and aBLOCKCHAINexplicitly. SinceLABELSare natively 'multi-chain' or 'chain-agnostic', this additional information is needed by Vektor to build the transaction. - Instead of just a read-only output in the workspace, the
LENDfunction will prepare an on-chain transaction that you will need to sign when presented with a Signing Request.

LEND(…) Examples
Lend exactly 1000 MATIC to the Aave v3 venue on Polygon, using funds available at MY_ADDRESS(with sample Signing Request).


Lend exactly 1 WBTC to the Aave v2 venue on Ethereum, using funds available at MY_ADDRESS.

Lend half of the total balance of WETH held in the label MY_ADDRESS on Avalanche, to the Aave v3 venue on Avalanche.

LEND.WITHDRAW(…) Syntax and Examples
The LEND.WITHDRAW function performs the reverse of LEND; removing some or all of your assets from lending venues. The requirement is that you already have some supplied assets associated with your address.

WRAP and WRAP.UNWRAP functions.LEND.WITHDRAW(…) Examples
Withdraw 1000 MATIC on the Aave v2 venue on Polygon, from the position associated with the labelled address MY_ADDRESS.

Withdraw 20 ETH on the Aave v3 venue on Avalanche, from the position associated with the labelled address MY_ADDRESS.

LEND.POSITIONS(…) Syntax and Examples
After you have supplied assets to one or more lending venues, you can use LEND.POSITIONS to keep track of all these lending positions, including supplied amounts, APYs, venues, blockchains, and associated labelled addresses.
The difference between LEND.POSITIONS and LEND.POSITION (featured next) is that LEND.POSTIONS returns a list of all the existing positions in a tabulated format, while LEND.POSITION returns a summary of a single position. LEND.POSITIONS is more powerful in that it can read multiple blockchains in one operation. Both are read-only functions.

LEND.POSITIONS(…) Examples
Get the current supplied lending positions of all assets, venues, and chains supported by Vektor, searching all labelled addresses (with sample output).

Get the current supplied lending positions, filtering on just the labelled address TEST_ADDRESS_1 and on just the Polygon blockchain.

Get the current supplied lending positions, filtering on just stable coins (USDC, USDT, DAI) and on just the Aave v2 venue.

Get the current supplied lending positions of all assets excluding stable coins (DAI, USDC, USDT), and for all blockchains excluding Arbitrum.

Get three separate tables at the same time, one each for three specific blockchains, showing for each blockchain the supplied lending positions across all assets and venues and labelled addresses.

LEND.POSITION(…) Syntax and Examples
LEND.POSITION is very similar to LEND.POSITIONS except that it outputs information about a particular lending position, as specified by an asset, venue, blockchain, and labelled address that you provide. Unlike LEND.POSITIONS, LEND.POSITION has required arguments instead of options.

LEND.POSITION(…) Examples
Get information on the current lending position for WBTC on the Aave v3 venue on the Arbitrum blockchain, on the labelled address ADDRESS_2 (with sample output).

Get the current supply APY for the above position is greater than 1% (with sample output)


BORROW.MARKETS(…) Syntax and Examples
BORROW.MARKETS is a powerful way to get an overview of the different borrowing conditions on multiple different assets, venues, and blockchains all in one view, with live updates.

BORROW.MARKETS(...) Examples
Get the current borrowing rates of all assets, venues, and chains supported by Vektor (with sample output).
Get a table of borrowing rates for a single asset (ETH) across all venues and chains supported by Vektor (with sample output).
Get a table of borrowing rates for a selection of stable coins (USDC, USDT, DAI) across all venues and chains supported by Vektor.

Get a table of borrowing rates for all assets and venues on a specific chain.

Get a table of borrowing rates for a selection of assets, on all venues and chains except Polygon.

INCLUDE_ASSETS , EXCLUDE_ASSETS , INCLUDE_BLOCKCHAINS , EXCLUDE_BLOCKCHAINS , INCLUDE_VENUES and EXCLUDE_VENUES are optional arguments, so they must be represent by key=value (Python style). In these instances the value can be a list of assets, so use array notation [venue1,venue2,venue3].Get a table of borrowing rates for all assets and chains, on a specific venue (Aave v2)

BORROW.MARKET(…) Syntax and Examples
BORROW.MARKET is very similar to BORROW.MARKETS except that it outputs information about a particular borrowing market, as specified by an asset, venue, and blockchain that you provide. Unlike BORROW.MARKETS, BORROW.MARKET has required arguments instead of options.

BORROW.MARKET(...) Examples
Get the current market rate for borrowing ETH from the Aave v3 venue on the Polygon blockchain (with sample output).

Get two current market rates, one for borrowing ETH from Aave v3 on Polygon, and another for borrowing DAI from Aave v2 on Ethereum (with sample output).

BORROW(…) Syntax and Examples
If you omit any subfunction suffix, you can use BORROW to actually prepare and execute an on-chain borrow transaction. A borrow transaction acquires assets from a borrowing/lending venue, typically in order to use those borrowed assets for other things. Depending on the venue, restrictions apply around collateral amounts you need to pledge in order to borrow.
The key differences between BORROW and BORROW.MARKET[S] above are:
- Instead of providing
INCLUDE_BLOCKCHAINSorEXCLUDE_BLOCKCHAINSas optional parameters, it is necessary to provide aLABEL(a human-readable label for a blockchain address that you've registered in Vektor) and aBLOCKCHAINexplicitly. SinceLABELSare natively 'multi-chain' or 'chain-agnostic', this additional information is needed by Vektor to build the transaction. - Instead of just a read-only output in the workspace, the
BORROWfunction will prepare an on-chain transaction that you will need to sign when presented with a Signing Request.

BORROW(...) Examples
Borrow exactly 1000 USDC from the Aave v2 venue on Polygon, using MY_ADDRESS (with sample Signing Request).


Borrow exactly 1 WBTC from the Aave v3 venue on Optimism, using MY_ADDRESS.

BORROW.REPAY(…) Syntax and Examples
The BORROW.REPAY function performs the reverse of BORROW; repaying some or all of your assets to borrowing/lending venues.

BORROW.REPAY(...) Examples
Repay 0.5 WBTC on the Aave v2 venue on Polygon, to the position associated with the labelled address MY_ADDRESS.

Repay 20 ETH on the Radiant venue on Arbitrum, to the position associated with the labelled address MY_ADDRESS.

BORROW.POSITIONS(…) Syntax and Examples
After you have borrowed assets from one or more borrowing/lending venues, you can use BORROW.POSITIONS to keep track of all these borrowed positions, including borrowed amounts, APYs, venues, blockchains, and associated labelled addresses.
The difference between BORROW.POSITIONS and BORROW.POSITION (featured next) is that BORROW.POSITIONS returns a list of all the existing positions in a tabulated format, while BORROW.POSITION returns a summary of a single positions. BORROW.POSITIONS is more powerful in that it can read multiple blockchains in one operation. Both are read-only functions.

BORROW.POSITIONS(...) Examples
Get the current borrowed positions of all assets, venues, and chains supported by Vektor, searching all labelled addresses (with sample output).

BORROW.POSITIONS because these are aggregated metrics that are non-meaningful on a specific position-by-position basis; instead these are evaluated using the BORROW.ACCOUNT[S] functions covered further below.Get the current borrowed positions, filtering on just the labelled address MY_ADDRESS and on just the Ethereum blockchain.

Get the current borrowed positions, filtering on just stable coins (USDC, USDT, DAI) and on just the Aave v2 and Aave v3 venues.

Get three separate tables at the same time, one each for three specific blockchains, showing for each blockchain the current borrowed positions across all assets and venues and labelled addresses.

BORROW.POSITION(…) Syntax and Examples
BORROW.POSITION is very similar to BORROW.POSITIONS except that it outputs information about a particular borrow position, as specified by an asset, venue, blockchain, and labelled address that you provide. Unlike BORROW.POSITIONS, BORROW.POSITION has required arguments instead of options.

BORROW.POSITION(...) Examples
Get information on the current borrowed position for USDT on the Aave v3 venue on the Avalanche blockchain, on the labelled ADDRESS_2 (with sample output).

Tell me if the current borrow APY for the above position is greater than 4%.

BORROW.ACCOUNTS(...) Syntax and Examples
Many venues supported by Vektor for lending and borrowing work on the principle of an over-collateralization requirement. That is, total assets deposited/lent to the venue must exceed total assets borrowed by some safety factor. Most venues will consider the aggregated notional value of supplied and borrowed assets for imposing these safety checks and restrictions, which may exist across several positions for the same account/labelled address. Therefore, position-level functions like BORROW.POSITIONS and BORROW.POSITION are unable to support these particular aggregated data points such as Total Collateral, Total Debt, or Health Factor, because they only have meaning at the account-level.
BORROW.ACCOUNTS and BORROW.ACCOUNT can be used to retrieve these data points.

BORROW.ACCOUNTS(...) Examples
Get the account-level borrow info across all venues and chains supported by Vektor, searching all labelled addresses (with sample output).

| COLUMN | DESCRIPTION |
|---|---|
VENUE |
The on-chain lend/borrow venue name |
BLOCKCHAIN |
The blockchain where the one or more borrow positions exist |
LABEL |
The labelled address being considered as the single 'account' for aggregating the data |
HEALTH_FACTOR |
The ratio between the total amount borrowed, and the discounted value of the collateral associated with that label |
TOTAL_COLLATERAL |
The total value of all collateral assets supplied by that label |
TOTAL_DEBT |
The total value of all assets borrowed by that label |
AVAILABLE_BORROW |
The value that can be currently borrowed by that label according to collateral requirements |
QUOTE_ASSET |
The display unit for Total Collateral, Total Debt, and Available Borrow (default USDC) |
Same as above, but override the default quote asset by setting it to ETH.

QUOTE include TOTAL_COLLATERAL, TOTAL_DEBT, and AVAILABLE_BORROW . It does not affect HEALTH_FACTOR.Get the account-level borrow info filtering on just the Ethereum blockchain and just the labelled address MY_ADDRESS.

Get the account-level borrow info filtering on just Aave v3, and excluding the Polygon blockchain.

BORROW.ACCOUNT(...) Syntax and Examples
BORROW.ACCOUNT is very similar to BORROW.ACCOUNTS except that it outputs information about a particular account, as specified by a venue, blockchain, and labelled address that you provide. Unlike BORROW.ACCOUNTS, BORROW.ACCOUNT has required arguments instead of options.

Get specific account-level borrow information associated with the Aave v3 venue, on the Arbitrum blockchain, and the labelled address ADDRESS_2 (with sample output).

Same as above, but showing overriding the default quote asset by setting it to EUROC. (a Euro-denominated stablecoin) - with sample output.

QUOTE include TOTAL_COLLATERAL, TOTAL_DEBT, and AVAILABLE_BORROW . It does not affect HEALTH_FACTOR.Tell me if my health factor for this position falls below 2 with an on-screen warning (with sample output)

The above in text for better readability:IF(GET(BORROW.ACCOUNT(AAVE_V3, ARBITRUM, DEMO), "HEALTH_FACTOR") < 2, "WARNING LOW HEALTH FACTOR!", "HEALTH FACTOR OK.. 👍")
LIVE button in the top left.Questions?
Email: [email protected]
Zoom: Use CALL function in Vektor