This page was generated from docs/source/examples/train_and_evaluate.ipynb.
Train and Evaluate¶
[2]:
from tensorforce.agents import Agent
from tensorforce.environments import Environment
from tensortrade.environments import TradingEnvironment
from tensortrade.exchanges.simulated import FBMExchange
from tensortrade.features.scalers import MinMaxNormalizer
from tensortrade.features.stationarity import FractionalDifference
from tensortrade.features import FeaturePipeline
from tensortrade.rewards import SimpleProfit
from tensortrade.actions import DiscreteActions
from tensortrade.strategies import TensorforceTradingStrategy
normalize = MinMaxNormalizer(inplace=True)
difference = FractionalDifference(difference_order=0.6,
inplace=True)
feature_pipeline = FeaturePipeline(steps=[normalize, difference])
reward_scheme = SimpleProfit()
action_scheme = DiscreteActions(n_actions=20, instrument='ETH/BTC')
exchange = FBMExchange(base_instrument='BTC',
timeframe='1h',
should_pretransform_obs=True)
environment = TradingEnvironment(exchange=exchange,
action_scheme=action_scheme,
reward_scheme=reward_scheme,
feature_pipeline=feature_pipeline)
agent_spec = {
"type": "ppo_agent",
"step_optimizer": {
"type": "adam",
"learning_rate": 1e-4
},
"discount": 0.99,
"likelihood_ratio_clipping": 0.2,
}
network_spec = [
dict(type='dense', size=64, activation="tanh"),
dict(type='dense', size=32, activation="tanh")
]
strategy = TensorforceTradingStrategy(environment=environment, agent_spec=agent_spec, network_spec=network_spec)
performance = strategy.run(episodes=1, testing=True)
performance[-5:]
WARNING: The TensorFlow contrib module will not be included in TensorFlow 2.0.
For more information, please see:
* https://github.com/tensorflow/community/blob/master/rfcs/20180907-contrib-sunset.md
* https://github.com/tensorflow/addons
If you depend on functionality not listed there, please file an issue.
100%|██████████| 1/1 [00:08<00:00, 8.94s/it]
Finished running strategy.
Total episodes: 1 (1666 timesteps).
Average reward: 1150.3350630537668.
[2]:
balance | net_worth | |
---|---|---|
1661 | 9999.829222 | 10000.187790 |
1662 | 9997.354264 | 9998.232905 |
1663 | 9994.879919 | 9995.990028 |
1664 | 9991.169320 | 9992.191048 |
1665 | 9991.535304 | 9992.226192 |
[4]:
from tensortrade.environments import TradingEnvironment
from tensortrade.exchanges.simulated import FBMExchange
from tensortrade.features.scalers import MinMaxNormalizer
from tensortrade.features.stationarity import FractionalDifference
from tensortrade.features import FeaturePipeline
from tensortrade.rewards import SimpleProfit
from tensortrade.actions import DiscreteActions
from tensortrade.strategies import StableBaselinesTradingStrategy
normalize = MinMaxNormalizer(inplace=True)
difference = FractionalDifference(difference_order=0.6,
inplace=True)
feature_pipeline = FeaturePipeline(steps=[normalize, difference])
reward_scheme = SimpleProfit()
action_scheme = DiscreteActions(n_actions=20, instrument='ETH/BTC')
exchange = FBMExchange(base_instrument='BTC',
timeframe='1h',
should_pretransform_obs=True)
environment = TradingEnvironment(exchange=exchange,
action_scheme=action_scheme,
reward_scheme=reward_scheme,
feature_pipeline=feature_pipeline)
strategy = StableBaselinesTradingStrategy(environment=environment)
performance = strategy.run(episodes=10)
performance[-5:]
Finished running strategy.
Total episodes: 10 (16660 timesteps).
Average reward: 1.1827063286237227.
[4]:
balance | net_worth | |
---|---|---|
1660 | 11226.614898 | 11227.750341 |
1661 | 11226.686075 | 11227.725535 |
1662 | 11226.721664 | 11227.658857 |
1663 | 11226.739458 | 11227.908940 |
1664 | 11223.960840 | 11225.188709 |