in src/backend/entrypoints/llm_backend/api/llm.py [0:0]
def calculate_backtesting(request_model: BacktestingRequestModel = Body(), session: Session = Depends(get_session)):
if not session.flow_status.is_step_done(Steps.SUBMIT_LLM_CHAT):
raise LLMChatNotSubmittedError
if session.flow_status.is_llm_chat_history_cleared:
raise LLMChatHistoryClearedError
if not session.flow_status.is_trading_block_present:
raise TradingBlockIsNotPresentError
current_user = user.get()
task = celery_app.signature(
"calculate_backtesting",
kwargs={
"actual_currency": request_model.actual_currency,
"bet_size": request_model.bet_size,
"per_instrument_gross_limit": request_model.per_instrument_gross_limit,
"total_gross_limit": request_model.total_gross_limit,
"nop_limit": request_model.nop_limit,
"account_for_dividends": request_model.account_for_dividends,
"trade_fill_price": request_model.trade_fill_price,
"execution_cost_bps": request_model.execution_cost_bps,
},
queue="alerts_default",
routing_key="alerts_default",
headers=create_task_headers(session.session_id),
)
task_id = str(uuid.uuid4())
task_scheduled_timestamp = time.time()
save_task_ws_meta_info(
task_id,
start_time=time.time(),
)
session.add_action(task_id, task_scheduled_timestamp)
session_manager_singleton.save(current_user.email, session)
soft_time_limit = 10 * 60
task.apply_async(soft_time_limit=soft_time_limit, time_limit=soft_time_limit + 20, task_id=task_id)
return {"task_id": task_id}