robcarver17 / pysystemtrade

Systematic Trading in python
GNU General Public License v3.0
2.57k stars 816 forks source link

Strategy Report error after trades #290

Closed rorymac closed 3 years ago

rorymac commented 3 years ago

The report works perfectly on a separate server with only the backtest on it. There are no positions recorded in the database.

however on a server that has had trades and has positions recorded in the database the following error occurs. All the trades have been added manually.

( I had not tried to run strategy report on that server previously)

latest version from github:

rorym@mintservertwo:~/pysystemtrade$ git rev-parse HEAD
55027f9f6c5c5df62243286af1f6b6802749910b

Running from . interactive_diagnostics :

10: Roll report
11: P&L report
12: Status report
13: Trade report
14: Reconcile report
15: Strategy report
16: Risk report

Your choice? <RETURN for Back> 15
0: live_300
1: ALL

Your choice? <RETURN for ALL> 0
Choose the backtest to load:

0: 20210202_102858
1: 20210202_113713
2: 20210203_092201
3: 20210203_093914
4: 20210204_084028
5: 20210204_121111
6: 20210204_173708
7: 20210205_155959
8: 20210208_163318
9: 20210208_235057

Your choice? <RETURN for 20210208_235057> 9
1: Email or 2: print? <RETURN for Print> 
2021-02-09:0954.00 {'type': ''}  Running report Strategy report sysproduction.diagnostic.strategies.strategy_report console {'strategy_name': 'live_300', 'timestamp': '20210208_235057'}
Library created, but couldn't enable sharding: no such command: 'enablesharding', full error: {'ok': 0.0, 'errmsg': "no such command: 'enablesharding'", 'code': 59, 'codeName': 'CommandNotFound'}. This is OK if you're not 'admin'
Library created, but couldn't enable sharding: no such command: 'enablesharding', full error: {'ok': 0.0, 'errmsg': "no such command: 'enablesharding'", 'code': 59, 'codeName': 'CommandNotFound'}. This is OK if you're not 'admin'
Library created, but couldn't enable sharding: no such command: 'enablesharding', full error: {'ok': 0.0, 'errmsg': "no such command: 'enablesharding'", 'code': 59, 'codeName': 'CommandNotFound'}. This is OK if you're not 'admin'
Calculating capped forecast for BOBL ewmac2_8
Calculating raw forecast BOBL for ewmac2_8
Calculating daily prices for BOBL
Calculating capped forecast for CORN ewmac2_8
Calculating raw forecast CORN for ewmac2_8
Calculating daily prices for CORN
Calculating capped forecast for EDOLLAR ewmac2_8
Calculating raw forecast EDOLLAR for ewmac2_8
Calculating daily prices for EDOLLAR
Calculating capped forecast for US2 ewmac2_8
Calculating raw forecast US2 for ewmac2_8
Calculating daily prices for US2
Calculating capped forecast for V2X ewmac2_8
Calculating raw forecast V2X for ewmac2_8
Calculating daily prices for V2X
Calculating capped forecast for EDOLLAR ewmac4_16
Calculating raw forecast EDOLLAR for ewmac4_16
Calculating daily prices for EDOLLAR
Calculating actual buffers for position for BOBL
Calculating pandl for portfolio
Calculating pandl for instrument for BOBL
Calculating buffered positions
Calculating pandl for instrument for CAC
Calculating buffered positions
Calculating pandl for instrument for COPPER
Calculating buffered positions
Calculating pandl for instrument for CORN
Calculating buffered positions
Calculating pandl for instrument for CRUDE_W
Calculating buffered positions
Calculating pandl for instrument for EDOLLAR
Calculating buffered positions
Calculating pandl for instrument for EUROSTX
Calculating buffered positions
Calculating pandl for instrument for GAS_US
Calculating buffered positions
Calculating pandl for instrument for GBP
Calculating buffered positions
Calculating pandl for instrument for LEANHOG
Calculating buffered positions
Calculating pandl for instrument for MXP
Calculating buffered positions
Calculating pandl for instrument for PLAT
Calculating buffered positions
Calculating pandl for instrument for US2
Calculating buffered positions
Calculating pandl for instrument for V2X
Calculating buffered positions
Calculating pandl for instrument for VIX
Calculating buffered positions
Calculating actual buffers for position for CAC
Calculating actual buffers for position for COPPER
Calculating actual buffers for position for CORN
Calculating actual buffers for position for CRUDE_W
Calculating actual buffers for position for EDOLLAR
Calculating actual buffers for position for EUROSTX
Calculating actual buffers for position for GAS_US
Calculating actual buffers for position for GBP
Calculating actual buffers for position for LEANHOG
Calculating actual buffers for position for MXP
Calculating actual buffers for position for PLAT
Calculating actual buffers for position for US2
Calculating actual buffers for position for V2X
Calculating actual buffers for position for VIX
Traceback (most recent call last):
  File "run.py", line 64, in <module>
    func(*args, **kwargs)
  File "/home/rorym/pysystemtrade/sysproduction/interactive_diagnostics.py", line 64, in interactive_diagnostics
    method_chosen(data)
  File "/home/rorym/pysystemtrade/sysproduction/interactive_diagnostics.py", line 197, in strategy_report
    run_report(report_config, data=data)
  File "/home/rorym/pysystemtrade/sysproduction/diagnostic/reporting.py", line 23, in run_report
    run_report_with_data_blob(report_config, data)
  File "/home/rorym/pysystemtrade/sysproduction/diagnostic/reporting.py", line 37, in run_report_with_data_blob
    report_results = report_function(data, **report_kwargs)
  File "/home/rorym/pysystemtrade/sysproduction/diagnostic/strategies.py", line 35, in strategy_report
    formatted_output = get_strategies_report_output(
  File "/home/rorym/pysystemtrade/sysproduction/diagnostic/strategies.py", line 49, in get_strategies_report_output
    strategy_format_output_list = get_output_for_single_strategy(
  File "/home/rorym/pysystemtrade/sysproduction/diagnostic/strategies.py", line 70, in get_output_for_single_strategy
    strategy_format_output_list = strategy_reporting_function(
  File "/home/rorym/pysystemtrade/sysproduction/strategy_code/report_system_classic.py", line 139, in report_system_classic
    timestamp_positions = get_position_at_timestamp_df_for_instrument_code_list(
  File "/home/rorym/pysystemtrade/sysproduction/strategy_code/report_system_classic.py", line 488, in get_position_at_timestamp_df_for_instrument_code_list
    position_df = pd.DataFrame(
  File "/home/rorym/.local/lib/python3.8/site-packages/pandas/core/frame.py", line 450, in __init__
    arrays, columns = to_arrays(data, columns, dtype=dtype)
  File "/home/rorym/.local/lib/python3.8/site-packages/pandas/core/internals/construction.py", line 487, in to_arrays
    data = [tuple(x) for x in data]
  File "/home/rorym/.local/lib/python3.8/site-packages/pandas/core/internals/construction.py", line 487, in <listcomp>
    data = [tuple(x) for x in data]
TypeError: 'float' object is not iterable
robcarver17 commented 3 years ago

My bad, tested it on an empty position set but not on one that has positions.

Try the last commit

rorymac commented 3 years ago

Perfect, thank you Rob I am closing this.