process_configuration_start_time:
  default: '00:01'
  run_stack_handler: '00:01'
  run_capital_update: '01:00'
  run_daily_prices_updates: '20:00'
  run_daily_fx_and_contract_updates: '07:00'
  run_daily_update_multiple_adjusted_prices: '23:00'
  run_systems: '20:05'
  run_strategy_order_generator: '20:10'
  run_backups: '20:15'
  run_cleaners: '20:20'
  run_reports: '20:25'
process_configuration_stop_time:
  default: '23:50'
  run_strategy_order_generator: '23:50'
  run_stack_handler: '19:45'
  run_capital_update: '19:50'
  run_daily_prices_updates: '23:50'
  run_daily_fx_and_contract_updates: '23:50'
  run_daily_update_multiple_adjusted_prices: '23:50'
  run_systems: '23:50'
  run_backups: '23:50'
  run_cleaners: '23:50'
  run_reports: '23:50'
## Examples of passing arguments
#arguments:
#  run_daily_prices_updates:
#    update_historical_prices: # everything in this block is passed as **kwargs to this method
#      download_by_zone:
#        ASIA: '07:00'
#        EMEA: '18:00'
#        US: '20:00'
#    _methods_on_completion: # and this block is passed to all methods that run on completion only
#        a: 'test'
# Examples:
#process_configuration_previous_process:
#  run_systems: 'run_daily_prices_updates'
#  run_strategy_order_generator: 'run_systems'
#  run_cleaners: 'run_strategy_order_generator'
#  run_backups: 'run_cleaners'
#  run_reports: 'run_strategy_order_generator'
# we include every method to make process monitoring easier
process_configuration_methods:
  run_capital_update:
    update_total_capital:
      frequency: 120
      max_executions: 10
    strategy_allocation:
      max_executions: 1
  run_daily_prices_updates:
    update_historical_prices:
      max_executions: 1
  run_daily_fx_and_contract_updates:
    update_fx_prices:
      max_executions: 1
    update_sampled_contracts:
      max_executions: 1
  run_daily_update_multiple_adjusted_prices:
    update_multiple_adjusted_prices:
      max_executions: 1
  run_stack_handler:
    refresh_additional_sampling_all_instruments:
      frequency: 60
      max_executions: -1
    check_external_position_break:
      frequency: 0
      max_executions: -1
    spawn_children_from_new_instrument_orders:
      frequency: 0
      max_executions: -1
    generate_force_roll_orders:
      frequency: 0
      max_executions: 1
    create_broker_orders_from_contract_orders:
      frequency: 0
      max_executions: -1
    process_fills_stack:
      frequency: 0
      max_executions: -1
    handle_completed_orders:
      frequency: 0
      max_executions: -1
    safe_stack_removal:
      run_on_completion_only: True
  run_reports:
    costs_report:
      max_executions: 1
    liquidity_report:
      max_executions: 1
    status_report:
      max_executions: 1
    roll_report:
      max_executions: 1
    daily_pandl_report:
      max_executions: 1
    reconcile_report:
      max_executions: 1
    trade_report:
      max_executions: 1
    strategy_report:
      max_executions: 1
    risk_report:
      max_executions: 1
    slippage_report:
      max_executions: 1
    instrument_risk_report:
      max_executions: 1
    min_capital:
      max_executions: 1
    duplicate_market:
      max_executions: 1
    remove_markets_report:
      max_executions: 1
    market_monitor_report:
      max_executions: 1
    account_curve_report:
      max_executions: 1
  run_backups:
    backup_db_to_csv:
      max_executions: 1
    backup_parquet:
      max_executions: 1
    backup_files:
      max_executions: 1
    backup_mongo_data_as_dump:
      max_executions: 1
  run_cleaners:
    clean_backtest_states:
      max_executions: 1
    clean_echo_files:
      max_executions: 1
    clean_log_files:
      max_executions: 1
# You need to create an entry in private control config that looks like this for each strategy
#process_configuration_methods:
#  run_systems:
#    example:
#      max_executions: 1
#      object: sysproduction.strategy_code.run_system_classic.runSystemClassic
#      backtest_config_filename: systems.provided.futures_chapter15.futures_config.yaml
#  run_strategy_order_generator:
#    example:
#      object: sysexecution.strategies.classic_buffered_positions.orderGeneratorForBufferedPositions
#      max_executions: 1
