コード例 #1
0
    def test_best_ranking_dtype_is_int8(self):
        sm = SwarmManager()

        index = ['0', '1', '2', '3', '4', '5']
        ranks = [np.nan, np.nan, np.nan, np.nan, np.nan, np.nan]

        rnk = pd.Series(ranks, index=index)

        r = sm._get_nbest(rnk, nsystems=2)
        self.assertEqual(r.dtype, np.int8)
コード例 #2
0
    def test_best_ranking_full_nans(self):
        sm = SwarmManager()

        index = ['0', '1', '2', '3', '4', '5']
        ranks = [np.nan, np.nan, np.nan, np.nan, np.nan, np.nan]

        rnk = pd.Series(ranks, index=index)

        r = sm._get_nbest(rnk, nsystems=2)

        # Indexes is a string, because these are pd.Series indexes not array int32 index
        self.assertEqual(r['0'], 0)
        self.assertEqual(r['1'], 0)
        self.assertEqual(r['2'], 0)
        self.assertEqual(r['3'], 0)
        self.assertEqual(r['4'], 0)
        self.assertEqual(r['5'], 0)
コード例 #3
0
    def test_best_ranking_negative_and_zeros_filter(self):
        sm = SwarmManager()

        index = ['0', '1', '2', '3', '4', '5']
        ranks = [np.nan, 0, -5, np.nan, 9, np.nan]

        rnk = pd.Series(ranks, index=index)

        r = sm._get_nbest(rnk, nsystems=2)

        # Indexes is a string, because these are pd.Series indexes not array int32 index
        self.assertEqual(r['0'], 0)
        self.assertEqual(r['1'], 0)
        self.assertEqual(r['2'], 0)
        self.assertEqual(r['3'], 0)
        self.assertEqual(r['4'], 1)
        self.assertEqual(r['5'], 0)

        self.assertEqual(r.dtype, np.int8)
コード例 #4
0
            'ignore_eqty_with_negative_ma_slope_period':
            5,  # Slope lookback filter = MA-MA[-slope_lookback] <= 0

            # Ignoring all swarm members when the change of AvgSwarm equity is negative
            'ignore_if_avg_swarm_negative_change':
            True,  # Comment the line to turn off
            'ignore_if_avg_swarm_negative_change_period':
            14,  # AvgSwarm change period
        },
        'rebalance_time_function': SwarmRebalance.every_monday,
        'global_filter_function': SwarmFilter.swingpoint_threshold,
        'global_filter_params': {
            'up_factor': 10.0,
            'down_factor': 10.0,
            'period': 5,
        },
    },
    'costs': {
        'manager': CostsManagerEXOFixed,
        'context': {
            'costs_options': 3.0,
            'costs_futures': 3.0,
        }
    }
}

swarm_manager = SwarmManager(STRATEGY_CONTEXT)
swarm_manager.run_swarm()
picked_swarm = swarm_manager.pick()
picked_swarm
from backtester.swarms.manager import SwarmManager
from backtester.exoinfo import EXOInfo

import pandas as pd
import numpy as np
import scipy

import glob
from pandas.tseries.offsets import *

for file in glob.glob("./temp_swarms/*.swm"):

    # set file name here

    # Real swarm from .swm
    df = SwarmManager.load(file)
    df = df.swarm

    print('calculating portfolio for ---', file)
    # ## Systems overall performance estimation

    # In[6]:

    temp_l = []

    for strat in df.columns:

        input_strategy_data = df[strat]  # This data is used in metrics calc

        price_change = input_strategy_data.diff()
        max_dd = (input_strategy_data -
コード例 #6
0
from strategies.strategy_swingpoint import StrategySwingPoint
from strategies.strategy_macross_with_trail import StrategyMACrossTrail
try:
    from .settings import *
except SystemError:
    from settings import *

if __name__ == '__main__':
    for f in os.listdir(sys.argv[1]):
        if 'strategy_' not in f:
            continue
        exo_name = os.path.join(sys.argv[1], f)
        print("Processing " + exo_name)
        for name, swarm_context in BATCH_CONTEXT.items():
            print("Running swarm " + name)
            strategy_context = STRATEGY_CONTEXT_COMMON.copy()

            strategy_context.update(swarm_context)
            strategy_context['strategy']['exo_name'] = exo_name
            strategy_context['strategy']['suffix'] = name

            smgr = SwarmManager(strategy_context)
            smgr.run_swarm()
            smgr.pick()

            # Saving results to swarms directory
            smgr.save('./swarms/')

    print('Done')