Crypto Investor

DCA Automation on Base β€” $500 of ETH Every Monday, Zero Effort

100% execution compliance vs ~70% manualCrypto & DeFi4 min read

Key Takeaway

My AI agent executes a $500 weekly DCA into ETH on Base L2 every Monday at 9 AM β€” handling swaps, gas checks, slippage protection, and cost basis tracking with zero manual intervention.

The Problem

Dollar-cost averaging works. The data is clear. Regular purchases over time beat lump-sum timing attempts for most investors. The problem is doing it.

Every Monday morning: open wallet, connect to DEX, check gas, execute swap, confirm transaction, record the purchase, update your cost basis spreadsheet. Ten minutes if everything goes smoothly. Twenty if gas is spiking or the DEX is congested.

You know what happens in reality? You forget. You skip it because gas is high. You skip it because the price dropped and you want to "wait for the bottom." You skip it because you're on a call. Three skipped weeks later, the DCA isn't a DCA anymore β€” it's sporadic buying with extra steps.

I needed the human removed from the loop entirely.

The Solution

An agent running the Base Trading skill via Bankr executes a weekly DCA: $500 USDC β†’ ETH on Base, every Monday at 9:00 AM CET. It handles the swap, confirms the transaction, logs everything to daily notes, tracks the running cost basis, and alerts me only if something goes wrong (gas spike, slippage, insufficient balance).

Zero effort. Zero skipped weeks. Zero emotional interference.

The Process

The DCA configuration:

yamlShow code
# dca-base-config.yaml
strategy: dca
chain: base
pair:
  from: USDC
  to: ETH

schedule:
  frequency: weekly
  day: monday
  time: "09:00"  # CET

execution:
  amount_usd: 500
  max_slippage: 0.005    # 0.5% β€” pause if exceeded
  max_gas_gwei: 0.05     # Base is cheap, but set a ceiling
  dex: uniswap_v3        # Via Bankr routing

safety:
  min_balance_usdc: 600  # Alert if < 1 week of DCA remaining
  pause_on_high_gas: true
  pause_on_high_slippage: true
  require_confirmation: false  # Fully automated

tracking:
  log_to: "memory/{date}.md"
  metrics:
    - average_cost_basis
    - total_invested
    - current_value
    - performance_vs_lump_sum
    - total_gas_spent

The agent executes via Bankr on Base:

pythonShow code
# Weekly DCA execution (simplified)
async def execute_weekly_dca():
    # Check pre-conditions
    balance = await bankr.get_balance('USDC', chain='base')
    if balance < config.amount_usd:
        return alert("Insufficient USDC balance for DCA")

    # Check gas conditions
    gas_price = await bankr.get_gas_price(chain='base')
    if gas_price > config.max_gas_gwei:
        return alert(f"Gas abnormally high: {gas_price} gwei. Pausing DCA.")

    # Get quote and check slippage
    quote = await bankr.get_swap_quote(
        from_token='USDC',
        to_token='ETH',
        amount=config.amount_usd,
        chain='base'
    )

    if quote.price_impact > config.max_slippage:
        return alert(f"Slippage {quote.price_impact:.2%} exceeds 0.5%. Pausing.")

    # Execute swap
    tx = await bankr.execute_swap(quote)

    # Log to daily notes
    log_entry = {
        'date': datetime.now().isoformat(),
        'action': 'DCA Buy',
        'amount_usdc': config.amount_usd,
        'eth_received': tx.amount_received,
        'price_per_eth': config.amount_usd / tx.amount_received,
        'gas_cost_usd': tx.gas_cost_usd,
        'tx_hash': tx.hash,
    }
    await log_to_daily_notes(log_entry)
    await update_cost_basis(log_entry)

Every Monday, a clean log entry appears in my daily notes:

markdownShow code
## DCA Execution β€” Monday 2026-03-09

| Field | Value |
|-------|-------|
| Amount | $500 USDC |
| ETH received | 0.1847 ETH |
| Price | $2,707.12 / ETH |
| Gas cost | $0.003 |
| Tx | 0x7a3f...b2c1 |

**Running totals:**
| Metric | Value |
|--------|-------|
| Total invested | $11,500 |
| Total ETH | 4.2831 |
| Avg cost basis | $2,684.71 / ETH |
| Current value | $12,418 |
| Return | +8.0% |
| vs lump sum at start | +2.3% better |

The Results

MetricManual DCAAutomated Agent
Execution compliance~70% (missed weeks)100% (23/23 weeks)
Time per week10-20 min0 min
Emotional interferenceHighNone
Cost basis trackingManual spreadsheetAutomated
Gas optimization"Looks fine I guess"Threshold-based pausing
Slippage protectionOften ignoredHard 0.5% limit
Annual time saved~15 hoursβ€”
Lump sum comparisonNever calculatedUpdated weekly

The performance vs lump sum metric is the one that keeps me honest. After 23 weeks, the DCA is +2.3% ahead of a hypothetical lump sum buy at the start. Not always the case β€” but the DCA removed the decision paralysis that would have kept me from investing at all.

Try It Yourself

  1. Sign up for Mr.Chief and install the base-trader skill
  2. Fund a wallet on Base with USDC
  3. Configure the DCA schedule, amount, and safety thresholds
  4. Set up daily notes logging for cost basis tracking
  5. Let it run. Check the weekly logs if you're curious. Don't interfere.

The best DCA is the one that runs every week regardless of how you feel about the market. The agent doesn't feel anything. That's the feature.


Discipline isn't a human trait. It's an automation parameter.

DCABaseautomationETHon-chain

Want results like these?

Start free with your own AI team. No credit card required.

DCA Automation on Base β€” $500 of ETH Every Monday, Zero Effort β€” Mr.Chief