
量化策略开发,高质量社群,交易思路分享等相关内容
『正文』
ˇ
最近比较火的OpenAI-ChatGPT,太有意思了。尝试让它写了几个策略,您别说,还真是有模有样。我们来看看吧。
模型一:均值回归模型

源码:
import numpy as npimport pandas as pdfrom sklearn import linear_modelimport numpy as npimport pandas as pdfrom sklearn import linear_model
capital = 100000
trade_qty = 1000
trade_fee = 0.003
time_span = 10
defcalc_profit(open_price, close_price):return (close_price - open_price) * trade_qty - trade_qty * trade_fee * 2
defcalc_linear_model(df): X = np.array(df['open']).reshape(-1, 1) y = np.array(df['close']).reshape(-1, 1) model = linear_model.LinearRegression() model.fit(X, y)return model.coef_[0][0], model.intercept_[0]
df = pd.read_csv('trade_data.csv')
slope, intercept = calc_linear_model(df)
capital_list = []result_list = []
for i in range(time_span, len(df)): open_price = df.iloc[i-time_span]['open'] close_price = df.iloc[i]['close'] profit = calc_profit(open_price, close_price)
capital += profit
capital_list.append(capital) result_list.append(profit)
print('Final capital:', capital)
模型二:一个均线策略

源码:
import numpy as npimport pandas as pdimport matplotlib.pyplot as plt
stock_data = pd.read_csv('stock_data.csv')
ma_5 = stock_data['close'].rolling(5).mean()ma_10 = stock_data['close'].rolling(10).mean()
plt.plot(stock_data['date'], ma_5)plt.plot(stock_data['date'], ma_10)plt.title('Moving Average')plt.xlabel('Date')plt.ylabel('Price')plt.legend(['MA5', 'MA10'])
deftrade(stock_data, ma_5, ma_10): signals = np.zeros(len(stock_data))for i in range(len(stock_data)):if ma_5[i] > ma_10[i]: signals[i] = 1elif ma_5[i] < ma_10[i]: signals[i] = -1return signals
signals = trade(stock_data, ma_5, ma_10)
position = 0profit = 0
for i in range(len(signals)):if signals[i] == 1: position += stock_data['close'][i]elif signals[i] == -1: profit += stock_data['close'][i] - position position = 0print('Final profit:', profit)
模型三:唐奇安通道+MACD

源码:
import numpy as npimport talib
defDonchian(close, n): high = talib.MAX(close, n) low = talib.MIN(close, n)return high, low
defMACD(close, n_fast, n_slow, n_signal): macd, signal, hist = talib.MACD(close, n_fast, n_slow, n_signal)return macd, signal, hist
deftrade(open, close, high, low, macd, signal, hist): position = 0 signal = 0
donchian_high, donchian_low = Donchian(close, 20)
macd, signal, hist = MACD(close, 12, 26, 9)
if position == 0:if macd[-1] > signal[-1] and hist[-1] > 0and close[-1] > donchian_high[-1]: signal = 1elif macd[-1] < signal[-1] and hist[-1] < 0and close[-1] < donchian_low[-1]: signal = -1else:if position > 0and close[-1] < donchian_low[-1]:
模型四:机器学习策略

源码:
编写期货收益率预测模型的过程可能比较复杂,因为这类模型通常需要考虑许多因素。但是,以下是一个简单的Python程序,它使用Scikit-learn库来构建并训练一个期货收益率预测模型:
from sklearn import linear_modelfrom sklearn import metrics
X = ... y = ...
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)
model = linear_model.LinearRegression()model.fit(X_train, y_train)
y_pred = model.predict(X_test)print(metrics.mean_squared_error(y_test, y_pred))
这个程序使用线性回归来构建模型,并用均方误差(MSE)来评估模型的性能。在实际应用中,您可能需要使用更复杂的模型,并使用多种指标来评估模型的性能。此外,您还需要准备足够的数据来训练模型,并确保数据的质量和准确性。
哈哈哈,太有意思了铁子们,我们和它聊聊天。


源码:
import matplotlib.pyplot as plt
plt.figure(figsize=(4, 4))
plt.plot([1, 1, 2, 2, 3, 3, 4], [1, 2, 2, 3, 3, 2, 2], 'k')plt.plot([1.5, 1.5, 2.5, 2.5], [1, 2, 2, 1], 'k')plt.plot([2, 2], [1.5, 2.5], 'k')
plt.fill([1.5, 1.5, 2.5, 2.5], [1, 2, 2, 1], 'b')plt.fill([2, 2], [1.5, 2.5], 'b')
plt.plot([1.25, 1.75], [1.75, 1.75], 'k')plt.plot([2.25, 2.75], [1.75, 1.75], 'k')
plt.show()

哈哈哈哈,这也不像松鼠啊。
OK,还有没有更好玩的对话,评论区留言哈。