diff --git a/examples/fintech/arbitrage-strategy.sigmos b/examples/fintech/arbitrage-strategy.sigmos new file mode 100644 index 0000000..9efca18 --- /dev/null +++ b/examples/fintech/arbitrage-strategy.sigmos @@ -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 + } + } +} diff --git a/examples/fintech/grid-trading-strategy.sigmos b/examples/fintech/grid-trading-strategy.sigmos new file mode 100644 index 0000000..5b0946b --- /dev/null +++ b/examples/fintech/grid-trading-strategy.sigmos @@ -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" + } + } +} diff --git a/examples/fintech/market-making-strategy.sigmos b/examples/fintech/market-making-strategy.sigmos new file mode 100644 index 0000000..7008abc --- /dev/null +++ b/examples/fintech/market-making-strategy.sigmos @@ -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 + } + } +} diff --git a/examples/fintech/mean-reversion-strategy.sigmos b/examples/fintech/mean-reversion-strategy.sigmos new file mode 100644 index 0000000..6fc1bd3 --- /dev/null +++ b/examples/fintech/mean-reversion-strategy.sigmos @@ -0,0 +1,96 @@ +spec "MeanReversionStrategy" v1.0 { + description: "Advanced mean reversion trading strategy with AI-powered statistical analysis and dynamic risk management for systematic alpha generation." + + inputs: + strategy_id: string + trading_pairs: string { default: "BTC/USD,ETH/USD,SPY" } + lookback_period: int { default: 20 } + entry_threshold: float { default: 2.0 } + exit_threshold: float { default: 0.5 } + + account_balance: float { default: 100000.0 } + max_position_size: float { default: 0.05 } + risk_tolerance: string { default: "moderate" } + stop_loss_pct: float { default: 0.02 } + take_profit_pct: float { default: 0.04 } + + bollinger_bands_enabled: bool { default: true } + rsi_enabled: bool { default: true } + z_score_enabled: bool { default: true } + volume_confirmation: bool { default: true } + + ai_models: string + market_data_feed: string + execution_venue: string + + compliance_mode: bool { default: true } + max_daily_trades: int { default: 50 } + trading_hours_only: bool { default: true } + risk_management_enabled: bool { default: true } + + computed: + max_trade_amount: -> calculate_position_size() + current_volatility: -> measure_volatility() + market_regime: -> detect_regime() + + events: + on_create(strategy): initialize_mean_reversion + on_change(market_regime): adjust_strategy_parameters + on_signal(entry): execute_mean_reversion_entry + on_signal(exit): execute_mean_reversion_exit + on_error(risk_breach): emergency_position_close + + actions: + initialize_mean_reversion { + description: "Initialize mean reversion trading strategy" + mcp_call: "trading/mean_reversion/initialize" + parameters: { + strategy_id: strategy_id, + trading_pairs: trading_pairs, + lookback_period: lookback_period, + entry_threshold: entry_threshold, + exit_threshold: exit_threshold, + account_balance: account_balance + } + } + + adjust_strategy_parameters { + description: "Dynamically adjust strategy parameters based on market regime" + mcp_call: "trading/mean_reversion/adjust_parameters" + parameters: { + market_regime: market_regime, + current_volatility: current_volatility, + risk_tolerance: risk_tolerance + } + } + + execute_mean_reversion_entry { + description: "Execute mean reversion entry signal" + mcp_call: "trading/mean_reversion/enter_position" + parameters: { + trading_pairs: trading_pairs, + max_trade_amount: max_trade_amount, + entry_threshold: entry_threshold, + stop_loss_pct: stop_loss_pct, + take_profit_pct: take_profit_pct + } + } + + execute_mean_reversion_exit { + description: "Execute mean reversion exit signal" + mcp_call: "trading/mean_reversion/exit_position" + parameters: { + exit_threshold: exit_threshold, + strategy_id: strategy_id + } + } + + emergency_position_close { + description: "Emergency position closure for risk management" + mcp_call: "trading/risk_management/emergency_close" + parameters: { + strategy_id: strategy_id, + reason: "risk_breach" + } + } +} diff --git a/examples/fintech/momentum-strategy.sigmos b/examples/fintech/momentum-strategy.sigmos new file mode 100644 index 0000000..0cbc3a0 --- /dev/null +++ b/examples/fintech/momentum-strategy.sigmos @@ -0,0 +1,114 @@ +spec "MomentumTrendStrategy" v1.0 { + description: "Advanced momentum and trend following strategy with AI-powered trend detection and adaptive position sizing for systematic trend capture." + + inputs: + strategy_id: string + trading_pairs: string { default: "BTC/USD,ETH/USD,QQQ,SPY" } + trend_lookback: int { default: 50 } + momentum_period: int { default: 14 } + trend_strength_threshold: float { default: 0.7 } + + account_balance: float { default: 100000.0 } + base_position_size: float { default: 0.03 } + max_position_size: float { default: 0.15 } + pyramid_enabled: bool { default: true } + pyramid_levels: int { default: 3 } + + moving_average_fast: int { default: 10 } + moving_average_slow: int { default: 30 } + rsi_period: int { default: 14 } + atr_period: int { default: 14 } + + trend_confirmation_required: bool { default: true } + volume_confirmation: bool { default: true } + breakout_detection: bool { default: true } + + ai_models: string + market_data_feed: string + execution_venue: string + + stop_loss_atr_multiplier: float { default: 2.0 } + take_profit_ratio: float { default: 3.0 } + trailing_stop_enabled: bool { default: true } + + max_daily_trades: int { default: 20 } + trading_session_filter: bool { default: true } + risk_management_enabled: bool { default: true } + + computed: + position_size: -> calculate_momentum_position() + trend_strength: -> measure_trend_strength() + market_volatility: -> calculate_atr() + + events: + on_create(strategy): initialize_momentum_strategy + on_signal(trend_start): enter_trend_position + on_signal(trend_continuation): add_to_position + on_signal(trend_end): exit_trend_position + on_change(trend_strength): adjust_position_size + on_error(drawdown_limit): reduce_exposure + + actions: + initialize_momentum_strategy { + description: "Initialize momentum and trend following strategy" + mcp_call: "trading/momentum/initialize" + parameters: { + strategy_id: strategy_id, + trading_pairs: trading_pairs, + trend_lookback: trend_lookback, + momentum_period: momentum_period, + account_balance: account_balance + } + } + + enter_trend_position { + description: "Enter initial trend following position" + mcp_call: "trading/momentum/enter_trend" + parameters: { + trading_pairs: trading_pairs, + position_size: position_size, + trend_strength: trend_strength, + stop_loss_atr_multiplier: stop_loss_atr_multiplier, + take_profit_ratio: take_profit_ratio + } + } + + add_to_position { + description: "Add to existing position on trend continuation" + mcp_call: "trading/momentum/pyramid_position" + parameters: { + strategy_id: strategy_id, + pyramid_enabled: pyramid_enabled, + pyramid_levels: pyramid_levels, + max_position_size: max_position_size + } + } + + exit_trend_position { + description: "Exit trend following position" + mcp_call: "trading/momentum/exit_trend" + parameters: { + strategy_id: strategy_id, + trailing_stop_enabled: trailing_stop_enabled + } + } + + adjust_position_size { + description: "Dynamically adjust position size based on trend strength" + mcp_call: "trading/momentum/adjust_size" + parameters: { + trend_strength: trend_strength, + market_volatility: market_volatility, + base_position_size: base_position_size + } + } + + reduce_exposure { + description: "Reduce exposure due to drawdown limits" + mcp_call: "trading/risk_management/reduce_exposure" + parameters: { + strategy_id: strategy_id, + reduction_factor: 0.5 + } + } +} diff --git a/examples/fintech/pairs-trading-strategy.sigmos b/examples/fintech/pairs-trading-strategy.sigmos new file mode 100644 index 0000000..e39c136 --- /dev/null +++ b/examples/fintech/pairs-trading-strategy.sigmos @@ -0,0 +1,114 @@ +spec "PairsTradingStrategy" v1.0 { + description: "Market-neutral pairs trading strategy with AI-powered correlation analysis and statistical arbitrage for systematic alpha generation." + + inputs: + strategy_id: string + asset_pair_1: string { default: "AAPL" } + asset_pair_2: string { default: "MSFT" } + correlation_lookback: int { default: 60 } + entry_z_score: float { default: 2.0 } + exit_z_score: float { default: 0.5 } + + account_balance: float { default: 100000.0 } + pair_allocation: float { default: 0.1 } + hedge_ratio: float { default: 1.0 } + min_correlation: float { default: 0.7 } + max_spread_volatility: float { default: 0.05 } + + cointegration_test: bool { default: true } + dynamic_hedge_ratio: bool { default: true } + spread_normalization: bool { default: true } + volume_weighted_entry: bool { default: true } + + ai_models: string + market_data_feed: string + execution_venue: string + + stop_loss_z_score: float { default: 3.5 } + max_holding_period: int { default: 30 } + rebalance_frequency: int { default: 5 } + + risk_management_enabled: bool { default: true } + correlation_monitoring: bool { default: true } + spread_monitoring: bool { default: true } + position_sizing_dynamic: bool { default: true } + + computed: + current_spread: -> calculate_spread() + spread_z_score: -> calculate_z_score() + correlation_coefficient: -> measure_correlation() + + events: + on_create(strategy): initialize_pairs_trading + on_signal(spread_divergence): enter_pairs_position + on_signal(spread_convergence): exit_pairs_position + on_change(correlation_coefficient): adjust_hedge_ratio + on_timer(rebalance_frequency): rebalance_positions + on_error(correlation_breakdown): emergency_exit + + actions: + initialize_pairs_trading { + description: "Initialize pairs trading strategy" + mcp_call: "trading/pairs/initialize" + parameters: { + strategy_id: strategy_id, + asset_pair_1: asset_pair_1, + asset_pair_2: asset_pair_2, + correlation_lookback: correlation_lookback, + account_balance: account_balance + } + } + + enter_pairs_position { + description: "Enter market-neutral pairs position" + mcp_call: "trading/pairs/enter_position" + parameters: { + asset_pair_1: asset_pair_1, + asset_pair_2: asset_pair_2, + current_spread: current_spread, + spread_z_score: spread_z_score, + hedge_ratio: hedge_ratio, + pair_allocation: pair_allocation + } + } + + exit_pairs_position { + description: "Exit pairs trading position" + mcp_call: "trading/pairs/exit_position" + parameters: { + strategy_id: strategy_id, + exit_z_score: exit_z_score, + spread_z_score: spread_z_score + } + } + + adjust_hedge_ratio { + description: "Dynamically adjust hedge ratio based on correlation" + mcp_call: "trading/pairs/adjust_hedge" + parameters: { + correlation_coefficient: correlation_coefficient, + dynamic_hedge_ratio: dynamic_hedge_ratio, + strategy_id: strategy_id + } + } + + rebalance_positions { + description: "Rebalance pairs positions periodically" + mcp_call: "trading/pairs/rebalance" + parameters: { + strategy_id: strategy_id, + rebalance_frequency: rebalance_frequency, + position_sizing_dynamic: position_sizing_dynamic + } + } + + emergency_exit { + description: "Emergency exit due to correlation breakdown" + mcp_call: "trading/pairs/emergency_exit" + parameters: { + strategy_id: strategy_id, + correlation_coefficient: correlation_coefficient, + min_correlation: min_correlation + } + } +}