> ## 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.

# Allocation Strategies

> Compose multiple yield sources into a managed allocation with automated routing and on-chain guardrails

export const AllocationOverview = () => {
  const CSS = `
    .ao-bg{fill:#F8F8F8;rx:4;ry:4}.dark .ao-bg{fill:#141414}
    .ao-t{fill:#374151;font-family:"Inter Tight","Inter",system-ui,sans-serif}.dark .ao-t{fill:#D1D5DB}
    .ao-tm{fill:#6B7280;font-family:"Inter Tight","Inter",system-ui,sans-serif}.dark .ao-tm{fill:#9CA3AF}
    .ao-h{fill:#111827;font-family:"Inter Tight","Inter",system-ui,sans-serif}.dark .ao-h{fill:#E5E7EB}
    .ao-code{fill:#6B7280;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.dark .ao-code{fill:#9CA3AF}
    .ao-str{fill:none;stroke:#458778;stroke-width:1.5;rx:6;ry:6;stroke-dasharray:6 3}.dark .ao-str{stroke:#5AA08E}
    .ao-dq{fill:#D4E8E0;rx:3;ry:3}.dark .ao-dq{fill:#1E3A2F}
    .ao-rq{fill:#FFE4D2;rx:3;ry:3}.dark .ao-rq{fill:#3D2510}
    .ao-idle{fill:#F3F4F6;rx:3;ry:3}.dark .ao-idle{fill:#1F2937}
    .ao-sv{fill:#fff;stroke:#D1D5DB;stroke-width:1;rx:3;ry:3}.dark .ao-sv{fill:#1F2937;stroke:#4B5563}
    .ao-adv{fill:#CCE5E6;stroke:none;rx:3;ry:3}.dark .ao-adv{fill:#1A3535}
    .ao-bar-bg{fill:#E5E7EB;rx:2;ry:2}.dark .ao-bar-bg{fill:#374151}
    .ao-bar-a{fill:#458778;rx:2;ry:2}.dark .ao-bar-a{fill:#5AA08E}
    .ao-bar-b{fill:#007D82;rx:2;ry:2}.dark .ao-bar-b{fill:#20B9BF}
    .ao-user{fill:#F3F4F6;stroke:#D1D5DB;stroke-width:1;rx:3;ry:3}.dark .ao-user{fill:#1F2937;stroke:#4B5563}
    .ao-dep{stroke:#458778;fill:none;stroke-width:1.5;color:#458778}.dark .ao-dep{stroke:#5AA08E;color:#5AA08E}
    .ao-red{stroke:#DC6B35;fill:none;stroke-width:1.5;color:#DC6B35}.dark .ao-red{stroke:#FF9465;color:#FF9465}
    .ao-lbl-pos{fill:#458778;font-family:"Inter Tight","Inter",system-ui,sans-serif;font-weight:700}.dark .ao-lbl-pos{fill:#5AA08E}
    .ao-lbl-neg{fill:#DC6B35;font-family:"Inter Tight","Inter",system-ui,sans-serif;font-weight:700}.dark .ao-lbl-neg{fill:#FF9465}
    .ao-bar-ext{transform-box:fill-box;transform-origin:left center;animation:ao-bar-scale 600ms ease-out 400ms both}
    .ao-bar-cover{fill:#fff;rx:0;ry:0}.dark .ao-bar-cover{fill:#1F2937}

    @keyframes ao-bar-scale{from{transform:scaleX(0)}to{transform:scaleX(1)}}
    .ao-g1,.ao-g2,.ao-g3{transition:opacity 300ms ease}
    .ao-step{display:flex;justify-content:center;gap:8px;margin-top:12px;font-family:"Inter Tight","Inter",sans-serif}
    .ao-wrap>input[type="radio"]{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);border:0}
    .ao-step label{padding:6px 18px;border:1px solid #DADADA;color:#6B7280;font-size:12px;font-weight:600;cursor:pointer;transition:all 200ms ease;text-align:center;line-height:1.4}
    .ao-step label:hover{border-color:#A7A8A8;color:#374151}
    .ao-step label small{display:block;font-size:10px;font-weight:400;opacity:0.65}
    #ao-s1:checked~.ao-svg .ao-g1{opacity:1!important;animation:none!important}
    #ao-s1:checked~.ao-svg .ao-g2,#ao-s1:checked~.ao-svg .ao-g3{opacity:0.12!important;animation:none!important}
    #ao-s2:checked~.ao-svg .ao-g2{opacity:1!important;animation:none!important}
    #ao-s2:checked~.ao-svg .ao-g1,#ao-s2:checked~.ao-svg .ao-g3{opacity:0.12!important;animation:none!important}
    #ao-s3:checked~.ao-svg .ao-g3{opacity:1!important;animation:none!important}
    #ao-s3:checked~.ao-svg .ao-g1,#ao-s3:checked~.ao-svg .ao-g2{opacity:0.12!important;animation:none!important}
    #ao-s1:checked~.ao-step,#ao-s2:checked~.ao-step,#ao-s3:checked~.ao-step{opacity:1!important;pointer-events:auto!important;animation:none!important}
    #ao-s1:checked~.ao-step label[for="ao-s1"],#ao-s2:checked~.ao-step label[for="ao-s2"],#ao-s3:checked~.ao-step label[for="ao-s3"]{background:#458778;border-color:#458778;color:#fff}
    .dark .ao-step label{border-color:#4B5563;color:#9CA3AF}
    .dark .ao-step label:hover{border-color:#6B7280;color:#D1D5DB}
    .dark #ao-s1:checked~.ao-step label[for="ao-s1"],.dark #ao-s2:checked~.ao-step label[for="ao-s2"],.dark #ao-s3:checked~.ao-step label[for="ao-s3"]{background:#5AA08E;border-color:#5AA08E;color:#fff}
  `;
  const bz = (x1, y1, x2, y2) => {
    const dx = x2 - x1;
    const dy = y2 - y1;
    return `M${x1},${y1} C${x1 + dx * 0.5},${y1 + dy * 0.35} ${x2 - dx * 0.5},${y2 - dy * 0.35} ${x2},${y2}`;
  };
  return <div className="not-prose w-full my-6 overflow-x-auto ao-wrap" style={{
    padding: '2px',
    position: 'relative'
  }}>
      <style>{CSS}</style>
      <input type="radio" name="ao" id="ao-s1" defaultChecked />
      <input type="radio" name="ao" id="ao-s2" />
      <input type="radio" name="ao" id="ao-s3" />
      <svg className="ao-svg" viewBox="0 -15 920 325" style={{
    width: '100%',
    height: 'auto',
    minWidth: '650px',
    display: 'block'
  }} role="img" aria-label="Allocation Strategy: deposit routing, rebalancing, and redeem flow">
        <defs>
          <marker id="ao-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="920" height="325" className="ao-bg" />

        <rect x="10" y="108" width="72" height="94" className="ao-user" />
        <text x="46" y="148" textAnchor="middle" className="ao-t" fontSize="13" fontWeight="600">Users</text>
        <text x="46" y="166" textAnchor="middle" className="ao-tm" fontSize="9">deposit /</text>
        <text x="46" y="178" textAnchor="middle" className="ao-tm" fontSize="9">redeem</text>

        <rect x="115" y="8" width="340" height="293" className="ao-str" />
        <text x="285" y="28" textAnchor="middle" className="ao-h" fontSize="13" fontWeight="700">AlphaCapital USDC Strategy</text>
        <text x="285" y="44" textAnchor="middle" className="ao-tm" fontSize="10">Managed for Platform XYZ</text>

        <rect x="130" y="58" width="310" height="42" className="ao-dq" />
        <text x="145" y="76" className="ao-t" fontSize="11" fontWeight="600">Deposit Queue</text>
        <text x="145" y="91" className="ao-tm" fontSize="9.5">Queue: Aave up to $100M → Morpho → Advanced</text>

        <rect x="130" y="115" width="310" height="38" className="ao-idle" />
        <text x="285" y="138" textAnchor="middle" className="ao-tm" fontSize="10">Idle Capital • Pending settlements</text>

        <rect x="130" y="168" width="310" height="42" className="ao-rq" />
        <text x="145" y="186" className="ao-t" fontSize="11" fontWeight="600">Redeem Queue</text>
        <text x="145" y="201" className="ao-tm" fontSize="9.5">Queue: Aave untill empty → Morpho → Advanced</text>

        <text x="285" y="238" textAnchor="middle" className="ao-tm" fontSize="10" fontWeight="500">Asset Manager controls</text>
        <text x="285" y="254" textAnchor="middle" className="ao-code" fontSize="8.5">queue priorities • allocation caps • rebalancing</text>

        <rect x="510" y="22" width="310" height="76" className="ao-sv" />
        <text x="530" y="44" className="ao-t" fontSize="12" fontWeight="600">Morpho Blue</text>
        <text x="800" y="44" textAnchor="end" className="ao-tm" fontSize="10" fontStyle="italic">DeFi lending</text>
        <rect x="530" y="54" width="240" height="8" className="ao-bar-bg" />
        <rect x="530" y="54" width="96" height="8" className="ao-bar-a" />
        <text x="800" y="62" textAnchor="end" className="ao-t" fontSize="11" fontWeight="600">40%</text>
        <text x="530" y="84" className="ao-code" fontSize="8.5">Cap: $12.5M • Allocated: $10M</text>

        <rect x="510" y="116" width="310" height="76" className="ao-sv" />
        <text x="530" y="138" className="ao-t" fontSize="12" fontWeight="600">Aave V3</text>
        <text x="800" y="138" textAnchor="end" className="ao-tm" fontSize="10" fontStyle="italic">DeFi lending</text>
        <rect x="530" y="148" width="240" height="8" className="ao-bar-bg" />
        <rect x="530" y="148" width="84" height="8" className="ao-bar-a" />
        <text x="800" y="156" textAnchor="end" className="ao-t" fontSize="11" fontWeight="600">35%</text>
        <text x="530" y="178" className="ao-code" fontSize="8.5">Cap: $11.25M • Allocated: $8.75M</text>

        <rect x="510" y="210" width="310" height="76" className="ao-adv" />
        <text x="530" y="232" className="ao-t" fontSize="12" fontWeight="600">Advanced Strategy</text>
        <text x="800" y="232" textAnchor="end" className="ao-tm" fontSize="10" fontStyle="italic">Custom execution</text>
        <rect x="530" y="242" width="240" height="8" className="ao-bar-bg" />
        <rect x="530" y="242" width="60" height="8" className="ao-bar-b" />
        <text x="800" y="250" textAnchor="end" className="ao-t" fontSize="11" fontWeight="600">25%</text>
        <text x="530" y="272" className="ao-code" fontSize="8.5">Cap: $7.5M • Allocated: $6.25M</text>

        <g className="ao-g1">
          <path d={bz(82, 135, 130, 74)} className="ao-dep" markerEnd="url(#ao-a)" />
          <path d={bz(440, 76, 510, 148)} className="ao-dep" markerEnd="url(#ao-a)" />
          <rect x="614" y="148" width="24" height="8" className="ao-bar-a ao-bar-ext" />
          <text x="648" y="156" className="ao-lbl-pos" fontSize="9">+10%</text>
        </g>

        <g className="ao-g2">
          <rect x="614" y="148" width="24" height="8" className="ao-bar-a" />
          <rect x="602" y="54" width="24" height="8" className="ao-bar-cover" />
          <text x="636" y="50" className="ao-lbl-neg" fontSize="9">-10%</text>
          <rect x="590" y="242" width="24" height="8" className="ao-bar-b ao-bar-ext" />
          <text x="624" y="250" className="ao-lbl-pos" fontSize="9">+10%</text>
          <text x="665" y="204" textAnchor="middle" className="ao-lbl-neg" fontSize="9" fontStyle="italic">AM rebalance(10%,Morpho,Advanced)</text>
        </g>

        <g className="ao-g3">
          <rect x="602" y="54" width="24" height="8" className="ao-bar-cover" />
          <rect x="590" y="242" width="24" height="8" className="ao-bar-b" />
          <rect x="614" y="148" width="24" height="8" className="ao-bar-a" />
          <path d={bz(510, 174, 440, 186)} className="ao-red" markerEnd="url(#ao-a)" />
          <path d={bz(130, 186, 82, 170)} className="ao-red" markerEnd="url(#ao-a)" />
          <rect x="626" y="148" width="12" height="8" className="ao-bar-cover" />
          <text x="648" y="156" className="ao-lbl-neg" fontSize="9">-5%</text>
        </g>
      </svg>
      <div className="ao-step">
        <label htmlFor="ao-s1">Deposit<br /><small>Routes to Aave</small></label>
        <label htmlFor="ao-s2">Rebalance<br /><small>Morpho to Advanced</small></label>
        <label htmlFor="ao-s3">Redeem<br /><small>Pulls from Aave</small></label>
      </div>
    </div>;
};

An Allocation Strategy is the composition layer of Railnet. Once you have multiple yield sources — [Advanced Strategies](/strategies/advanced), standard protocol adapters, or both — you compose them into a single managed allocation with automated deposit and redeem routing, sector-based accounting, and on-chain guardrails.

<AllocationOverview />

## When to use an Allocation Strategy

You need an Allocation Strategy when you want to:

* **Compose multiple yield sources** into a single product — combine lending protocols, staking, RWA, and Advanced Strategies under one allocation
* **Automate capital routing** — configurable deposit and redeem priority queues distribute capital across sources without manual intervention
* **Build fund-of-funds** — include Advanced Strategies as sub-vehicles alongside standard protocol adapters, creating a portfolio that mixes custom execution with established DeFi yield
* **Distribute through Conduits** — a single Allocation Strategy can back multiple [Conduits](/conduits), each with their own fees, compliance rules, and branded shares

## How it works

When you deploy an Allocation Strategy, you get five interconnected contracts:

| Contract                     | Purpose                                                              |
| ---------------------------- | -------------------------------------------------------------------- |
| **MultiVehicle**             | Main strategy contract. Users deposit and receive ERC-20 shares.     |
| **Sector Accounting Engine** | Tracks all asset allocations across yield sources and idle sectors.  |
| **Queue Strategy Engine**    | Defines deposit and redeem priority queues for automated allocation. |
| **Sub Query Engine**         | Executes deposit and redeem queries on yield sources.                |
| **Query Redeem Queue**       | Handles asynchronous redemption processing.                          |

Assets flow through distinct sectors — idle capital in the deposit sector, pending and active allocations per yield source, and assets awaiting user claims in the redeem sector. Every movement follows double-entry bookkeeping, giving you real-time NAV without off-chain reconciliation.

## Allocation Strategy vs Advanced Strategy

|                     | Allocation Strategy                                                  | Advanced Strategy                                             |
| ------------------- | -------------------------------------------------------------------- | ------------------------------------------------------------- |
| **Purpose**         | Compose multiple yield sources into one managed allocation           | Execute custom logic on any protocol with full flexibility    |
| **Contract**        | MultiVehicle                                                         | Specialized Vehicle (Safe + Zodiac Roles)                     |
| **Best for**        | Diversified portfolios, automated routing, fund-of-funds             | Standalone strategies, bespoke DeFi execution, RWA operations |
| **Guardrails**      | Role-based access control (EAC)                                      | On-chain policy engine (Zodiac Roles Modifier v2)             |
| **Typical journey** | Built after you have multiple strategies or yield sources to compose | Where most asset managers start                               |

The two are composable: an Advanced Strategy can serve as a sub-vehicle inside an Allocation Strategy, and both can be distributed to users via [Conduits](/conduits).

## Guides

<CardGroup cols={2}>
  <Card title="Create an Allocation Strategy" icon="plus" href="/strategies/allocation/create">
    Deploy the Allocation Strategy ecosystem — EAC, Fee Manager, and MultiVehicle — in a single transaction.
  </Card>

  <Card title="Guardrails" icon="shield" href="/strategies/allocation/guardrails">
    Understand the trust boundary between platforms and asset managers.
  </Card>

  <Card title="Operate an Allocation Strategy" icon="sliders" href="/strategies/allocation/operate">
    Manage allocations, rebalance across yield sources, and handle day-to-day operations.
  </Card>

  <Card title="Risk management" icon="shield-check" href="/strategies/risk-management">
    Evaluate yield sources, manage concentration risk, and handle emergencies.
  </Card>
</CardGroup>
