# Basket Trade (m:n swap)

Basket trades or m:n swaps allow you to rebalance a portfolio of assets in one go. This means you can specify a base allocation (m) consisting of one or many assets and a target allocation (n) with one or many assets. M and n can be the same assets in a different percentual allocation but also completely different assets.

For specific use-case specific descriptions see:

* [wallet](https://docs.31third.com/31third-api/basket-trade-m-n-swap/wallet "mention")
* [enzyme](https://docs.31third.com/31third-api/basket-trade-m-n-swap/enzyme "mention")
* [setprotocol](https://docs.31third.com/31third-api/basket-trade-m-n-swap/setprotocol "mention")

### Usage example with ethers.js

The API returns a DTO containing the following properties:

```typescript
export interface RebalancingResponseDto extends BaseEntityModel {
  ...
  txHandler: Address;    // address of deployed BatchTrade
  txData: string;        // calldata containing encoded Trades and BatchTradeConfig
  txValue: BigNumberDto; // value native currency sent for trading
  ...
}
```

which can be passed into [ethers signer.sendTransaction](https://docs.ethers.org/v5/api/signer/#Signer-sendTransaction) as follows:

```typescript
signer.sendTransaction({
  to: rebalancing.txHandler,
  data: rebalancing.txData,
  value: rebalancing.txValue,
});
```
