"""R612:独立标准库合成方法样例,不是实际历史绩效。""" from math import prod params=[0,.02] dev={'DA':[.03,.04,-.02,.01,-.03],'DB':[.03,.02,-.01,.01,-.02]} target={'TA':[.03,-.02,.01,.03,-.01],'TB':[0,0,0,0,0],'TC':None} assert set(dev).isdisjoint(target) def run(series,p): if series is None:return {'status':'missing','trades':None,'score':None} selected=[series[t] for t in range(1,len(series)) if series[t-1]>p] return {'status':'no_trades' if not selected else 'completed','trades':len(selected),'score':prod(1+r for r in selected)-1} chosen=min(params,key=lambda p:(-sum(run(s,p)['score'] for s in dev.values()),p)) result={key:run(s,chosen) for key,s in target.items()} assert chosen==.02 and result['TB']['status']=='no_trades' and result['TC']['score'] is None assert len(result)==len(target) print('chosen_from_dev_only='+str(chosen)+' target='+str(result)) print('overlap=0 target_retuning=0 no_trade_and_missing=distinct')