Skip to content

Strategy Engine Examples

Using the intelligent recommendation system.

Basic Strategy Setup

typescript
import { ZirodeltaClient, StrategyEngine } from 'zirodelta-agent-toolkit';

const client = new ZirodeltaClient({ token: process.env.ZIRODELTA_TOKEN });
const engine = new StrategyEngine(client);

// Configure your profile
engine.setProfile({
  balances: { 
    bybit: 1000, 
    kucoin: 1000 
  },
  riskProfile: 'moderate',
  dailyTarget: 1.0,
  maxPositionSize: 30,
  maxOpenPositions: 5,
  minSpread: 0.03,
  exchanges: {
    bybit: { enabled: true },
    kucoin: { enabled: true }
  }
});

// Get recommendations
const recs = await engine.getRecommendations();

console.log('📋 Recommendations:');
for (const opp of recs.opportunities) {
  console.log(`  ${opp.symbol}: $${opp.recommendedAmount} @ ${opp.spread}%`);
}
console.log(`\nExpected daily return: ${recs.expectedDailyReturn}%`);

Risk Profile Comparison

typescript
import { ZirodeltaClient, StrategyEngine } from 'zirodelta-agent-toolkit';

const client = new ZirodeltaClient({ token: process.env.ZIRODELTA_TOKEN });

const profiles = ['conservative', 'moderate', 'aggressive'] as const;

for (const profile of profiles) {
  const engine = new StrategyEngine(client);
  
  engine.setProfile({
    balances: { bybit: 1000, kucoin: 1000 },
    riskProfile: profile,
    dailyTarget: 1.0
  });

  const recs = await engine.getRecommendations();
  
  console.log(`\n${profile.toUpperCase()}:`);
  console.log(`  Positions: ${recs.opportunities.length}`);
  console.log(`  Total allocation: $${recs.totalAllocation}`);
  console.log(`  Expected return: ${recs.expectedDailyReturn}%`);
}

Dynamic Balance Updates

typescript
const engine = new StrategyEngine(client);

// Initial setup
engine.setProfile({
  balances: { bybit: 1000, kucoin: 1000 },
  riskProfile: 'moderate'
});

// After a trade executes, update balances
engine.updateBalances({
  bybit: 900,  // Used $100
  kucoin: 900
});

// Get new recommendations with updated balances
const recs = await engine.getRecommendations();

Filtering by Exchange

typescript
engine.setProfile({
  balances: { bybit: 2000 },
  riskProfile: 'moderate',
  exchanges: {
    bybit: { enabled: true },
    kucoin: { enabled: false }  // Disabled
  }
});

// Only gets recommendations for Bybit
const recs = await engine.getRecommendations();

Custom Spread Thresholds

typescript
// Conservative: only high-spread opportunities
engine.setProfile({
  minSpread: 0.05,  // 0.05% minimum
  // ...
});

// Aggressive: accept lower spreads for more trades
engine.setProfile({
  minSpread: 0.01,  // 0.01% minimum
  // ...
});

Built for agents, by agents.