> ## Documentation Index
> Fetch the complete documentation index at: https://docs.railnet.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Advanced Strategies

> Full-flexibility strategy execution with on-chain policy enforcement, and standardized NAV

export const AdvancedOverview = () => {
  const CSS = `
    .av-bg{fill:#F8F8F8;rx:4;ry:4}.dark .av-bg{fill:#141414}
    .av-t{fill:#374151;font-family:"Inter Tight","Inter",system-ui,sans-serif}.dark .av-t{fill:#D1D5DB}
    .av-tm{fill:#6B7280;font-family:"Inter Tight","Inter",system-ui,sans-serif}.dark .av-tm{fill:#9CA3AF}
    .av-h{fill:#111827;font-family:"Inter Tight","Inter",system-ui,sans-serif}.dark .av-h{fill:#E5E7EB}
    .av-badge{fill:#374151;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.dark .av-badge{fill:#D1D5DB}
    .av-cont{fill:none;stroke:#D1D5DB;stroke-width:1.5;rx:8;ry:8;stroke-dasharray:8 4}.dark .av-cont{stroke:#4B5563}
    .av-vault{fill:#fff;stroke:#D1D5DB;stroke-width:1;rx:4;ry:4}.dark .av-vault{fill:#1F2937;stroke:#4B5563}
    .av-nav{fill:#FEF3C7;rx:3;ry:3}.dark .av-nav{fill:#422006}
    .av-policy{fill:#CCE5E6;rx:3;ry:3}.dark .av-policy{fill:#1A3535}
    .av-plat{fill:#FFE4D2;rx:3;ry:3}.dark .av-plat{fill:#3D2510}
    .av-exec{fill:#F3F4F6;stroke:#D1D5DB;stroke-width:1;rx:3;ry:3}.dark .av-exec{fill:#1F2937;stroke:#4B5563}
    .av-sub{fill:#F3F4F6;rx:2;ry:2}.dark .av-sub{fill:#1F2937}
    .av-chk{fill:#2D6A5A}.dark .av-chk{fill:#5AA08E}
    .av-chk-line{stroke:#fff;stroke-width:1.5;fill:none;stroke-linecap:round;stroke-linejoin:round}
    .av-sep{stroke:#9DB8B0;stroke-width:0.5;opacity:0.4}.dark .av-sep{stroke:#4B5563}
    .av-ln{stroke:#ACACAC;fill:none;stroke-width:1.5;color:#ACACAC}.dark .av-ln{stroke:#666;color:#666}
    .av-ln-l{stroke:#D1D5DB;fill:none;stroke-width:1;color:#D1D5DB}.dark .av-ln-l{stroke:#4B5563;color:#4B5563}
  `;
  const chk = (cx, cy) => <g>
      <circle cx={cx} cy={cy} r="6.5" className="av-chk" />
      <path d={`M${cx - 2.5},${cy} L${cx - 0.5},${cy + 2.5} L${cx + 3.5},${cy - 2.5}`} className="av-chk-line" />
    </g>;
  const protos = [{
    x: 583,
    img: '/images/protocols/aave.svg'
  }, {
    x: 607,
    img: '/images/protocols/morpho.svg'
  }, {
    x: 631,
    img: '/images/protocols/uniswap.svg'
  }, {
    x: 655,
    img: '/images/protocols/pendle.svg'
  }, {
    x: 679,
    img: '/images/protocols/compound.svg'
  }];
  return <div className="not-prose w-full my-6 overflow-x-auto" style={{
    padding: '2px'
  }}>
      <style>{CSS}</style>
      <svg viewBox="0 -15 1020 410" style={{
    width: '100%',
    height: 'auto',
    minWidth: '700px',
    display: 'block'
  }} role="img" aria-label="Advanced Strategy architecture: Vault, Strategy, Policy Engine, and platform connections">
        <defs>
          <marker id="av-a" viewBox="0 0 10 7" refX="9" refY="3.5" markerWidth="8" markerHeight="6" orient="auto"><polygon points="0 0,10 3.5,0 7" fill="currentColor" /></marker>
        </defs>
        <rect x="0" y="-15" width="1020" height="410" className="av-bg" />

        <line x1="227" y1="64" x2="227" y2="104" className="av-ln-l" markerEnd="url(#av-a)" />
        <line x1="108" y1="155" x2="152" y2="155" className="av-ln" markerEnd="url(#av-a)" />
        <line x1="108" y1="189" x2="152" y2="189" className="av-ln" markerEnd="url(#av-a)" />
        <line x1="302" y1="172" x2="360" y2="172" className="av-ln" markerEnd="url(#av-a)" />
        <line x1="550" y1="172" x2="490" y2="172" className="av-ln" markerEnd="url(#av-a)" />
        <text x="520" y="164" textAnchor="middle" className="av-tm" fontSize="8.5" fontWeight="500">Execute</text>
        <text x="520" y="184" textAnchor="middle" className="av-tm" fontSize="8.5" fontWeight="500">operations</text>
        <line x1="868" y1="200" x2="793" y2="200" className="av-ln" markerEnd="url(#av-a)" />
        <line x1="868" y1="232" x2="793" y2="232" className="av-ln" markerEnd="url(#av-a)" />

        <rect x="152" y="2" width="150" height="62" className="av-vault" />
        <text x="227" y="16" textAnchor="middle" className="av-tm" fontSize="9.5" fontWeight="500">Valuation Provider</text>
        <rect x="168" y="22" width="118" height="34" className="av-nav" />
        <text x="227" y="38" textAnchor="middle" className="av-t" fontSize="10.5" fontWeight="600">NAV Guidelines</text>
        <text x="227" y="52" textAnchor="middle" className="av-tm" fontSize="8.5">Share pricing and reporting</text>

        <rect x="132" y="74" width="700" height="204" className="av-cont" />
        <text x="148" y="90" className="av-h" fontSize="13" fontWeight="700">Advanced Strategy</text>

        <text x="62" y="96" textAnchor="middle" className="av-h" fontSize="10.5" fontWeight="600">Investors</text>
        <line x1="92" y1="92" x2="152" y2="140" className="av-ln" markerEnd="url(#av-a)" />

        <text x="62" y="131" textAnchor="middle" className="av-h" fontSize="10.5" fontWeight="600">Platforms</text>
        <rect x="16" y="141" width="92" height="28" className="av-plat" />
        <text x="62" y="159" textAnchor="middle" className="av-t" fontSize="10.5" fontWeight="500">Ledger</text>
        <rect x="16" y="175" width="92" height="28" className="av-plat" />
        <text x="62" y="193" textAnchor="middle" className="av-t" fontSize="10.5" fontWeight="500">Coinbase</text>
        <text x="62" y="218" textAnchor="middle" className="av-tm" fontSize="9.5">+ more</text>

        <rect x="152" y="104" width="150" height="124" className="av-vault" />
        <g transform="translate(219, 117) scale(0.667)" fill="none" stroke="#9CA3AF" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
          <path d="M10 18v-7" /><path d="M14 18v-7" /><path d="M18 18v-7" /><path d="M6 18v-7" />
          <path d="M11.12 2.198a2 2 0 0 1 1.76.006l7.866 3.847c.476.233.31.949-.22.949H3.474c-.53 0-.695-.716-.22-.949z" />
          <path d="M3 22h18" />
        </g>
        <text x="227" y="153" textAnchor="middle" className="av-t" fontSize="17" fontWeight="700">Vault</text>
        <rect x="205" y="160" width="44" height="20" className="av-sub" />
        <text x="227" y="174" textAnchor="middle" className="av-badge" fontSize="10" fontWeight="600">7540</text>
        <text x="227" y="197" textAnchor="middle" className="av-tm" fontSize="8.5">ERC-7540 compliant</text>
        <text x="227" y="210" textAnchor="middle" className="av-tm" fontSize="8.5">Async deposit and redeem</text>

        <rect x="363" y="134" width="124" height="76" className="av-vault" />
        <text x="425" y="163" textAnchor="middle" className="av-t" fontSize="14" fontWeight="700">Strategy</text>
        <text x="425" y="180" textAnchor="middle" className="av-tm" fontSize="8.5">Safe holding capital</text>

        <rect x="550" y="78" width="240" height="193" className="av-policy" />

        <g transform="translate(565, 86) scale(0.583)" fill="none" stroke="#2D6A5A" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
          <path d="M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z" />
          <path d="m9 12 2 2 4-4" />
        </g>
        <text x="582" y="100" className="av-t" fontSize="12" fontWeight="700">Onchain Policy Engine</text>

        <text x="567" y="118" className="av-tm" fontSize="8.5" fontWeight="600" letterSpacing="0.5">WHITELISTED PROTOCOLS</text>

        {protos.map((p, i) => <image key={i} href={p.img} x={p.x - 9} y={147} width="18" height="18" />)}
        <text x="705" y="159" className="av-tm" fontSize="8.5">+ more</text>

        <line x1="567" y1="172" x2="775" y2="172" className="av-sep" />

        <text x="567" y="186" className="av-tm" fontSize="8.5" fontWeight="600" letterSpacing="0.5">POLICY RULES</text>

        {chk(577, 202)}
        <text x="590" y="206" className="av-t" fontSize="9.5">Function-level permissions</text>

        {chk(577, 220)}
        <text x="590" y="224" className="av-t" fontSize="9.5">Spending limits and param constraints</text>

        {chk(577, 238)}
        <text x="590" y="242" className="av-t" fontSize="9.5">Guardian governance + timelock</text>

        {chk(577, 256)}
        <text x="590" y="260" className="av-t" fontSize="9.5">Multi-chain rule sets</text>

        <text x="910" y="178" textAnchor="middle" className="av-h" fontSize="9.5" fontWeight="600">Trusted Execution</text>
        <rect x="868" y="186" width="84" height="28" className="av-exec" />
        <g transform="translate(879, 193) scale(0.583)" fill="none" stroke="#6B7280" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
          <path d="M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915" />
          <circle cx="12" cy="12" r="3" />
        </g>
        <text x="900" y="204" className="av-t" fontSize="10.5" fontWeight="500">API</text>
        <rect x="868" y="218" width="84" height="28" className="av-exec" />
        <g transform="translate(879, 225) scale(0.583)" fill="none" stroke="#6B7280" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
          <path d="M18 11V6a2 2 0 0 0-2-2a2 2 0 0 0-2 2" />
          <path d="M14 10V4a2 2 0 0 0-2-2a2 2 0 0 0-2 2v2" />
          <path d="M10 10.5V6a2 2 0 0 0-2-2a2 2 0 0 0-2 2v8" />
          <path d="M18 8a2 2 0 1 1 4 0v6a8 8 0 0 1-8 8h-2c-2.8 0-4.5-.86-5.99-2.34l-3.6-3.6a2 2 0 0 1 2.83-2.82L7 15" />
        </g>
        <text x="900" y="236" className="av-t" fontSize="10.5" fontWeight="500">Manual</text>

        <rect x="152" y="294" width="150" height="100" className="av-exec" />
        <text x="227" y="312" textAnchor="middle" className="av-t" fontSize="11" fontWeight="600">Admin</text>
        <text x="227" y="326" textAnchor="middle" className="av-tm" fontSize="8">Update roles, pause/unpause,</text>
        <text x="227" y="337" textAnchor="middle" className="av-tm" fontSize="8">access control, fee split</text>
        <rect x="167" y="348" width="120" height="26" className="av-sub" />
        <text x="227" y="366" textAnchor="middle" className="av-tm" fontSize="9.5" fontWeight="500">Fee Splitter</text>
        <line x1="215" y1="294" x2="215" y2="231" className="av-ln" markerEnd="url(#av-a)" />
        <path d="M250,231 C330,290 340,330 250,362" className="av-ln" markerEnd="url(#av-a)" />
        <text x="320" y="300" textAnchor="middle" className="av-tm" fontSize="8.5" fontWeight="500">Fees</text>
      </svg>
    </div>;
};

## What is an Advanced Strategy

<AdvancedOverview />

This is where most asset managers start. An Advanced Strategy is a standalone strategy container that gives full protocol execution flexibility — lend, borrow, swaps, bridges, perpetual futures, RWA operations — while standardizing the four things that are otherwise left to bespoke, risky setups: investor lifecycle, non-custodial execution, on-chain guardrails, and accounting.

Each Advanced Strategy is composed of:

* A **7540 Vault** — the capital entry point that handles deposits, redemptions, share pricing, settlement, fees, and access control
* A **Strategy** where the strategy funds are held and the operations are executed — no third party can recover your keys
* An **on-chain policy engine** governing exactly which contracts, functions, and parameters the asset manager can use, defined by the quorum of the strategy smart contract
* **Standardized NAV reporting** so share pricing is accurate and auditable

You interact with any supported DeFi protocol directly. There are no adapters to build, no Railnet adapter to wait for. If the protocol has a smart contract, Railnet will whitelist required operations in the strategy's policy engine.

## Why Specialized Vehicles exist

Today, traditional asset managers who need to operate beyond simple allocation strategy currently use their existing wallet infrastructure like Fireblocks or ForDeFi for custody & execution with web2 co-signer services for policy enforcement, and ad-hoc setups for NAV computation. This approach has fundamental problems:

* **Strategy is not truly non-custodial** — owners of the wallet infrastructure providers can recover private keys, creating a trust dependency that undermines the premise of on-chain asset management
* **Policy engines are black boxes** — web2 co-signer and policy services are partial not publicly auditable, not verifiable on-chain, and not standardized accross asset managers
* **NAV computation is ad-hoc and error-prone** — incorrect NAV means incorrect share pricing, which means loss of funds for depositors. In fund-of-funds structures, NAV errors chain across layers — a bad Advanced Strategy NAV cascades into every Allocation Strategy that holds it
* **Every strategy is bespoke** — each deployment requires custom integration work for custody, policy, and reporting, with no standardized framework

Specialized Vehicles solve these problems by standardizing four pillars that every advanced strategy needs.

## The four pillars

### Vault

The 7540 Vault is the capital entry point for every Advanced Strategy. It implements the ERC-7540 standard handling deposits, redemptions, share pricing, fee collection, and access control through a single contract.

The vault supports both synchronous and asynchronous flows. When the NAV is valid, deposits settle instantly; when it has expired, they are kept pending and settled together at the next valuation cycle. Redemptions follow the same dual model — pending by default, with an optional instant liquidity buffer for immediate withdrawals. Pending funds are isolated in a dedicated escrow (Silo) until settlement.

The vault collects management, performance, entry, exit, and haircut fees — all configurable per strategy. Access can be gated via allowlist, blocklist, or external sanctions lists.

NAV guardrails protect against erroneous valuations by enforcing on-chain bounds on share price changes.

For a deep dive, see [Vault 7540 mechanics](/strategies/advanced/vault).

### Strategy

A multi-EVM-chain programmable set of smart contract (Safe + Guards + Policy Engine) deployed per strategy. The smart contract is fully non-custodial and can't execute asset management operations on its own or via the admin quorum — no workspace owner, no infrastructure provider, and no third party can recover the private keys. The strategy owners define the policy engine, changes in the policy can only be done with a delay timelock. The asset manager operates the strategy with its own logic, quorum and signing process on the attached policy engine, and the smart contract architecture ensures that all operations follow the on-chain guardrails or reject the operation.

### Policy

A custom on-chain policy engine is deployed matching your strategy requirements relying on **Zodiac Roles Modifier v2** that governs what the asset manager can do:

* **Contract whitelists** — which contracts can be called
* **Function-level permissions** — which functions on those contracts are allowed
* **Granular and on-chain parameter checks** — which parameter values are accepted (recipient addresses, spending limits, slippage bounds)
* **Guardian governance** — oversight roles with timelock enforcement for policy changes

Every rule is transparent, auditable, and verifiable on-chain. No dependency on a third-party back-end or co-signer. What gets executed on the strategy is only what was agreed in the strategy definition. Platforms and depositors can inspect the exact constraints governing a strategy before allocating capital. There are no off-chain co-signers, no black boxes, and no trust assumptions beyond the smart contracts themselves.

For a deep dive, see [Policy engine](/strategies/advanced/policy-engine).

### Accounting

Accurate NAV is critical — it determines share pricing for every depositor and, when a Specialized Vehicle is held inside an Allocation Strategy (MultiVehicle), incorrect NAV cascades through the fund-of-funds accounting.

The valuation process and format is standardized across all Advanced Strategies, making it possible for platforms and risk managers to compare strategies on equal terms.

## Supported protocols

The policy engine can whitelist any smart contract, but these protocols ship with pre-built permission sets — ready to use in your strategy with prebuilt constraints, spending limits, and risk classifications.

| Category            | Protocol    | Chains              | Description                                                             |
| ------------------- | ----------- | ------------------- | ----------------------------------------------------------------------- |
| **Lending**         | Aave V3     | ETH, ARB, OPT, BASE | Supply, borrow, and manage collateral across the largest lending market |
| **Lending**         | Compound V3 | ETH, ARB, BASE      | Single-asset lending markets with isolated risk                         |
| **Lending**         | Morpho Blue | ETH, ARB, BASE      | Isolated lending markets with permissionless market creation            |
| **Lending**         | Spark       | ETH                 | Lending and savings products in the Sky (Maker) ecosystem               |
| **DEX / Swaps**     | Uniswap V3  | ETH, ARB, OPT, BASE | Concentrated liquidity swaps and LP positions                           |
| **DEX / Swaps**     | CoW Swap    | ETH, ARB, BASE      | MEV-protected batch auction swaps via pre-signing                       |
| **DEX / Swaps**     | Balancer V2 | ETH, ARB, OPT, BASE | Weighted pool swaps and liquidity provisioning                          |
| **Staking / Yield** | Lido        | ETH                 | Liquid staking (stETH/wstETH) with withdrawal queue support             |
| **Staking / Yield** | Pendle      | ETH, ARB            | Yield tokenization — trade fixed and variable yield separately          |
| **Savings**         | Sky DSR     | ETH                 | DAI Savings Rate — earn yield on idle DAI                               |

<Tip>This list is growing. If a protocol you need is not listed, you can whitelist its contracts manually through the policy engine. Any EVM smart contract can be scoped with custom permissions.</Tip>

## Use cases

* **Custom RWA looping strategy with instant redeem liquidity** — recursive deposit/borrow against tokenized real-world assets, with a liquid reserve to serve immediate redemptions
* **Multi-perps yield strategy** — allocate across perpetual futures protocols to capture funding rate yield, with on-chain policy constraints on position sizing and protocol exposure
* **Cross-chain yield farming** — deploy treasury wallets on multiple EVM chains and allocate capital to yield sources across networks, with unified accounting and NAV reporting
* **Custom protocol interactions** — any strategy requiring contract calls not yet available as standard Railnet Vehicles. The policy engine lets you whitelist exactly the contracts and functions you need

## Custom Vehicle patterns

Looping (recursive deposit/borrow to amplify yield), leverage, and cross-chain bridging are patterns you build using the Specialized Vehicle's on-chain policy engine. For each pattern, you whitelist the specific contracts and functions your strategy needs:

* A **looping strategy** whitelists a lending protocol's deposit and borrow functions, allowing recursive calls within the policy engine's constraints
* A **leverage strategy** whitelists borrowing and swap contracts, with calldata-level checks constraining leverage ratios
* A **bridging strategy** whitelists bridge contracts and destination-chain treasury wallets, enabling cross-chain capital movement under on-chain governance

These are not built-in protocol features — they are custom patterns enabled by the policy engine's flexibility. The on-chain nature of the policy means every constraint is visible to depositors and auditors.

## How it connects to Railnet

<Info>While Railnet is not fully live, the **distribution of Advanced Strategies is done directly from the Vault 7540**, as well as the fees management.</Info>

A yield source wraps the 7540 vault interface of this Advanced Strategy with Railnet's standard Vehicle adapter. This makes it fully composable with the Railnet stack:

* **Distributed directly via a Conduit** — wrap the Specialized Vehicle with a [Conduit](/conduits) to offer it to end users, with your own fees, compliance rules, and branded shares
* **Used as a sub-vehicle in an Allocation Strategy** — a [MultiVehicle](/developers/contracts/multi-vehicle) can hold a Specialized Vehicle alongside standard Vehicles, creating a fund-of-funds model where managed allocation and custom execution coexist
* **Fees managed at the Railnet Vehicle level** — the standard [fee framework](/developers/contracts/fee-manager) applies, including detailed per-fee-type accounting, multi-recipient support, and flexible revenue distribution

From the perspective of a Conduit or an Allocation Strategy, a Specialized Vehicle behaves like any other Vehicle — deposits, redemptions, and NAV reporting follow the same STEAM interface.

## Fund of funds

An Allocation Strategy (MultiVehicle) can include Specialized Vehicles as sub-vehicles alongside standard Vehicles. The MultiVehicle's [sector-based accounting](/developers/contracts/accounting) tracks the Specialized Vehicle's NAV just like any other sub-vehicle — each sub-vehicle occupies a sector, and the Allocation Strategy computes its aggregate NAV from all sectors.

This enables portfolio construction where some allocation goes to established yield sources (via standard Vehicles) and some goes to custom strategies (via Specialized Vehicles), all managed through a single Allocation Strategy with unified accounting, fee collection, and distribution.

## What to read next

<CardGroup cols={2}>
  <Card title="Policy engine" icon="shield-halved" href="/strategies/advanced/policy-engine">
    How the Policy Engine enforces on-chain permissions, spending limits, and guardian governance.
  </Card>

  <Card title="Operate an Advanced Strategy" icon="sliders" href="/strategies/advanced/operate">
    Day-to-day operations — execute transactions, manage spending limits, update permissions.
  </Card>

  <Card title="Allocation Strategies" icon="sitemap" href="/strategies/allocation">
    Compose multiple yield sources and Advanced Strategies into a managed portfolio with automated queues.
  </Card>

  <Card title="Risk management" icon="shield" href="/strategies/risk-management">
    Guardrails, allocation caps, and risk frameworks for strategy operations.
  </Card>
</CardGroup>
