import React, { useState, useEffect } from 'react'; import { backtestAPI } from '../../api/client'; interface Strategy { name: string; description: string; } interface BacktestFormProps { onSuccess: (result: any) => void; } const BacktestForm: React.FC = ({ onSuccess }) => { const [strategies, setStrategies] = useState([]); const [loading, setLoading] = useState(false); const [formData, setFormData] = useState({ name: '', strategy_name: 'multi_factor', start_date: '2020-01-01', end_date: '2023-12-31', initial_capital: 10000000, commission_rate: 0.0015, rebalance_frequency: 'monthly', count: 20, }); useEffect(() => { loadStrategies(); }, []); const loadStrategies = async () => { try { const response = await backtestAPI.strategies(); setStrategies(response.data.strategies); } catch (error) { console.error('전략 목록 로드 오류:', error); } }; const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); setLoading(true); try { const config = { name: formData.name, strategy_name: formData.strategy_name, start_date: formData.start_date, end_date: formData.end_date, initial_capital: formData.initial_capital, commission_rate: formData.commission_rate, rebalance_frequency: formData.rebalance_frequency, strategy_config: { count: formData.count, }, }; const response = await backtestAPI.run(config); onSuccess(response.data); } catch (error: any) { alert(`백테스트 실행 오류: ${error.response?.data?.detail || error.message}`); } finally { setLoading(false); } }; const handleChange = (e: React.ChangeEvent) => { const { name, value } = e.target; setFormData(prev => ({ ...prev, [name]: value, })); }; return (

백테스트 실행

{/* 백테스트 이름 */}
{/* 전략 선택 */}
{/* 기간 설정 */}
{/* 초기 자본 */}
{/* 리밸런싱 주기 */}
{/* 종목 수 */}
{/* 제출 버튼 */}
); }; export default BacktestForm;