Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
100 changes: 100 additions & 0 deletions examples/fintech/arbitrage-strategy.sigmos
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
spec "ArbitrageStrategy" v1.0 {
description: "Advanced multi-exchange arbitrage strategy with AI-powered opportunity detection and latency optimization for systematic price differential capture."

inputs:
strategy_id: string
trading_pair: string { default: "BTC/USD" }
exchange_1: string { default: "binance" }
exchange_2: string { default: "coinbase" }
min_profit_threshold: float { default: 0.005 }

account_balance: float { default: 100000.0 }
max_position_size: float { default: 0.1 }
execution_speed_priority: bool { default: true }
slippage_tolerance: float { default: 0.001 }

triangular_arbitrage: bool { default: false }
cross_exchange_arbitrage: bool { default: true }
statistical_arbitrage: bool { default: false }
funding_rate_arbitrage: bool { default: false }

ai_models: string
market_data_feeds: string
execution_venues: string

latency_monitoring: bool { default: true }
price_feed_redundancy: bool { default: true }
execution_timeout: int { default: 10 }

risk_management_enabled: bool { default: true }
max_exposure_per_exchange: float { default: 0.5 }
balance_monitoring: bool { default: true }
profit_tracking: bool { default: true }

computed:
price_differential: -> calculate_price_diff()
profit_opportunity: -> calculate_profit()
execution_latency: -> measure_latency()

events:
on_create(strategy): initialize_arbitrage
on_opportunity(price_differential): execute_arbitrage
on_fill(leg_1): execute_arbitrage_leg_2
on_complete(arbitrage): record_profit
on_error(execution_failure): handle_failed_arbitrage

actions:
initialize_arbitrage {
description: "Initialize arbitrage trading strategy"
mcp_call: "trading/arbitrage/initialize"
parameters: {
strategy_id: strategy_id,
trading_pair: trading_pair,
exchange_1: exchange_1,
exchange_2: exchange_2,
account_balance: account_balance
}
}

execute_arbitrage {
description: "Execute arbitrage opportunity"
mcp_call: "trading/arbitrage/execute"
parameters: {
trading_pair: trading_pair,
price_differential: price_differential,
profit_opportunity: profit_opportunity,
max_position_size: max_position_size,
execution_speed_priority: execution_speed_priority
}
}

execute_arbitrage_leg_2 {
description: "Execute second leg of arbitrage trade"
mcp_call: "trading/arbitrage/execute_leg_2"
parameters: {
strategy_id: strategy_id,
execution_timeout: execution_timeout,
slippage_tolerance: slippage_tolerance
}
}

record_profit {
description: "Record arbitrage profit and update metrics"
mcp_call: "trading/arbitrage/record_profit"
parameters: {
strategy_id: strategy_id,
profit_opportunity: profit_opportunity,
execution_latency: execution_latency
}
}

handle_failed_arbitrage {
description: "Handle failed arbitrage execution"
mcp_call: "trading/arbitrage/handle_failure"
parameters: {
strategy_id: strategy_id,
failure_reason: "execution_timeout",
risk_management_enabled: risk_management_enabled
}
}
}
101 changes: 101 additions & 0 deletions examples/fintech/grid-trading-strategy.sigmos
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
spec "GridTradingStrategy" v1.0 {
description: "Advanced grid trading strategy with AI-powered volatility analysis and dynamic grid adjustment for systematic profit from market oscillations."

inputs:
strategy_id: string
trading_pair: string { default: "BTC/USD" }
grid_levels: int { default: 10 }
grid_spacing_pct: float { default: 0.02 }
base_order_size: float { default: 1000.0 }

account_balance: float { default: 100000.0 }
total_grid_allocation: float { default: 0.5 }
upper_price_limit: float { default: 0.0 }
lower_price_limit: float { default: 0.0 }

dynamic_grid_enabled: bool { default: true }
volatility_adjustment: bool { default: true }
trend_filter_enabled: bool { default: true }
volume_weighted_orders: bool { default: true }

ai_models: string
market_data_feed: string
execution_venue: string

stop_loss_enabled: bool { default: false }
take_profit_enabled: bool { default: false }
grid_rebalance_frequency: int { default: 24 }

risk_management_enabled: bool { default: true }
max_drawdown_pct: float { default: 0.15 }
position_monitoring: bool { default: true }
profit_taking_enabled: bool { default: true }

computed:
current_price: -> get_current_price()
grid_spacing: -> calculate_grid_spacing()
volatility_factor: -> measure_volatility()

events:
on_create(strategy): initialize_grid_trading
on_price_hit(grid_level): execute_grid_order
on_timer(grid_rebalance_frequency): rebalance_grid
on_change(volatility_factor): adjust_grid_spacing
on_error(max_drawdown): pause_grid_trading

actions:
initialize_grid_trading {
description: "Initialize grid trading strategy"
mcp_call: "trading/grid/initialize"
parameters: {
strategy_id: strategy_id,
trading_pair: trading_pair,
grid_levels: grid_levels,
grid_spacing_pct: grid_spacing_pct,
base_order_size: base_order_size,
account_balance: account_balance
}
}

execute_grid_order {
description: "Execute buy or sell order when price hits grid level"
mcp_call: "trading/grid/execute_order"
parameters: {
trading_pair: trading_pair,
current_price: current_price,
base_order_size: base_order_size,
volume_weighted_orders: volume_weighted_orders
}
}

rebalance_grid {
description: "Rebalance grid levels based on market conditions"
mcp_call: "trading/grid/rebalance"
parameters: {
strategy_id: strategy_id,
current_price: current_price,
grid_spacing: grid_spacing,
dynamic_grid_enabled: dynamic_grid_enabled
}
}

adjust_grid_spacing {
description: "Dynamically adjust grid spacing based on volatility"
mcp_call: "trading/grid/adjust_spacing"
parameters: {
volatility_factor: volatility_factor,
volatility_adjustment: volatility_adjustment,
grid_spacing_pct: grid_spacing_pct
}
}

pause_grid_trading {
description: "Pause grid trading due to excessive drawdown"
mcp_call: "trading/grid/pause"
parameters: {
strategy_id: strategy_id,
max_drawdown_pct: max_drawdown_pct,
reason: "drawdown_limit"
}
}
}
102 changes: 102 additions & 0 deletions examples/fintech/market-making-strategy.sigmos
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
spec "MarketMakingStrategy" v1.0 {
description: "Advanced market making strategy with AI-powered spread optimization and inventory management for systematic liquidity provision and bid-ask capture."

inputs:
strategy_id: string
trading_pair: string { default: "BTC/USD" }
base_spread_bps: int { default: 10 }
order_size: float { default: 1000.0 }
max_inventory: float { default: 10.0 }

account_balance: float { default: 100000.0 }
inventory_target: float { default: 0.0 }
spread_multiplier: float { default: 1.0 }
min_spread_bps: int { default: 5 }
max_spread_bps: int { default: 50 }

dynamic_spread_enabled: bool { default: true }
inventory_skew_enabled: bool { default: true }
volatility_adjustment: bool { default: true }
order_refresh_enabled: bool { default: true }

ai_models: string
market_data_feed: string
execution_venue: string

order_refresh_interval: int { default: 5 }
inventory_rebalance_threshold: float { default: 0.8 }
adverse_selection_protection: bool { default: true }

risk_management_enabled: bool { default: true }
max_position_size: float { default: 0.1 }
stop_loss_enabled: bool { default: true }
profit_target_enabled: bool { default: false }

computed:
current_inventory: -> calculate_inventory()
optimal_spread: -> calculate_optimal_spread()
market_volatility: -> measure_volatility()

events:
on_create(strategy): initialize_market_making
on_fill(order): manage_inventory
on_timer(order_refresh_interval): refresh_quotes
on_change(market_volatility): adjust_spread
on_error(inventory_limit): rebalance_inventory

actions:
initialize_market_making {
description: "Initialize market making strategy"
mcp_call: "trading/market_making/initialize"
parameters: {
strategy_id: strategy_id,
trading_pair: trading_pair,
base_spread_bps: base_spread_bps,
order_size: order_size,
account_balance: account_balance
}
}

manage_inventory {
description: "Manage inventory after order fills"
mcp_call: "trading/market_making/manage_inventory"
parameters: {
current_inventory: current_inventory,
inventory_target: inventory_target,
max_inventory: max_inventory,
inventory_skew_enabled: inventory_skew_enabled
}
}

refresh_quotes {
description: "Refresh bid and ask quotes"
mcp_call: "trading/market_making/refresh_quotes"
parameters: {
trading_pair: trading_pair,
optimal_spread: optimal_spread,
order_size: order_size,
current_inventory: current_inventory
}
}

adjust_spread {
description: "Dynamically adjust spread based on market conditions"
mcp_call: "trading/market_making/adjust_spread"
parameters: {
market_volatility: market_volatility,
volatility_adjustment: volatility_adjustment,
min_spread_bps: min_spread_bps,
max_spread_bps: max_spread_bps
}
}

rebalance_inventory {
description: "Rebalance inventory when limits are breached"
mcp_call: "trading/market_making/rebalance"
parameters: {
strategy_id: strategy_id,
current_inventory: current_inventory,
inventory_rebalance_threshold: inventory_rebalance_threshold
}
}
}
Loading
Loading