"""显式证券主表与配置契约;示例配置不冒充任何产品接口。""" import json from datetime import date master = {'US:ALFA': ('US', 'USD'), 'US:BETA': ('US', 'USD'), 'HK:00005': ('HK', 'HKD'), 'CN:600000': ('CN', 'CNY')} sources = {'fixture_us': {'US'}, 'fixture_hk': {'HK'}, 'fixture_cn': {'CN'}} def validate(config): errors = [] if not config['symbols']: errors.append('symbols_empty') try: if date.fromisoformat(config['start']) >= date.fromisoformat(config['end']): errors.append('date_order') except ValueError: errors.append('date_format') if config['cash'] <= 0: errors.append('cash') if config['frequency'] != '1d': errors.append('frequency') for symbol in config['symbols']: if symbol not in master: errors.append('unknown_symbol:' + symbol) continue market, currency = master[symbol] if market != config['engine']: errors.append('engine:' + symbol) if market not in sources.get(config['source'], set()): errors.append('source:' + symbol) if currency != config['currency']: errors.append('currency:' + symbol) return errors base = {'symbols': ['US:ALFA', 'US:BETA'], 'engine': 'US', 'currency': 'USD', 'source': 'fixture_us', 'start': '2026-01-01', 'end': '2026-06-30', 'cash': 10000, 'frequency': '1d'} assert validate(base) == [] mixed = dict(base, symbols=['US:ALFA', 'HK:00005']) assert validate(mixed) == ['engine:HK:00005', 'source:HK:00005', 'currency:HK:00005'] assert validate(dict(base, cash=0)) == ['cash'] assert validate(dict(base, start='2026-07-01')) == ['date_order'] assert validate(dict(base, symbols=['ALFA'])) == ['unknown_symbol:ALFA'] assert validate(dict(base, symbols=[])) == ['symbols_empty'] print(json.dumps({'valid': validate(base), 'mixed': validate(mixed), 'empty_symbols': validate(dict(base, symbols=[])), 'zero_cash': validate(dict(base, cash=0)), 'unknown': validate(dict(base, symbols=['ALFA']))}))