VeighNa量化社区
你的开源社区量化交易平台 | vn.py | vnpy
Member
avatar
加入于:
帖子: 11
声望: 0

raceback (most recent call last):
File "C:\veighna_studio\lib\threading.py", line 1016, in _bootstrap_inner
self.run()
File "C:\veighna_studio\lib\threading.py", line 953, in run
self._target(self._args, **self._kwargs)
File "C:\veighna_studio\lib\site-packages\vnpy_ctabacktester\engine.py", line 203, in run_backtesting
self.result_df = engine.calculate_result()
File "C:\veighna_studio\lib\site-packages\vnpy_ctastrategy\backtesting.py", line 270, in calculate_result
daily_result.calculate_pnl(
File "C:\veighna_studio\lib\site-packages\vnpy_ctastrategy\backtesting.py", line 1064, in calculate_pnl
turnover: float = trade.volume
size * trade.price
OverflowError: int too large to convert to float

Member
avatar
加入于:
帖子: 5282
声望: 318

你的结果超出了浮点数能够表示的范围
可以试着自己用decimal处理一下

Member
avatar
加入于:
帖子: 11
声望: 0

xiaohe wrote:

你的结果超出了浮点数能够表示的范围
可以试着自己用decimal处理一下
Traceback (most recent call last):
File "C:\veighna_studio\lib\threading.py", line 1016, in _bootstrap_inner
self.run()
File "C:\veighna_studio\lib\threading.py", line 953, in run
self._target(*self._args, **self._kwargs)
File "C:\veighna_studio\lib\site-packages\vnpy_ctabacktester\engine.py", line 203, in run_backtesting
self.result_df = engine.calculate_result()
File "C:\veighna_studio\lib\site-packages\vnpy_ctastrategy\backtesting.py", line 291, in calculate_result
self.daily_df = DataFrame.from_dict(results).set_index("date")
File "C:\veighna_studio\lib\site-packages\pandas\core\frame.py", line 1905, in from_dict
return cls(data, index=index, columns=columns, dtype=dtype)
File "C:\veighna_studio\lib\site-packages\pandas\core\frame.py", line 767, in init
mgr = dict_to_mgr(data, index, columns, dtype=dtype, copy=copy, typ=manager)
File "C:\veighna_studio\lib\site-packages\pandas\core\internals\construction.py", line 503, in dict_to_mgr
return arrays_to_mgr(arrays, columns, index, dtype=dtype, typ=typ, consolidate=copy)
File "C:\veighna_studio\lib\site-packages\pandas\core\internals\construction.py", line 119, in arrays_to_mgr
arrays, refs = _homogenize(arrays, index, dtype)
File "C:\veighna_studio\lib\site-packages\pandas\core\internals\construction.py", line 629, in _homogenize
val = sanitize_array(val, index, dtype=dtype, copy=False)
File "C:\veighna_studio\lib\site-packages\pandas\core\construction.py", line 651, in sanitize_array
subarr = maybe_convert_platform(data)
File "C:\veighna_studio\lib\site-packages\pandas\core\dtypes\cast.py", line 139, in maybe_convert_platform
arr = lib.maybe_convert_objects(arr)
File "lib.pyx", line 2596, in pandas._libs.lib.maybe_convert_objects
OverflowError: int too large to convert to float

Member
avatar
加入于:
帖子: 11
声望: 0

hutao wrote:

xiaohe wrote:

你的结果超出了浮点数能够表示的范围
可以试着自己用decimal处理一下
Traceback (most recent call last):
File "C:\veighna_studio\lib\threading.py", line 1016, in _bootstrap_inner
self.run()

虽然处理了 但是这个在装df文件的时候还是太大

File "C:\veighna_studio\lib\threading.py", line 953, in run
self._target(*self._args, **self._kwargs)
File "C:\veighna_studio\lib\site-packages\vnpy_ctabacktester\engine.py", line 203, in run_backtesting
self.result_df = engine.calculate_result()
File "C:\veighna_studio\lib\site-packages\vnpy_ctastrategy\backtesting.py", line 291, in calculate_result
self.daily_df = DataFrame.from_dict(results).set_index("date")
File "C:\veighna_studio\lib\site-packages\pandas\core\frame.py", line 1905, in from_dict
return cls(data, index=index, columns=columns, dtype=dtype)
File "C:\veighna_studio\lib\site-packages\pandas\core\frame.py", line 767, in init
mgr = dict_to_mgr(data, index, columns, dtype=dtype, copy=copy, typ=manager)
File "C:\veighna_studio\lib\site-packages\pandas\core\internals\construction.py", line 503, in dict_to_mgr
return arrays_to_mgr(arrays, columns, index, dtype=dtype, typ=typ, consolidate=copy)
File "C:\veighna_studio\lib\site-packages\pandas\core\internals\construction.py", line 119, in arrays_to_mgr
arrays, refs = _homogenize(arrays, index, dtype)
File "C:\veighna_studio\lib\site-packages\pandas\core\internals\construction.py", line 629, in _homogenize
val = sanitize_array(val, index, dtype=dtype, copy=False)
File "C:\veighna_studio\lib\site-packages\pandas\core\construction.py", line 651, in sanitize_array
subarr = maybe_convert_platform(data)
File "C:\veighna_studio\lib\site-packages\pandas\core\dtypes\cast.py", line 139, in maybe_convert_platform
arr = lib.maybe_convert_objects(arr)
File "lib.pyx", line 2596, in pandas._libs.lib.maybe_convert_objects
OverflowError: int too large to convert to float

Member
avatar
加入于:
帖子: 1784
声望: 134

这是浮点数转换溢出了,不是内存不够了

Member
avatar
加入于:
帖子: 11
声望: 0

MTF wrote:

这是浮点数转换溢出了,不是内存不够了
我用的数据是记录下来的tick 应该不至于回测的时候 能溢出啊

© 2015-2022 上海韦纳软件科技有限公司
备案服务号:沪ICP备18006526号

沪公网安备 31011502017034号

【用户协议】
【隐私政策】
【免责条款】