analyze_cost_flow.py 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import pandas as pd
  2. df = pd.read_csv('cyb50_optimized_trades_2017-06-01_2026-01-19.csv')
  3. print("资金流动与累计盈亏差异分析:")
  4. print("=" * 80)
  5. # 分析前5笔交易的资金流动
  6. print("前5笔交易的详细资金流动:")
  7. for i in range(min(5, len(df))):
  8. row = df.iloc[i]
  9. entry_capital = row['开仓时总资金']
  10. exit_capital = row['平仓时总资金']
  11. recorded_pnl = row['盈亏金额']
  12. # 计算成本
  13. entry_cost = row['开仓市值'] * 0.0004
  14. exit_cost = row['平仓市值'] * 0.0004
  15. print(f"交易#{i+1}:")
  16. print(f" 开仓资金: {entry_capital:,.2f}元")
  17. print(f" 平仓资金: {exit_capital:,.2f}元")
  18. print(f" 资金变化: {exit_capital - entry_capital:,.2f}元")
  19. print(f" 记录盈亏: {recorded_pnl:,.2f}元")
  20. print(f" 开仓成本: {entry_cost:.2f}元")
  21. print(f" 卖出成本: {exit_cost:.2f}元")
  22. print(f" 总成本: {entry_cost + exit_cost:.2f}元")
  23. print()
  24. # 计算累计成本
  25. total_entry_cost = (df['开仓市值'] * 0.0004).sum()
  26. total_exit_cost = (df['平仓市值'] * 0.0004).sum()
  27. total_cost = total_entry_cost + total_exit_cost
  28. print(f"全市场累计成本:")
  29. print(f"累计开仓成本: {total_entry_cost:,.2f}元")
  30. print(f"累计卖出成本: {total_exit_cost:,.2f}元")
  31. print(f"累计总成本: {total_cost:,.2f}元")
  32. print(f"\n盈亏与资金关系:")
  33. print(f"累计盈亏: {df['盈亏金额'].sum():,.2f}元")
  34. print(f"累计成本: {total_cost:,.2f}元")
  35. print(f"实际资金变化: {df.iloc[-1]['平仓时总资金'] - df.iloc[0]['开仓时总资金']:,.2f}元")
  36. # 问题:盈亏应该是扣除成本后的,但资金流动可能没有正确反映
  37. print(f"\n问题分析:")
  38. print(f"如果盈亏计算正确,那么:")
  39. expected_final = df.iloc[0]['开仓时总资金'] + df['盈亏金额'].sum()
  40. print(f"预期最终资金: {expected_final:,.2f}元")
  41. print(f"实际最终资金: {df.iloc[-1]['平仓时总资金']:,.2f}元")
  42. print(f"差异: {expected_final - df.iloc[-1]['平仓时总资金']:,.2f}元")
  43. print(f"\n这个差异就是开仓成本的重复扣除问题!")
  44. print(f"每笔交易的开仓成本在资金流中扣除了,但在盈亏计算中可能又扣除了")