"""Reproduce declared scenarios. No live quotes or tax calculations.""" import json, csv, hashlib, sys from decimal import Decimal as D from pathlib import Path base=Path(sys.argv[1] if len(sys.argv)>1 else '.') hashes=json.loads((base/'input-sha256.json').read_text()) for name,digest in hashes.items(): if hashlib.sha256((base/name).read_bytes()).hexdigest()!=digest: raise ValueError('Input checksum mismatch: '+name) x=json.loads((base/'inputs.json').read_text()) fees=[] for target in x['fee_targets_ltc']: for size in x['charged_vbytes']: rate=D(target)*D(100000000)/D(size) fees.append({'target_ltc_per_block':target,'charged_vbytes':size,'litoshis_per_vbyte':str(rate)}) inventory=D('0');ledger=[] for entry in x['ledger']: inventory+=D(entry['ltc_delta']) ledger.append({**entry,'inventory_after_ltc':str(inventory)}) result={'kind':'synthetic scenarios, not observations or tax returns', 'fee_rows':fees, 'ledger':ledger,'ending_ltc':str(inventory),'fee_ltc':str(-sum((D(e['ltc_delta']) for e in x['ledger'] if e['kind']=='network_fee'),D(0)))} print(json.dumps(result,indent=2))