Chuyên gia tính toán, định lượng và các chuyên gia tài chính toán học khác sử dụng Excel rất nhiều. Họ biết rằng sử dụng Excel để lập mô hình phức tạp không phải là một phương pháp hay, nhưng họ vẫn tiếp tục sử dụng nó
Excel tệ vì nó dễ bị lỗi. Các số được nhập thủ công vào các ô nhỏ trong trang tính lớn. Các công thức có dấu ngoặc đơn lồng nhau và tham chiếu đến các ô khác theo địa chỉ, khiến chúng khó hiểu. Sổ làm việc khó so sánh với nhau và không lý tưởng để kiểm soát phiên bản
Bất chấp tất cả những điều đó, các chuyên gia tính toán vẫn trung thành với Excel. Một số cố gắng giới thiệu Python hoặc bất kỳ ngôn ngữ lập trình nào họ thích, nhằm mục đích thay thế Excel bằng nó. Tuy nhiên, trong hầu hết các trường hợp, những sáng kiến như vậy đều thất bại vì người dùng quá yêu thích Excel và không khám phá nhiều, họ nghĩ rằng Python không phù hợp với công việc của họ.
Sự phổ biến của Excel thường được cho là do nó phổ biến và dễ học. Nhưng chúng tôi muốn nghĩ sâu hơn ở đây, vì lý do modelx ra đời là để mang những ưu điểm của Excel vào Python. Điều gì khiến mọi người cảm thấy thoải mái khi sử dụng Excel hơn Python?
Python chạy, Excel ở lại
Một chương trình Python chạy. Nó chạy từ đầu tệp script cho đến cuối tệp. Trước khi nó chạy, nó chỉ là một tệp văn bản. Chương trình chỉ tồn tại trong một khoảng thời gian ngắn khi đang chạy và khi kết thúc, chương trình sẽ biến mất và quay trở lại tệp văn bản
Ngược lại, Excel không chạy. nó thậm chí không có nút "Chạy". Nó vẫn tồn tại. nó tĩnh, theo cách mà nó luôn giữ kết quả của các công thức của bạn
Cái nào giúp bạn an tâm hơn, một thứ phải chạy để tồn tại và thực hiện yêu cầu của bạn, hay một thứ đứng yên và luôn nắm giữ kết quả cho bạn?
Vòng lặp hoặc đệ quy
Làm cách nào để tính giá trị hiện tại của dòng tiền trong Python?
pv = 0
for i in range[10]:
pv += cashflow[i] / [1 + 0.5]**[i + 1]
Hoặc nếu bạn thiên về Pythonic hơn, thì mã của bạn sẽ giống như
pv = sum[cashflow[i] / [1 + 0.5]**[i + 1] for i in range[10]]
Dù bằng cách nào, cùng một logic được lặp lại và các giá trị trung gian, chẳng hạn như pv
ở i=5
hoặc cashflow[i] / [1 + 0.5]**[i + 1]
, không được ghi nhớ ở cuối vòng lặp
Bây giờ, hãy xem bạn sẽ làm điều đó như thế nào trong Excel
Như bạn thấy ở bên trái, Excel sử dụng đệ quy thay vì vòng lặp, để lặp lại cùng một công thức, do đó, có sẵn pv
cho tất cả các i
. Bên phải là một cách khác để lấy giá trị hiện tại. Trong trường hợp này, cashflow[i] / [1 + 0.5]**[i + 1]
cho tất cả các i
được giữ nguyên. Excel ghi nhớ và trình bày các giá trị trung gian được sử dụng để thu được kết quả cuối cùng. Excel cho phép bạn kiểm tra các giá trị trung gian và theo dõi các phụ thuộc của công thức, điều này cho phép bạn cảm thấy thoải mái hơn với độ chính xác của kết quả
Khớp nối công thức-giá trị
Trong Excel, một công thức và giá trị của nó nằm trong cùng một ô. Chúng luôn đi đôi với nhau. Miễn là Excel ở chế độ tính toán tự động, bạn chắc chắn rằng giá trị luôn được cập nhật và mọi cập nhật về công thức đều được phản ánh
Trong Python, một đoạn mã và kết quả của nó được tách biệt. Trong trường hợp của ví dụ trên, kết quả được lưu trữ trong biến pv
. pv
và mã của nó, ví dụ,
pv = sum[cashflow[i] / [1 + 0.5]**[i + 1] for i in range[10]]
1, tồn tại riêng biệt. Và ngay cả khi mã được cập nhật, pv
vẫn giữ giá trị cũ. Ví dụ: bạn cần cập nhật rõ ràng pv
bằng cách chạy lại toàn bộ tập lệnhLối ra một lần
Một chương trình python có một điểm vào và một điểm thoát. Python diễn giải một tệp script từ đầu tệp đến cuối. Thông thường, một phần của toàn bộ chương trình không chạy riêng lẻ nếu không có ngữ cảnh
Mặt khác, một tệp Excel không có điểm vào và điểm thoát rõ ràng, bởi vì nó không “chạy”. Vì vậy bạn không cần quan tâm đến thứ tự tính toán. Bạn không cần phải suy nghĩ xem nên đánh giá công thức nào trước công thức nào. Excel giải quyết đơn đặt hàng cho bạn. Nếu thứ tự không hợp lệ, Excel sẽ phát hiện tham chiếu theo chu kỳ
hướng đối tượng
Excel được hướng đối tượng ra khỏi hộp. Bạn thậm chí không nhận thấy rằng mình đang xây dựng một mô hình theo cách hướng đối tượng. Bạn không cần phải tự xác định các lớp và phương thức vì các đối tượng, chẳng hạn như sổ làm việc, trang tính và phạm vi đã được Excel cung cấp sẵn để bạn bắt đầu xác định công thức. Điều này cho phép bạn chia toàn bộ logic thành các công thức nhỏ. Thậm chí không nhận thấy, bạn làm theo cách tốt nhất để chia logic lớn thành các thành phần
Trong Python, bạn có thể sẽ viết hàng trăm dòng mã trong một tệp script mà không xác định bất kỳ lớp hoặc hàm nào. Thật khó để bắt đầu từ việc xác định lớp và chức năng từ đầu trên một tệp văn bản thuần túy nếu không có kinh nghiệm phù hợp. Ngay cả khi bạn có khả năng làm, rất có thể, đồng nghiệp trong nhóm của bạn không
thiết kế người mẫu
modelx được phát minh để giải quyết những vấn đề đó. Các mô hình trong modelx hoạt động giống như sổ làm việc Excel. Mô hình modelx không chạy. Nó ở lại. Nó giữ tất cả các giá trị trung gian để bạn có thể theo dõi các công thức và giá trị. Các công thức và giá trị của chúng được kết hợp. Các mô hình không có điểm vào hoặc điểm kết thúc cụ thể. Các mô hình hướng đối tượng. Bạn không cần phải viết lớp hoặc phương thức. Đây là lý do tại sao câu cửa miệng của modelx là “Sử dụng Python như một bảng tính. ”